<?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>Jim Cassidy</title>
	<atom:link href="http://www.jimcassidy.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jimcassidy.ca</link>
	<description>Programming for fun and profit since 1989</description>
	<lastBuildDate>Wed, 06 Jan 2010 23:18:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Take Tech Seriously!</title>
		<link>http://www.jimcassidy.ca/2010/01/06/take-tech-seriously/</link>
		<comments>http://www.jimcassidy.ca/2010/01/06/take-tech-seriously/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 23:18:12 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Cranky Rants]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Waste]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=596</guid>
		<description><![CDATA[I have spent decades learning how to program computers. It should take decades. I have dedicated myself to lifelong learning, and, to tell the truth, it&#8217;s a bit of a love affair.
Many people in the so-called entrprise do not take what I do seriously. There are two trends that I find silly. First, there is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="24 Hours" src="http://vig-fp.pearsoned.com/store/coverimage/0672329905.jpg" alt="Learn C# In 24 Hours" width="111" height="144" />I have spent decades learning how to program computers. It should take decades. I have dedicated myself to lifelong learning, and, to tell the truth, it&#8217;s a bit of a love affair.</p>
<p>Many people in the so-called entrprise do not take what I do seriously. There are two trends that I find silly. First, there is the plethora of books that promise that you can become proficient with any computer language or technology in just 21 days. Give me break! Read what Peter Norvig had to say in a very good article entitled <a title="21 days" href="http://norvig.com/21-days.html" target="_blank">Teach Yourself Programming in Ten Years</a>.</p>
<p>The other trend is expensive training that cannot possible provide much value. Training dollars are being wasted. There are companies who send employees off on four day courses to learn how to program in .NET, for example. These courses can cost $2,500 or more per person. What can you learn in four days? Really? <a title="Training" href="http://www.learningtree.ca/courses/502.htm" target="_blank">One such course</a> actually states: “Prior programming experience is helpful but not required.” Again, give me a break!</p>
<p>As Novig writes:<em> &#8220;There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music.&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2010/01/06/take-tech-seriously/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What The FLOSS!?</title>
		<link>http://www.jimcassidy.ca/2010/01/04/what-the-floss/</link>
		<comments>http://www.jimcassidy.ca/2010/01/04/what-the-floss/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 01:47:53 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[Requirements & Design]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[floss]]></category>
		<category><![CDATA[free software]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=590</guid>
		<description><![CDATA[A few weeks ago, I overheard the following conversation in the elevator at a client site.
Person A: &#8220;He says that he wants a blog.&#8221;
Person B: &#8220;A Blog!? Have blogs been approved?&#8221;
Person A: &#8220;Wikis have been approved. We can give him a wiki.&#8221;
Person B: &#8220;Are you sure? You said that he wanted a blog.&#8221;
Person A: &#8220;He [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I overheard the following conversation in the elevator at a client site.</p>
<p><strong>Person A</strong>: &#8220;He says that he wants a blog.&#8221;<br />
<strong>Person B</strong>: &#8220;A Blog!? Have blogs been approved?&#8221;<br />
<strong>Person A</strong>: &#8220;Wikis have been approved. We can give him a wiki.&#8221;<br />
<strong>Person B</strong>: &#8220;Are you sure? You said that he wanted a blog.&#8221;<br />
<strong>Person A</strong>: &#8220;He SAYS that he wants a blog. Let&#8217;s give him a wiki and tell him it&#8217;s a blog.&#8221;</p>
<p>Some people just don&#8217;t give a FLOSS. Lord love a duck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2010/01/04/what-the-floss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Todo List Is NOT Plan.</title>
		<link>http://www.jimcassidy.ca/2009/11/18/a-todo-list-is-not-plan/</link>
		<comments>http://www.jimcassidy.ca/2009/11/18/a-todo-list-is-not-plan/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 14:44:49 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=553</guid>
		<description><![CDATA[Project managers go through stages in their personal evolution, and they can stall at any stage, as any of us can.  However, many of the project managers I have reported to in recent years have stalled at a stage where they believe that everything will work out as long as they have a GANT chart.
Everything [...]]]></description>
			<content:encoded><![CDATA[<p>Project managers go through stages in their personal evolution, and they can stall at any stage, as any of us can.  However, many of the project managers I have reported to in recent years have stalled at a stage where they believe that everything will work out as long as they have a GANT chart.</p>
<p>Everything will be fine, they seem to believe, as long as I have a record of the tasks that have to be performed and an understanding of how these tasks depend on each other. Nothing could be further from the truth. The GANT chart is just the beginning.</p>
<p>A GANT chart is a comforting tool because everybody understands it. A project manager can quickly show where the project is stalling, and show the impact of the stall on the deadlines.  A work breakdown is NOT a plan.</p>
<p>The following analogy may make this clear. If I gave you a grocery list,  and I asked you to buy me some food, you might have trouble completing the task. You may not even know where you can buy the food I need.</p>
<p>When you return with canned peas, I might have to explain that I really needed frozen peas. I might wave my recipe in your face and fault you for getting the wrong type of peas. As a frustrated project manager,  I might never realize that I never shared my recipe with you before sending you out.</p>
<p>In the simple example I give above, the list tells a project manager what he has to plan, but it is not a plan. Many project managers stop when they have their list. They have something to say for themselves if the people they report to ask them how things are going. That is all that matters. This approach is insuffient.</p>
<p>Two and half years ago, I worked on a project with a tight deadline. My manager took care of ordering food for members of the team who worked late. She organized rides for people who depended on public transportation. She never started by asking us how things were going, but she asked us what we needed.</p>
<p>She understood that overtime was necessary, and she agressively removed any barriers that would have made it hard or unpleasant for us to work late. She motivated us to work hard by staying behind with us, and she even brought us coffee. Thanks Lan!</p>
<p>She provided input when asked, but otherwise she stayed out of the way and waited for her scheduled updates. She asked for estimates, and held us to them. She always said thank you. She gave us the credit even though she deserved a fair share of it herself.</p>
<p>If a requirement was unclear, she led the charge to get us the answers we needed. She never left us hanging. Microsoft Project was used to communicate and track our progress, but she planned based on the chart. The chart was not the plan.</p>
<p>When we were going to deploy a new database, she asked the following questions:</p>
<ol>
<li>Do you have access to the server?</li>
<li>Do you have the passwords?</li>
<li>Is there an approval or a review phase before the database can be deployed?</li>
<li>Who are you dealing with in the database group?</li>
<li>What are the risks associated with this deployment?</li>
<li>How can we be proactive to avoid these risks?</li>
</ol>
<p>Tasks on a todo list tell what you have to plan, but the list itself is not a plan. Planning and preparing start with the task list.  It should be clear that is does not end withthe work plan. Here is another project management <a title="pm resource" href="http://www.projectsmart.co.uk/" target="_blank">resource </a>you may find useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2009/11/18/a-todo-list-is-not-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protecting The Guilty</title>
		<link>http://www.jimcassidy.ca/2009/11/17/protecting-the-guilty/</link>
		<comments>http://www.jimcassidy.ca/2009/11/17/protecting-the-guilty/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 15:31:52 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=547</guid>
		<description><![CDATA[Microsoft Project is a great tool. Many of my government clients use it. But, it is no substitute for good project management.
To protect the guilty, I will mention no names, but I will state the following.

Do not just assign deadlines. Ask developers to plan and map out the work and provide estimates.
A todo list is [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft Project is a great tool. Many of my government clients use it. But, it is no substitute for good project management.</p>
<p>To protect the guilty, I will mention no names, but I will state the following.</p>
<ol>
<li>Do not just assign deadlines. Ask developers to plan and map out the work and provide estimates.</li>
<li>A todo list is NOT a proper plan.</li>
<li>Manage people not lists.</li>
<li>Build a team, and the software will build itself.</li>
<li>Screenshots are not requirements.</li>
<li>Developers need to understand the requirements and the business to do a good job.</li>
<li>Quality is not an accident, and it is not the work on any one person.</li>
<li>The fish rots from the head.</li>
</ol>
<p>I want to speak to the first point today.</p>
<p>A team will rarely meet a deadline that was set by a project manager who has not asked the team for an estimate. For one thing, the date is meaningless because, at best, it represents some managers best guess. As a group, developers do not respect uninformed opinion, and that is how they regard dates that are picked out of the air.</p>
<p>It is difficult to motivate developers to meet these dates if you disregard their expertise. When developers are treated as replaceable cogs, you can see the lack of faith and commitment on the faces of each developer at every status meeting. Nobody speaks up.</p>
<p>Members of the team share neither speak about enthusiasm nor doubt. They come in, do their work, and go home. Apathy rules the day. As I have heard one person say, &#8220;Government cheques don&#8217;t bounce. That&#8217;s all that matters.&#8221;</p>
<p>Basically, developers need to buy-in to the deadline. When I provide an estimate, it is a matter of pride to accomplish the work in the time I have forecast. I have not excuse and I know it.</p>
<p>Many of the managers I have dealt with in my recent government work have not wanted to even ask the question. They believe that developers, especially consultants, will pad the estimates. Therefore, they provide a due date, and assume an adversarial stance from the word go. The work often takes longer because they micromanage or change the project plan to make up for lost time.</p>
<p>In my next few entries, I want to reflect on project management on some of my recent projects. For useful information, and real insight into project management, visit the <a title="pmhut" href="http://www.pmhut.com/" target="_blank">Project Management Hut</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2009/11/17/protecting-the-guilty/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaScript is Not A Computer Language?</title>
		<link>http://www.jimcassidy.ca/2009/05/28/javascript-is-not-a-computer-language/</link>
		<comments>http://www.jimcassidy.ca/2009/05/28/javascript-is-not-a-computer-language/#comments</comments>
		<pubDate>Fri, 29 May 2009 01:37:44 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=499</guid>
		<description><![CDATA[Several years ago, I had the pleasure of working on a contract at Canadian Forest Products. I worked with a great group of people who had worked together for years, on a good project with clear requirements. While I was there, I used the remote scripting toolkit from Microsoft, which allowed me to communicate with [...]]]></description>
			<content:encoded><![CDATA[<p>Several years ago, I had the pleasure of working on a contract at Canadian Forest Products. I worked with a great group of people who had worked together for years, on a good project with clear requirements. While I was there, I used the remote scripting toolkit from Microsoft, which allowed me to communicate with the server without reloading the web page: we now call this technique AJAX. I wrote a lot of JavaScript.</p>
<p>While I was there, Terry French, team leader of Canfor’s e-business effort,  expressed an opinion. I am paraphrasing after years have passed &#8211; if I do not get it right, I hope Terry will forgive me: &#8220;You code as if JavaScript were a programming language.  It is not. It&#8217;s a scripting language. It&#8217;s great for providing simple form interactions, and validating fields on submit. That&#8217;s it.&#8221;</p>
<p>If this blog were a trashy daytime TV talkshow, it would be one of those look-at-me-now shows. You know the kind: people who were unpopular in high school, but who have made good, confront their tormentors. Terry was a great guy to work with, but on behalf of the much maligned computer language, JavaScript, I say: look at me now!</p>
<p><a title="server side JavaScript" href="https://wiki.mozilla.org/ServerJS/Introduction" target="_blank">Server side JavaScript</a> is making a comeback.  But, wait, there&#8217;s more.  JavaScript programmers now get to deal with sophisticated concepts such as <a title="currying" href="http://www.dustindiaz.com/javascript-curry/" target="_blank">currying</a>, callbacks, <a title="closures" href="http://www.jibbering.com/faq/faq_notes/closures.html" target="_blank">closures</a>, <a title="array comprehensions" href="https://developer.mozilla.org/en/New_in_JavaScript_1.7" target="_blank">array comprehensions</a>, and <a title="TDD" href="http://www.eviltester.com/index.php/2008/06/08/test-driven-javascript-code-coverage-using-jscoverage/" target="_blank">test driven development</a> in JavaScript.</p>
<p>And then there are those lovely libraries: <a title="jquery" href="http://jquery.com/" target="_blank">JQuery</a>, <a title="mootools" href="http://mootools.net/" target="_blank">Mootools</a>, and <a title="yui" href="http://developer.yahoo.com/yui/" target="_blank">YUI</a>, just to name a few. JavaScript has come a long way. What do you think of JavaScript now, Terry.</p>
<p>If you are interested in Javascript, check out Douglas Crockford&#8217;s videos on JavaScript at <a title="crockford" href="http://video.yahoo.com/watch/111585/1027823" target="_blank">Yahoo Video</a>.</p>
<div><object width="500" height="322" data="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" value="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1027823&amp;vid=111585&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111585_320_240.jpeg&amp;embed=1" /><param name="src" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40" /><param name="flashvars" value="id=1027823&amp;vid=111585&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111585_320_240.jpeg&amp;embed=1" /><param name="allowfullscreen" value="true" /></object><br />
<a href="http://video.yahoo.com/watch/111585/1027823">Douglas Crockford: &#8220;Advanced JavaScript&#8221; (1 of  3)</a> @ <a href="http://video.yahoo.com">Yahoo! Video</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2009/05/28/javascript-is-not-a-computer-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Alive!</title>
		<link>http://www.jimcassidy.ca/2009/02/05/im-alive/</link>
		<comments>http://www.jimcassidy.ca/2009/02/05/im-alive/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 16:15:18 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Technologies]]></category>
		<category><![CDATA[nginx webservers how-to configuration]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=496</guid>
		<description><![CDATA[While you wait, here is some interesting and extremely useful information about Nginx, a beautiful little web server I am falling in love with.]]></description>
			<content:encoded><![CDATA[<p>Times are busy &#8211; always will be. The down side of starting a series on Jython and DB40 is finding the time. Writing is easy, but time for hacking is limited. I may have to incorporate an awareness of this into my process when I choose blogging topics. Thanks for your patience.</p>
<p>While you wait, <a title="Nginx setup" href="https://calomel.org/nginx.html" target="_blank">here </a>is some interesting and extremely useful information about <a title="nginx" href="http://nginx.net/" target="_blank">Nginx</a>, a beautiful little web server I am falling in love with. I use it to run my Django based site, using FastCGI. If you are getting ready to setup Nginx, this is a great source of information. Nginx (prounced engine X) is fast &#8211; give it a try, if you are curious.</p>
<p>I will probably say more about Nginx in months to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2009/02/05/im-alive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Persisting Jython Objects Using DB4O</title>
		<link>http://www.jimcassidy.ca/2009/01/05/persisting-jython-objects-using-db4o/</link>
		<comments>http://www.jimcassidy.ca/2009/01/05/persisting-jython-objects-using-db4o/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 17:10:11 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[DB4O]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Python/Jython]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Jython]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=472</guid>
		<description><![CDATA[If you have been following my blog, you will know that I have been playing with the following technologies: DB4O (an open source object database), Jython (Python 2.5, implemented on the JVM), and Django (A python based MVC-style web application framework in the same class as Ruby on Rails).
So far, in tutorials I wrote in [...]]]></description>
			<content:encoded><![CDATA[<p>If you have been following my blog, you will know that I have been playing with the following technologies: <a title="db4o" href="http://db4o.com" target="_blank">DB4O</a> (an open source object database), <a title="jython" href="http://www.jython.org/Project/" target="_blank">Jython</a> (<a title="python" href="http://python.org" target="_blank">Python</a> 2.5, implemented on the <a title="JVM" href="http://en.wikipedia.org/wiki/Java_Virtual_Machine" target="_blank">JVM</a>), and <a title="Django" href="http://www.djangoproject.com/" target="_blank">Django</a> (A python based <a title="MVC" href="http://en.wikipedia.org/wiki/Model-view-controller" target="_blank">MVC</a>-style web application framework in the same class as <a title="RoR" href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a>).</p>
<p>So far, in <a title="Tutorials" href="http://www.jimcassidy.ca/2008/10/28/jython-formula-one-tutorial/" target="_blank">tutorials</a> I wrote in November of last year, we have seen that Jython allows us to write Python code that uses Java libraries, such as DB40. I altered the standard <a title="Formula One Tutorial" href="http://developer.db4o.com/Resources/view.aspx/Formula_One_Tutorial" target="_blank">DB4O Formula One tutorial</a> using Jython instead of Java, and showed that we can persist and retrieve objects using this technology.</p>
<p>I also mentioned that Django, a Python based web application framework, also runs on Jython.</p>
<p>Which leads us to this entry, where I will start thinking and tinkering to find a way to use DB4O with Django/Jython rather than a relational database.</p>
<p>I am doing this for fun, not for profit. I am not an expert with any of the technologies I am using. I stand in awe of the very talented open source programmers who precede me. I hope to learn as much as I hope to teach and share what I know, or think I know.</p>
<p><strong>Persisting Objects:</strong></p>
<p>In my previous <a title="Formula One Tutorial" href="http://www.jimcassidy.ca/2008/10/28/jython-formula-one-tutorial/" target="_blank">example</a>, I created Plain Old Java Objects (Pojos), and created a <a title="JAR" href="http://java.sun.com/developer/Books/javaprogramming/JAR/basics/" target="_blank">JAR</a>. I used the classes in the JAR to create the objects I persisted using DB4O. I have since decided that this is not desirable. I think this creates a barrier to Python programmers who want to use Django, Python and DB4O togther.</p>
<p>Therefore, I have resolved to persist Python classes by providing the means to automagically inspect these classes and generate the JAR files. I shared <a title="Plug into Django" href="http://www.jimcassidy.ca/2008/11/20/plug-db4o-into-django/" target="_blank">these thoughts</a> over a month ago.</p>
<p>Before writing any code, I just want to reflect on the task at hand. Let&#8217;s gather our assumptions.</p>
<ul style="list-style-type: square;padding-left: 30px">
<li>For every Python data type, there is a corresponding Java data type.</li>
<li>A &#8220;simple&#8221; object is based on a class that contains primitive types only.</li>
<li>A complex object contains other objects, or collections of objects.</li>
<li>We may need to make two passes to persist objects &#8211; first simple objects, and then complex.</li>
<li>A class contains an implementation as well as data, and we want to persist both.</li>
<li>If we change the definition of a class in our project, we need to think about what happens to our previously stored objects.</li>
<li>Our Jython classes must inherit from a single class only, or we will not be able to produce an equivalent Java class.</li>
</ul>
<p>In Django, we define models, and then use a command (python manage.py syncdb) to generate the corresponding database. The database is created automagically, based on the settings in the settings file (settings.py). The model is able to perform basic operations to create, read, update and delete objects (CRUD).</p>
<p>We want our DB4O objects to behave in the same way &#8211; as much as possible, we do not want to violate the expectations of Django programmers who have used Django with relational databases.</p>
<p>In my next entry, I will try to write code that creates a Java class based on a Jython class and saves it in a file. I will keep it simple to start, and the code will evolve as we go.</p>
<p>Our first model will be simple &#8211; a class with a few attributes of various types. The output will be a class files &#8211; we will not worry about creating the JAR just yet.</p>
<p>Once we have produced a simple class file, we will produce class that make two passes and resolve inheritance issues as well as contained objects that inherit from previously defined classes.</p>
<p>Code to come in a day or two.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2009/01/05/persisting-jython-objects-using-db4o/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Django/DB4O Continues</title>
		<link>http://www.jimcassidy.ca/2008/12/16/djangodb4o-continues/</link>
		<comments>http://www.jimcassidy.ca/2008/12/16/djangodb4o-continues/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 19:02:05 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[DB4O]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Jython]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=468</guid>
		<description><![CDATA[Hi Folks &#8211; I have read that it is considered poor form to make a post on your blog that does nothing more than promise that you will post soon. It is also considered poor form to apologize for not posting. Still, that is why I am writing today.
I live in Ottawa, Canada. We are [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Folks &#8211; I have read that it is considered poor form to make a post on your blog that does nothing more than promise that you will post soon. It is also considered poor form to apologize for not posting. Still, that is why I am writing today.</p>
<p>I live in Ottawa, Canada. We are currently experiencing a bus strike &#8211; traffic is a nightmare. Some people are reporting that it it is taking up to four times longer to get to work and home. My experience is similar. Combine that with the Christmas season, and my time for blogging and coding is drastically reduced.</p>
<p>Still, I can see that many of you continue to visit. You are eagarly waiting for continued information on my progress with DB4O and Django running in Jython. Last month, I received blog visits from 411 cities in 69 different countries.  I am proud to report that 57% of you are using the Firefox browser &#8211; only 21% are using Internet Explorer. As an aside, I was surprised to see that 6% of you are using Chrome.</p>
<p>So, my friends, if you can forgive me &#8211; I will contnue the work soon. And, I am sorry for not blogging. All the best. I am not writing, but I am developing and tinkering &#8211; the work continues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2008/12/16/djangodb4o-continues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn Python, Why Don&#8217;t You?</title>
		<link>http://www.jimcassidy.ca/2008/12/03/learn-python-why-dont-you/</link>
		<comments>http://www.jimcassidy.ca/2008/12/03/learn-python-why-dont-you/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 16:13:34 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[Cranky Rants]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[DB4O]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python/Jython]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Jython]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=448</guid>
		<description><![CDATA[Since I have been writing about Jython, a version of Python implemented on the JVM, I thought I would provide a link to some Python resources for Java programmers who are using DB4O: Learn Python, why don&#8217;t you?
If you like what Java has to offer in terms of class libraries, but you like the Python [...]]]></description>
			<content:encoded><![CDATA[<p>Since I have been writing about <a title="Jython" href="http://www.jython.org/Project/" target="_blank">Jython</a>, a version of Python implemented on the JVM, I thought I would provide a link to some Python resources for Java programmers who are using DB4O: <a title="Learn Python" href="http://arstechnica.com/news.ars/post/20081202-getting-a-grip-on-python-six-ways-to-learn-online.html" target="_blank">Learn Python, why don&#8217;t you?</a></p>
<p>If you like what Java has to offer in terms of class libraries, but you like the Python language and its <a title="idioms" href="http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html" target="_blank">idioms</a>, then Jython is the best of both worlds.</p>
<p>To prepare for my next installments on Jython, <a title="Django" href="http://www.djangoproject.com/" target="_blank">Django </a>and <a title="db4o" href="http://db4o.com" target="_blank">DB4O</a>, read about <a title="introspection" href="http://diveintopython.org/power_of_introspection/index.html" target="_blank">introspection</a> in Python.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2008/12/03/learn-python-why-dont-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good Advice For Any Developer</title>
		<link>http://www.jimcassidy.ca/2008/11/24/good-advice-for-any-developer/</link>
		<comments>http://www.jimcassidy.ca/2008/11/24/good-advice-for-any-developer/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 16:10:09 +0000</pubDate>
		<dc:creator>Jim Cassidy</dc:creator>
				<category><![CDATA[DB4O]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python/Jython]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Ruby/JRuby]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.jimcassidy.ca/?p=404</guid>
		<description><![CDATA[I am working to use reflection to generate a POJO from data models defined in Jython &#8211; DB4O can only persist Java ojects. However, as I sort that out and  prepare for my next DB4O/Jython/Django post, let me share this good advice for any developer who builds any sort of web application in any language.
These [...]]]></description>
			<content:encoded><![CDATA[<p>I am working to use reflection to generate a POJO from data models defined in Jython &#8211; DB4O can only persist Java ojects. However, as I sort that out and  prepare for my next DB4O/Jython/Django post, let me share this good advice for any developer who builds any sort of web application in any language.</p>
<p>These <a title="seven good habits" href="http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/?S_TACT=105AGY46&amp;S_CMP=PCTAB" target="_blank">seven habits</a> for developing secure applications target PHP developers, but they constitute good advice for you, even if you are working in another language. Take heed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimcassidy.ca/2008/11/24/good-advice-for-any-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
