<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.7 on Fri, 10 May 2002 06:35:46 GMT -->
<rss version="0.92">
	<channel>
		<title>Andy Todd: Software</title>
		<link>http://radio.weblogs.com/0100917/categories/software/</link>
		<description>Andrew wrestles with source code</description>
		<language>en-gb</language>
		<copyright>Copyright 2002 Andy Todd</copyright>
		<lastBuildDate>Fri, 10 May 2002 06:35:46 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss092</docs>
		<managingEditor>andy47@halfcooked.com</managingEditor>
		<webMaster>andy47@halfcooked.com</webMaster>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<item>
			<description>&lt;P&gt;&lt;!--StartFragment --&gt;&lt;STRONG&gt;Hot Off the Presses&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;PythonCard is a GUI construction kit for building cross-platform desktop&lt;BR&gt;applications on Windows, Mac OS X, and Linux.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Release 0.6.6 includes 30 sample applications, new additions include a&lt;BR&gt;source code editor and a sample for creating flat file databases. This&lt;BR&gt;release also supports the new wxPython 2.3.3 preview for Mac OS X.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;All the information you need about PythonCard can be found on the project&lt;BR&gt;web page at:&lt;BR&gt;&lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;&lt;a href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;http://pythoncard.sourceforge.net/&lt;/a&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;The installation instructions and walkthroughs are available on the main&lt;BR&gt;documentation page:&lt;BR&gt;&lt;A href=&quot;http://pythoncard.sourceforge.net/documentation.html&quot;&gt;&lt;a href=&quot;http://pythoncard.sourceforge.net/documentation.html&quot;&gt;http://pythoncard.sourceforge.net/documentation.html&lt;/a&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;You can download the latest release at:&lt;BR&gt;&lt;A href=&quot;http://sourceforge.net/project/showfiles.php?group_id=19015&quot;&gt;&lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=19015&quot;&gt;http://sourceforge.net/project/showfiles.php?group_id=19015&lt;/a&gt;&lt;BR&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;For a list of some of the samples that have been built with PythonCard and&lt;BR&gt;screenshots of them in action go to:&lt;BR&gt;&lt;A href=&quot;http://pythoncard.sourceforge.net/samples.html&quot;&gt;&lt;a href=&quot;http://pythoncard.sourceforge.net/samples.html&quot;&gt;http://pythoncard.sourceforge.net/samples.html&lt;/a&gt;&lt;BR&gt;&lt;/A&gt;&lt;BR&gt;A description of each sample is included in the readme.txt file in each&lt;BR&gt;sample directory.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;The kind people at SourceForge host the project:&lt;BR&gt;&lt;A href=&quot;http://sourceforge.net/projects/pythoncard/&quot;&gt;&lt;a href=&quot;http://sourceforge.net/projects/pythoncard/&quot;&gt;http://sourceforge.net/projects/pythoncard/&lt;/a&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;If you want to get involved the main contact point is the Mailing list:&lt;BR&gt;&lt;A href=&quot;http://lists.sourceforge.net/lists/listinfo/pythoncard-users&quot;&gt;&lt;a href=&quot;http://lists.sourceforge.net/lists/listinfo/pythoncard-users&quot;&gt;http://lists.sourceforge.net/lists/listinfo/pythoncard-users&lt;/a&gt;&lt;BR&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;PythonCard requires Python 2.1.x or later and wxPython 2.3.2.1 or later.&lt;BR&gt;wxPython can be downloaded at &lt;A href=&quot;http://www.wxpython.org/&quot;&gt;&lt;a href=&quot;http://www.wxpython.org/&quot;&gt;http://www.wxpython.org/&lt;/a&gt;&lt;/A&gt;&lt;/P&gt;</description>
			</item>
		<item>
			<title>PythonCard Screen Shots</title>
			<description>&lt;P&gt;Kevin has posted a &lt;A href=&quot;http://radio.weblogs.com/0102677/2002/04/29.html#a58&quot;&gt;Windows screen shot&lt;/A&gt;, Dan has posted a &lt;A href=&quot;http://radio.weblogs.com/0001285/stories/2002/04/29/screenShotOfPythoncardSamp.html&quot;&gt;Macintosh one&lt;/A&gt;, here is a Linux shot of the Widget sample that ships with &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt;;&lt;/P&gt;
&lt;P&gt;&lt;IMG src=&quot;http://radio.weblogs.com/0100917/images/widgets01.png&quot;&gt;&lt;BR&gt;&lt;BR&gt;How does it look to you?&lt;/P&gt;</description>
			</item>
		<item>
			<title>To Do List Update</title>
			<description>&lt;P&gt;On the good news front, I&apos;ve managed to achieve one of the things on my to do list. I&apos;ve fixed the &lt;A href=&quot;http://www.python.org/sigs/distutils-sig/&quot;&gt;distutils&lt;/A&gt; support in &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt;&amp;nbsp;and we can now create source distributions for Windows and *nix as well as a Windows binary installer. Expect to see these when version 0.6.5 ships in the very near future.&lt;/P&gt;
&lt;P&gt;The down side is that this has resulted in me adding another task to my to do list. I&apos;ve got to raise a bug reports for a couple of &quot;features&quot; I found when resolving our outstanding packaging issues. I&apos;ve got workarounds but as a good open source community member it is incumbent on me to report the issues I&apos;ve found. Hopefully it will help those who follow me, and may even prompt someone to provide a patch to the code.&lt;/P&gt;</description>
			</item>
		<item>
			<title>PythonCard Wiki</title>
			<description>&lt;P&gt;The &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt; project now has a &lt;A href=&quot;http://wiki.wxpython.org/index.cgi/PythonCard&quot;&gt;Wiki&lt;/A&gt;. For those not familiar with the term, try &lt;A href=&quot;http://www.c2.com/cgi/wiki?WikiWikiWeb&quot;&gt;this definition&lt;/A&gt;. For anyone averse to hyper-linking just let me say that it is a web site written by its users, a collaborative documentation effort.&lt;/P&gt;
&lt;P&gt;This will enable anyone to add value to the project without needing to know the intricacies of cvs, or html, and gives us a common repository of useful, &lt;EM&gt;up to date&lt;/EM&gt; information. &lt;/P&gt;
&lt;P&gt;There is only one drawback so far, because the &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt; pages are actually part of the &lt;A href=&quot;http://wiki.wxpython.org/&quot;&gt;wxPyWiki&lt;/A&gt; (try saying that after a couple of cleansing ales) there is no way to distinguish between &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard &lt;/A&gt;entries and &lt;A href=&quot;http://www.wxpython.org/&quot;&gt;wxPython&lt;/A&gt; pages. I&apos;ve started a thread on the mailing list about this but the only two options I can see are that we prefix the &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt;&amp;nbsp;entries with an identifier (such as &quot;PC&quot;) or that we create our own stand alone Wiki.&lt;/P&gt;</description>
			</item>
		<item>
			<description>&lt;P&gt;OK, I&apos;m back, and I&apos;m doing some work. Current highlights include;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fixing distutils for &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Adding toolbar support to the &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt; framework&lt;/LI&gt;
&lt;LI&gt;Including support for a simple wxGrid in the &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt;&amp;nbsp;&lt;A href=&quot;http://www.halfcooked.com/CityDesk/FunctionalSpecs/fog0000000006.html&quot;&gt;dbBrowser&lt;/A&gt; sample&lt;/LI&gt;
&lt;LI&gt;Converting the PyForm example from &lt;A href=&quot;http://www.oreilly.com/catalog/python2/&quot;&gt;Programming Python 2nd Edition&lt;/A&gt; to use &lt;A href=&quot;http://www.wxpython.org/&quot;&gt;wxPython&lt;/A&gt; instead of &lt;A href=&quot;http://www.python.org/topics/tkinter/&quot;&gt;Tkinter&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Thats it, there is no more. If you catch me on a mailing list or newsgroup promising to do anything else before I have completed these simple tasks please feel free to chastise me roundly.&lt;/P&gt;</description>
			</item>
		<item>
			<description>&lt;P&gt;Ah work, without it we would all be sane. &lt;/P&gt;
&lt;P&gt;Today I found myself confronted by&amp;nbsp;a colleague who was of the opinion that we did not need any kind of source code control. My immediate response was one of incredulity and downright anger - &quot;what sort of idiot would think to implement a computer system without source code control&quot;, etc. &lt;/P&gt;
&lt;P&gt;Then I took a step back and looked at the actual situation. The person making this outrageous statement is not a programmer. He is not in IT, he is someone in the finance division of the company I&apos;m working for. He doesn&apos;t know the difference source code control and a hole in the road - and he shouldn&apos;t have to. That is one of the things&amp;nbsp;his company pays me to worry about. &lt;/P&gt;
&lt;P&gt;What I should be able to do is explain to him why he can&apos;t get instantaneous bug fixes into production for his German subsidiary and why that is a good thing for his bottom line. So, I&apos;m writing a story. I&apos;ll post a link when it is finished. &lt;/P&gt;</description>
			</item>
		<item>
			<description>&lt;P&gt;Portfolio is a simple, data intensive, application to track the reducing value of my stock market portfolio. &lt;/P&gt;
&lt;P&gt;If I have but one gift in life, it is to instantly reduce the attraction and value of any instrument on a financial market by buying some of it. To further compound this tale of woe I like to daily remind myself of my reducing nominal value. &lt;/P&gt;
&lt;P&gt;What this actually means in English is that I like to keep track of the value of my shares. To date I have done this in a spreadsheet. Every day I open up my spreadsheet, I then open up &lt;A href=&quot;http://www.mozilla.org/&quot;&gt;Mozilla&lt;/A&gt; and navigate to &lt;A href=&quot;http://my.yahoo.com/&quot;&gt;My Yahoo!&lt;/A&gt; I then transpose the share prices from the portfolios section (as provided by &lt;A href=&quot;http://finance.yahoo.com/&quot;&gt;Yahoo! Finance&lt;/A&gt;) into the spreadsheet and update all of the links on a summary worksheet to produce a single figure showing me how much my investments have lost me. This is a labour intensive process that computers were designed to simplify. Hence this application.&lt;/P&gt;
&lt;P&gt;I want to be able to specify my shares by exchange. I&apos;ve got some Australian and some US shares so currency awareness is required. I want to record how much I paid for&amp;nbsp;my shares and keep a record of their value over time. I need to be able to record stock split. I want to have the ability to record dividends, in either cash or &apos;re-investment&apos; shares. I want to automate the acquisition of prices. I&apos;m only really interested in closing prices but I do not want to restrict other people to only one price sample a day. &lt;/P&gt;
&lt;P&gt;When Kevin posted the &lt;A href=&quot;http://aspn.activestate.com/ASPN/Mail/Message/PythonCard/1012637&quot;&gt;announcement&lt;/A&gt; of his stockprice &lt;A href=&quot;http://www.w3.org/TR/SOAP/&quot;&gt;SOAP&lt;/A&gt; client to the &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt; mailing list the penny dropped and I realised that I had at my disposal all of the tools necessary to create this application. The storage will be supplied by &lt;A href=&quot;http://www.oracle.com/&quot;&gt;Oracle&lt;/A&gt;, which I have running on Windows2000 on my laptop. The application will be written in &lt;A href=&quot;http://pythoncard.sourceforge.net/&quot;&gt;PythonCard&lt;/A&gt;, it will talk to the database using &lt;A href=&quot;http://www.computronix.com/utilities&quot;&gt;cx_Oracle&lt;/A&gt;&amp;nbsp;and may even use some native &lt;A href=&quot;http://www.wxpython.org/&quot;&gt;wxPython&lt;/A&gt;. I should be able to build a working application fairly quickly and easily and then tinker with the storage interface to my hearts content.&lt;/P&gt;</description>
			</item>
		<item>
			<description>&lt;P&gt;Today my topic is persistence in object oriented languages. In a vain attempt&amp;nbsp;to get someone (anyone) to link to&amp;nbsp;this Radio blog I making this category a notepad of my experiments to add persistence to PythonCard.&lt;/P&gt;
&lt;P&gt;My first task is to build an application that talks to a relational database. Hey, I&apos;ve done that already. &lt;A href=&quot;http://pythoncard.sourceforge.net/samples.html&quot;&gt;dbBrowser&lt;/A&gt; is a sample that ships with PythonCard. Tick one.&lt;/P&gt;
&lt;P&gt;My second task is to integrate the relational storage with events in the framework. The purpose here is to make the storage as transparent as possible. dbBrowser is read only and doesn&apos;t address this issue. The code is modular though, with different modules for the different &apos;flavours&apos; of database that it talks to. &lt;/P&gt;
&lt;P&gt;For this step I&apos;m going to stick to a single database and concentrate on keeping the application data model seperate from the persistence mechanism. In other words, if I do this correctly you should be able to swap out the database and replace it with another without changing any of the application code, as well as using the persistence mechanism with&amp;nbsp;any PythonCard application.&amp;nbsp;Of course, if I do it really well you should be able to replace the relational database with any other form of storage, in particular ZODB or shelve.&amp;nbsp;I&apos;m leaving them out of it until I have a working model with a relational database. I&apos;m also leaving them alone for now because other people are working on object storage in PythonCard.&amp;nbsp;Hopefully we will all progress together and be able to join our efforts in the near future.&lt;/P&gt;
&lt;P&gt;For step two I will need to build another application. Luckily, I&apos;ve got one in mind. I&apos;ve even got a relational data model to go with it. In my next post I&apos;ll try and explain my sample application.&lt;/P&gt;</description>
			</item>
		</channel>
	</rss>

