<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
	<channel>
<title>Tcl Scripting</title><link>http://www.tclscripting.com/index.html</link><description>Latest entries on tclscripting.com</description><dc:language>en</dc:language><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:rights>Copyright 2006 Bryan Oakley</dc:rights><dc:date>2006-11-14T19:12:09-06:00</dc:date><admin:generatorAgent rdf:resource="http://www.realmacsoftware.com/" />
<admin:errorReportsTo rdf:resource="mailto:bryan.oakley@gmail.com" /><sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
<lastBuildDate>Thu, 30 Aug 2007 05:31:23 -0500</lastBuildDate><item><title>Fixed typos in web services article</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-11-14T19:12:09-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-30</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-30</guid><content:encoded><![CDATA[I noticed a few typos in the web services example which have now been fixed. One person has reported getting an error that says "missing value to go with key" when they try to parse the results of the call using dict, as I did in the example. So far I haven't been able to duplicate it. <br /><br />If you get the same error, try parsing the results using list commands rather than dict. Perhaps the data being parsed with dict in the example isn't a valid dict value.  Since every web service will return data in a different format, it doesn't affect the main point of the article which was to show how easy it is to make calls to web services. I may be hard to parse the data, but it's easy to get the data. :-\]]></content:encoded></item><item><title>Web Services and the Google API</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-11-12T23:04:24-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-29</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-29</guid><content:encoded><![CDATA[Have you wanted to try your hand at making calls to web services using Tcl? Tcl has all the building blocks if you want to roll your own solution, but it can require a fair amount of knowledge about SOAP. Recently a new web services library was announced that makes it very simple to access web services via Tcl. This article show how simple it is to make a request to a web service provided by Google.<br /><br />Read <a href="articles/nov06/article1.html" rel="self">Web Services and the Google API</a><br />]]></content:encoded></item><item><title>The best thing to come out of the 2006 conference</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-10-15T22:15:12-05:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-28</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-28</guid><content:encoded><![CDATA[The best thing to come out of the conference was seeing the tentative schedule for an 8.5 release. Or was it learning about full text search in sqlite? Or watching demos of Ratcl, Whim, L, OO, TkHtml, ...<br /><br />Read <a href="articles/oct06/article1.html" rel="self">The best thing to come out of the conference</a>]]></content:encoded></item><item><title>Your Second Tcl Program</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-09-19T21:04:50-05:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-27</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-27</guid><content:encoded><![CDATA[Ok, you've written your first Tcl program. Maybe it did nothing but print "hello, world", or maybe you copied some of the examples from a book or from the Tcler's Wiki. Now it's time to write something real. But where to begin? <br /><br />This article describes a couple of simple techniques for organizing your code as you move beyond "Hello, World" and on to more complex applications.<br /><br />Read <a href="articles/sep06/article1.html" rel="self">Your Second Tcl Program</a>]]></content:encoded></item><item><title>Introduction to Toplevels</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-06-27T21:59:43-05:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-26</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-26</guid><content:encoded><![CDATA[Some toolkits call 'em panels, some call 'em forms, or windows, or dialogs. Tk calls them toplevels. This article briefly describes how to create, configure and use toplevel widgets. <br /><br />Read <a href="articles/jun06/article2.html" rel="self">Introduction to Toplevel Windows</a>]]></content:encoded></item><item><title>Introduction to named fonts</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-06-04T21:05:00-05:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-25</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-25</guid><content:encoded><![CDATA[The ability to create fonts with a given name, and to reconfigure them on the fly is one of the real gems hidden in the Tk library. This article briefly describes what named fonts are and how to use them.<br /><br />Read <a href="articles/jun06/article1.html" rel="self">Introduction to named fonts</a>]]></content:encoded></item><item><title>On skipping a month...</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-06-04T21:02:38-05:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-24</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-24</guid><content:encoded><![CDATA[I apologize for those who might have expected to see some new articles over the past month. I've had some personal issues to deal with and it was easiest to put this web site on the back burner temporarily. Hopefully I'll be able to get back on track. Thanks for your patience.]]></content:encoded></item><item><title>Binding and -command scripts</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-04-30T16:21:23-05:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-23</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-23</guid><content:encoded><![CDATA[One rule of thumb I've often preached on comp.lang.tcl is  to never have a binding or "&#8209;command" script call more than one command. I've written an article which describes the reasoning behind this rule of thumb and a couple of common exceptions to the rule. <br /><br />Read <a href="articles/apr06/article3.html" rel="self">Binding and -command scripts </a>]]></content:encoded></item><item><title>Getting started with tcltest</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-04-24T00:10:59-05:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-22</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-22</guid><content:encoded><![CDATA[If you've ever needed to write a test script you'll appreciate the power and elegance of Tcl's own test harness, tcltest. In this article I give a brief overview of how to use tcltest. If you don't have tcltest installed I've written a companion article that helps you get a working copy on your machine. Chances are, though, you've already got it.<br /><br />Read <a href="articles/apr06/article1.html" rel="self">Getting started with tcltest</a> and <a href="articles/apr06/article2.html" rel="self">Installing tcltest</a>]]></content:encoded></item><item><title>Toolbars and grayscale images</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-03-31T18:22:03-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-21</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-21</guid><content:encoded><![CDATA[I was reading the Microsoft UI guidelines the other day to get some specifics about toolbar look & feel for a project I'm working on. Even though Microsoft isn't particularly consistent even within their own apps, they at least publish guidelines as a starting point. What I learned was that toolbar buttons, in addition to being flat when the mouse is not over them,  should also be "neutral or grayscale". Of course, what Microsoft says and what Microsoft does can be two very different things, but it got me thinking about how this might look in the app I'm working on.<br /><br />I wrote a short article showing how easy it is to achieve this effect using a very simple technique that takes advantage of the features built in to the Tk photo image format.<br /><br /><a href="/articles/mar06/article3.html">Toolbars and grayscale images</a>]]></content:encoded></item><item><title>Monthly archives</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-03-26T00:21:57-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-20</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-20</guid><content:encoded><![CDATA[Back in December of 2005 there was some discussion about a Tcl magazine in comp.lang.tcl. There was a fair amount of interest but nothing ever got off the ground. It was partly that discussion that motivated me to finally get off my duff and create this site.<br /><br />To me, "magazine" means "monthly", so I've decided to organize my articles by month so those who want a monthly magazine-type reading experience can start with the index for a particular month rather than reading this blog. I still hope to post weekly as often as I can so this only affects how I organize the archives. This scheme also lets me use what I hope will be permanent links to each article, in case anyone wants to bookmark or link directly to a specific article. <br /><br />I'm considering posting the most recent monthly index to comp.lang.tcl shortly after each month ends, so much like we now get a weekly "Tcl-URL!" we'll also get a monthly "last month on tclscripting.com..." to try and get more people interested in the site.<br /><br />If you think this is a good idea, or if you think it's not, I'd be glad to hear your opinion. Just click on the <a href="feedback.php" rel="self">Feedback</a> link and type in your comments, or send a message to <a href="mailto:feedback@tclscripting.com">feedback@tclscripting.com</a>.<br /><br /><b>Thanks for reading!</b>]]></content:encoded></item><item><title>Introduction to bindtags</title><dc:creator>bryan.oakley@gmail.com</dc:creator><category>GUI</category><dc:date>2006-03-26T00:14:48-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-19</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-19</guid><content:encoded><![CDATA[Tk has a remarkably powerful mechanism for associating events with widgets, known as <i>bindtags</i>. I've written a short article that introduces the concept of bindtags and gives a few small examples of how they are used and what they may be used for.<br /><br /><a href="articles/mar06/article2.html" rel="self">Introduction to bindtags</a>]]></content:encoded></item><item><title>Using named arguments</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-03-12T14:59:21-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-17</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-17</guid><content:encoded><![CDATA[Ever want to implement named arguments like most tk commands? This article gives one solution that is not dependent on any external libraries.<br /><br /><a href="articles/mar06/article1.html" rel="self">Using named arguments</a>]]></content:encoded></item><item><title>Writing Tk Code in the Right Order</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-02-26T09:02:35-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-16</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-16</guid><content:encoded><![CDATA[The order in which Tk code is written can have a profound impact on the final result. Widgets may not resize properly or they might not show up at all. I've written an article that discusses these two specific problems and  how to avoid them.<br /><br /><a href="articles/feb06/article3.html" rel="self">Writing Tk Code in the Right Order</a>]]></content:encoded></item><item><title>Intelligent text widget autoscroll</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-02-18T23:29:15-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-15</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-15</guid><content:encoded><![CDATA[At work we use a simple chat program to keep in touch since we don't all work in a central office. It's a handy little app that is just a few hundred lines long. The program has one little quirk that I find annoying, which is that when a new message comes in the text automatically scrolls to the bottom so one can see the new text. This is what I want 99% of the time but it's that last 1% that was driving me crazy, and it's that last 1% that can sometimes make the difference between an OK application and one that is first class. <a href="articles/feb06/article2.html" rel="self">more...</a>]]></content:encoded></item><item><title>An example is worth 1000 words</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-02-12T18:47:39-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-12</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-12</guid><content:encoded><![CDATA[One of the tricks I use when I first start writing a chunk of code is to package the code up in a namespace, and I (almost) always include a working example as part of the implementation. I have found that this can be both a timesaver during development and also a year or two later when I've forgotten how the code works and want to use it again in a new project. <a href="articles/feb06/article1.html" rel="self">more...</a><br />]]></content:encoded></item><item><title>The difference between eq and ==</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-01-29T15:27:45-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-11</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-11</guid><content:encoded><![CDATA[Starting with Tcl 8.4, expr (and its cousins if, while and for) includes the operators "eq" and "ne". The documentation, though accurate, doesn't present much of a distinction between those and their counterparts "==" and "!=".<span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"> </span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"><a href="articles/jan06/article4.html" rel="self">more...</a></span>]]></content:encoded></item><item><title>Online Tcl/Tk Book</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-01-19T06:30:06-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-10</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-10</guid><content:encoded><![CDATA[<span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"><a href="http://en.wikibooks.org/wiki/Programming:Tcl" rel="self">Programming:Tcl</a></span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"> is an open content </span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"><a href="http://en.wikibooks.org/wiki/Main_Page" rel="self">WikiBook</a></span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"> on programming in Tcl/Tk. I remember seeing this once before and had forgotten all about it until its Tcler's Wiki page was updated today.  It's worth checking out.<br /></span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"><br />I've also added a link to it on my  </span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"><a href="resources.html" rel="self">Resources</a></span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"> page in case you come here later looking for it.</span>]]></content:encoded></item><item><title>You only need curly braces...</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-01-15T16:51:15-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-8</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-8</guid><content:encoded><![CDATA[Unlike some languages which require curly braces to delimit blocks of code, in Tcl curly braces are always optional. While this is a fundamental feature of how the Tcl parser works, few if any books and tutorials actually spell it out. My way to describe this is with the following rule: <blockquote>You only need curly braces when you need curly braces</blockquote><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"> </span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"><a href="articles/jan06/article3.html" rel="self">more...</a></span>]]></content:encoded></item><item><title>Dynamic Forms and Variables</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-01-09T11:33:23-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-6</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-6</guid><content:encoded><![CDATA[Last week on comp.lang.tcl I was helping someone who claimed to have problems with passing value from an entry widget to a procedure. Initially it seemed to be a problem with scoping, but it turns out his real problem was in needing to create a form with a variable number of input fields. He was struggling with what to use as the target of the -textvariable option and how to reference that in a proc.<span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"> </span><span style="font:12px 'Lucida Grande', LucidaGrande, Verdana, sans-serif; color:#555555;"><a href="articles/jan06/article2.html" rel="self">more...</a></span>]]></content:encoded></item><item><title>Actions</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-01-03T16:28:22-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-3</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-3</guid><content:encoded><![CDATA[One of the more tedious aspects of GUI development is keeping the UI in sync with the state of the application enabling and disabling widgets depending on the current context. For example, if the focus is on a read-only widget you should disable the paste button, once data has been entered you need to enable the File->Save menu item, etc.<br /><br />Over the years I've learned that this can be a maintenance nightmare. For example, your application may start out with just a File->Save menu. Later you add a toolbar and right-click menu. Then you add keyboard accelerators. Each time you do this you have to find the places in your code where you disable the File->Save menu item and add code to disable all the other widgets and menu items. <a href="articles/jan06/article1.html" rel="self">more...</a><br />]]></content:encoded></item><item><title>Tcl/Tk Scripting Launches</title><dc:creator>bryan.oakley@gmail.com</dc:creator><dc:subject>Home</dc:subject><dc:date>2006-01-01T17:08:57-06:00</dc:date><link>http://www.tclscripting.com/index.html#unique-entry-id-2</link><guid isPermaLink="true">http://www.tclscripting.com/index.html#unique-entry-id-2</guid><content:encoded><![CDATA[Welcome to tclscripting.com!<br /><br />For now, consider this site alpha quality at best. I haven't managed a real website in years; my CSS and HTML skills are pretty rusty and I've never done a blog or dealt with RSS before. <br /><br />I'm also learning a new tool (RapidWeaver, by <a href="http://www.realmacsoftware.com" rel="self">Realmac Software</a>) that has its own share of quirks. Expect a few bumps in the road while I work the kinks out, and don't assume that links to any particular page will work in the future. Eventually that will change, but for now expect the whole site to be subject to change.]]></content:encoded></item></channel>
</rss>