<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TclTk Scripts]]></title><description><![CDATA[Custom applications using Fortran, Assembly, C, C++, C#, Crystal, Erlang, Elixir, Java, Go, Python, Web (JavaScript, HTML, CSS, various frameworks), Tcl/Tk, T-S]]></description><link>https://tcltkscripts.com</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 23:00:59 GMT</lastBuildDate><atom:link href="https://tcltkscripts.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Tcl/Tk and SQLite Extensions]]></title><description><![CDATA[Looking at an article for the book “Gist of Go: Concurrency,” I also stumbled across a reference to “High-precision date/time in SQLite” written by the same author, Anton Zhiyanov.
I use SQLite in man]]></description><link>https://tcltkscripts.com/tcltk-and-sqlite-extensions</link><guid isPermaLink="true">https://tcltkscripts.com/tcltk-and-sqlite-extensions</guid><category><![CDATA[SQLite Extensions]]></category><category><![CDATA[SQLite]]></category><category><![CDATA[Tcl/Tk]]></category><category><![CDATA[Tcl/Tk Tools]]></category><category><![CDATA[tk]]></category><category><![CDATA[Tcl]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Wed, 11 Feb 2026 02:49:17 GMT</pubDate><content:encoded><![CDATA[<p>Looking at an article for the book “Gist of Go: Concurrency,” I also stumbled across a reference to “<a href="https://antonz.org/sqlean-time/"><strong>High-precision date/time in SQLite</strong></a><strong>”</strong> written by the same author, <a href="https://antonz.org/"><strong>Anton Zhiyanov</strong></a>.</p>
<p>I use SQLite in many of my Tcl/Tk applications, so seeing extensions for SQLite was definitely of interest. Another article titled “<a href="https://antonz.org/sqlean/">The ultimate SQLite extension set</a>,” offers a full list of extensions currently made available by the author.</p>
<p>If you’re like me, check out Anton’s website for yourself. You may be just as intrigued.</p>
<h2>Related Articles and Resources</h2>
<ul>
<li><p><a href="https://antonz.org/sqlean-time/">High-precision date/time in SQLite</a></p>
</li>
<li><p><a href="https://antonz.org/sqlean/">The ultimate SQLite extension set</a></p>
</li>
<li><p>Gist of Go: Concurrency</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Rust 1.87 - 10th Anniversary]]></title><description><![CDATA[Happy 10th Anniversary and, coincidentally, “Announcing Rust 1.87.0 and ten years of Rust! | Rust Blog”
Learning Rust is a challenge on the best of days. In the articles I’ve read over the past days and years, programmers have found themselves having...]]></description><link>https://tcltkscripts.com/rust-187-10th-anniversary</link><guid isPermaLink="true">https://tcltkscripts.com/rust-187-10th-anniversary</guid><category><![CDATA[Rust]]></category><category><![CDATA[Programming Blogs]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sun, 01 Jun 2025 14:36:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1748809578569/ef5c8ff4-200a-4765-a4f9-852b0d8252ed.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Happy 10th Anniversary and, coincidentally, “<a target="_blank" href="https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/?ref=dailydev">Announcing Rust 1.87.0 and ten years of Rust! | Rust Blog</a>”</p>
<p>Learning <a target="_blank" href="https://www.rust-lang.org/">Rust</a> is a challenge on the best of days. In the articles I’ve read over the past days and years, programmers have found themselves having to deal with language syntax constraints instead of focusing on their code and the application itself.</p>
<p>Rust’s steep learning curve, contentious language demands, and the few developers proficient in the language result in higher development and maintenance costs and extended delivery times. Perhaps it’s a matter of familiarity with the language. I prefer to assume the latter as I continue to learn.</p>
<p>Many customers simply don’t care what language you use. They want a robust solution that works, and they want it yesterday.</p>
<p>We’ll see what Rust 1.87 brings. Who knows? As it evolves, the TIOBE index may be a little kinder to this language as more developers take the brave, bold steps to learn it.</p>
<h2 id="heading-installing-rust">Installing Rust</h2>
<p>Visit <a target="_blank" href="https://www.rust-lang.org/tools/install">Install Rust</a>—Rust Programming Language to install the recommended version for your operating system. You can also visit <a target="_blank" href="http://rustup.rs">rustup.rs</a> <a target="_blank" href="https://rustup.rs/">- The Rust toolchain installer</a>. I recommend reading the online version of T<a target="_blank" href="https://doc.rust-lang.org/stable/book/">he Rust Programming Language</a>, which includes installation instructions for Rust.</p>
<p>Maintaining Rust is easy. To update to the latest version, enter <strong><em>rustup update stable</em></strong> in your console or terminal window.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748791036497/3888a947-db1c-4a11-9551-6b654983a83a.png" alt class="image--center mx-auto" /></p>
<p>You can easily check which version of Rust is currently installed with the <strong><em>rustc —version</em></strong> command.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748801141445/dc27ccf8-44f9-4715-ab16-b6abe2be1ecf.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-hello-world">Hello, World!</h2>
<p>I use RustRover by <a target="_blank" href="https://blog.jetbrains.com/rust/2024/09/20/how-to-learn-rust/">JetBrains</a> because it is one of the many IDEs in my All Suite subscription. However, for simple programs, Notepad++ works just as well.</p>
<pre><code class="lang-rust"><span class="hljs-function"><span class="hljs-keyword">fn</span> <span class="hljs-title">main</span></span>() {
    <span class="hljs-built_in">println!</span>(<span class="hljs-string">"Hello, world!"</span>);
}
</code></pre>
<p>Rust compiles to a relatively small executable at 142k compared to other languages executing the same or similar code.;</p>
<p>Memory management is strict and is one of the more fatiguing factors when working with Rust. While I have read numerous reviews, it appears that Rust is both a blessing and a curse. I contend that Rust is one of many new programming languages worth considering. However, others like Crystal and Zig may be a better alternative to delivering code on time.</p>
<h2 id="heading-related-articles-and-resources">Related Articles and Resources</h2>
<ul>
<li><p><a target="_blank" href="https://www.rust-lang.org/">Rust Programming Language</a></p>
</li>
<li><p><a target="_blank" href="http://rustup.rs">rustup.rs</a> <a target="_blank" href="https://rustup.rs/">- The Rust toolchain installer</a></p>
</li>
<li><p><a target="_blank" href="https://rustup.rs/">The Rust Programming Language - The R</a><a target="_blank">ust Programming Language</a></p>
</li>
<li><p><a target="_blank" href="https://blog.jetbrains.com/rust/2024/09/20/how-to-learn-rust/">How to Learn Rust in 2025: A Complete Beginner’s Guide to Mastering Rust Programming | The RustRover Blog</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[How to fix Komodo IDE - Login failed.]]></title><description><![CDATA[** Updated to include a fix for Linux with many thanks to Keith Schneider - See comments. **
The Problem - Login Failed
After installing an open-source version of the Komodo IDE and attempting to log in to my ActiveState account, I was surprised to s...]]></description><link>https://tcltkscripts.com/how-to-fix-komodo-ide-login-failed</link><guid isPermaLink="true">https://tcltkscripts.com/how-to-fix-komodo-ide-login-failed</guid><category><![CDATA[It appears you are offline.]]></category><category><![CDATA[komodo ide Login Failed]]></category><category><![CDATA[Login failed]]></category><category><![CDATA[#Komodo IDE]]></category><category><![CDATA[komodo]]></category><category><![CDATA[ActiveState Komodo IDE]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sun, 17 Nov 2024 23:56:07 GMT</pubDate><content:encoded><![CDATA[<p>** Updated to include a fix for Linux with many thanks to Keith Schneider - See comments. **</p>
<h2 id="heading-the-problem-login-failed">The Problem - Login Failed</h2>
<p>After installing an open-source version of the Komodo IDE and attempting to log in to my ActiveState account, I was surprised to see a “Login failed. It appears you are offline” error message.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731771345993/d9b217b4-5c87-4483-90f5-8e2d0d7a677b.png" alt class="image--center mx-auto" /></p>
<p>I could log in to my ActiveState account using my browser, so this “Login failed” was a real problem. Fortunately, after some searching, I found a potential solution on the following webpage: <a target="_blank" href="https://community.komodoide.com/t/login-failed-it-appears-you-are-offline-again/5903/12">Login failed, it appears you are offline (again) - Discussions - Komodo IDE &amp; Edit | Forums</a>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731876228639/c114b6e7-355e-4032-acf6-229ae4040406.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-windows-fix">Windows FIX</h2>
<p>The solution simply bypasses the Sign-In window altogether. The solution I present below is for WINDOWS and differs only by the tools I used to modify the komodo.jar file and, ultimately, the single line of code in the komodo.js file.</p>
<h2 id="heading-the-modified-solution">The Modified Solution:</h2>
<p>The original solution requires using 7Zip. However, Windows File Explorer provides a means to extract zip files.</p>
<p>Note that this will break any integrations with the ActiveState Platform and the ActiveState State Tool:</p>
<ol>
<li><p>Uninstall Komodo, then re-install and note the default install directory, something like this <em>C:\Program Files (x86)\ActiveState Komodo IDE 12</em></p>
</li>
<li><p>Open a Command Prompt and RUN AS ADMINISTRATOR</p>
</li>
<li><p>Change the current working directory:</p>
<ol>
<li>cd <em>C:\Program Files (x86)\ActiveState Komodo IDE 12\lib\mozilla\chrome</em></li>
</ol>
</li>
<li><p>From the command line, rename komodo.jar to komodo.zip</p>
<ol>
<li>rename komodo.jar komodo.zip</li>
</ol>
</li>
<li><p>Open File Explorer and navigate to <em>C:\Program Files (x86)\ActiveState Komodo IDE 12\lib\mozilla\chrome</em></p>
</li>
<li><p>Click on the komodo.zip file and an “Extract all” button appears on the toolbar above the list of files.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731878212743/ecde1ec7-e7c3-4086-9d0f-969c6c35328d.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Click the “<strong>Extract all</strong>” and extract the folders into the <em>chrome</em> folder</p>
</li>
<li><p>A “Destination Folder Access Denied” window may appear. Check the box next to “Do this for all current items” then, click the “Continue” button.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731878499482/40b03d87-664e-4b1b-981b-0013f6bc3115.png" alt class="image--center mx-auto" /></p>
<p>Three new subdirectories or folders should now appear in the “chrome” folder: content, locale, and skin</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731879329827/931bf972-3ef0-41bf-b458-885637e57076.png" alt class="image--center mx-auto" /></p>
<p>Use an editor such as <a target="_blank" href="https://notepad-plus-plus.org/downloads/v8.7.1/">Notepad++</a> and RUN as an ADMINISTRATOR to open and edit the following file in a text editor: <em>content\komodo.js</em></p>
</li>
<li><p>Comment out line <strong>27</strong> and save.</p>
<ol>
<li><p>The line should have the following on it:</p>
<ol>
<li><p><a target="_blank" href="https://github.com/ActiveState/OpenKomodoIDE/blob/master/src/chrome/komodo/content/komodo.p.js#L27">auth.authenticated((authenticated) =&gt; { if ( ! authenticated) openLoginDialog();});</a></p>
</li>
<li><p>Add two forward slashes “//” to the beginning of line 27 as pictured below:</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731879903406/4d595d1e-aceb-4de3-9f6a-ff21f8820cfe.png" alt class="image--center mx-auto" /></p>
</li>
</ol>
</li>
</ol>
</li>
<li><p>In File Explorer, in the <em>chrome</em> folder, <em>ctrl + click</em> on the <em>content</em>, <em>locale</em> and <em>skin</em> folder. Then, on one of the highlighted files, <em>right-click &gt; Compress to… &gt; ZIP File</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731882689545/fe55907f-a123-460d-90df-10fd315c9241.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>A window will appear stating, “Windows cannot create the Compressed Archive Folder here. Do you want it to be placed on the desktop instead?” Click “Yes,” and the compressed file will appear on your desktop.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731882975719/1ddb7a58-b4b3-470c-849f-e1b227dc5229.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Note that the name of the zip file will be the same as the filename you right-clicked, except it will have a “.zip” extension. In my case, the file created was skin.zip.</p>
</li>
<li><p>Locate the file on your desktop and right-click it. Select properties from the menu that appears, and copy the file’s location. It should be of the form like C:\Users\ …. \ …. \Desktop.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1731884221745/5aa03865-1e5e-4d31-acc6-ca1482584a88.png" alt class="image--center mx-auto" /></p>
<p>Left-click and hold the button down while highlighting the location. Then, right-click the highlighted text and left-click “copy” from the menu that appears to save it to your clipboard.</p>
</li>
<li><p>Returning to our Command Prompt, we can copy the file from the desktop to the Chrome directory and rename it as “komodo.jar” in a single step.</p>
</li>
<li><p>We should already be in the Chrome subdirectory, but we can always navigate to it with a “cd” command.</p>
<ol>
<li>cd <em>C:\Program Files (x86)\ActiveState Komodo IDE 12\lib\mozilla\chrome</em></li>
</ol>
</li>
<li><p>Now, we can simply enter the copy command as:</p>
<ol>
<li><p>copy C:\Users\username\….\Desktop\skin.zip komodo.jar</p>
</li>
<li><p>Note that your path will be similar to the syntax shown above.</p>
</li>
</ol>
</li>
<li><p>You should now have a <strong>komodo.jar</strong> file and the original komodo.zip file in your <em>Chrome</em> folder.</p>
</li>
<li><p>After successfully testing the Komodo IDE, the extracted content, locale, and skin folders can be deleted from the Chrome subdirectory.</p>
</li>
</ol>
<p>You should now be able to start and run Komodo without a Sign-In screen.</p>
<h2 id="heading-linux-fix">Linux Fix</h2>
<p>After posting this article, I received this fix from Keith Schneider per his comment/feedback.</p>
<p>There is no need to uninstall anything on Linux. On Linux, Komodo (Edit and IDE) adds hidden folders to your home folder - these need to be removed after fixing the app. Otherwise, the original problem seems to persist. REMOVE the following two folders after fixing the app per your instructions (Translating to Linux ways):</p>
<p>rm -rf $HOME/.activestate/'komodo ide' rm -rf $HOME/komodoide</p>
<p>Then you can re-run the app, which will act like a brand new install but will not prompt to authenticate.</p>
<h2 id="heading-success-and-thank-you">SUCCESS and Thank You</h2>
<p>The above method(s) fixed the error, and the Komodo IDE runs without a Sign-In screen. All the credit for identifying the required changes goes to those who identified the code fix and created the original steps to change the files in kind.</p>
<p>Thank you to <a target="_blank" href="https://community.komodoide.com/u/careyh">careyh -Carey Hoffman, moderator</a> <a target="_blank" href="https://community.komodoide.com/u/careyh">and Komodo Developer,</a> for offering the fix: <a target="_blank" href="https://community.komodoide.com/t/login-failed-it-appears-you-are-offline-again/5903/12">Lo</a><a target="_blank" href="https://community.komodoide.com/u/careyh">gin failed, it appears you are offline (again) -</a> <a target="_blank" href="https://community.komodoide.com/t/login-failed-it-appears-you-are-offline-again/5903/12">Discussions - Komodo IDE &amp; Edit | Forums</a>.</p>
<p>Thank you again to Keith Schneider for the Linux fix</p>
<h2 id="heading-related-articles-and-resources">Related Articles and Resources</h2>
<ul>
<li><p><a target="_blank" href="https://community.komodoide.com/t/login-failed-it-appears-you-are-offline-again/5903/12">Login failed, it appears you are offline (again) - Discussions - Komodo IDE &amp; Edit | Forums</a>.</p>
</li>
<li><p><a target="_blank" href="https://docs.activestate.com/komodo/12/manual/workspace.html">Komodo 12 Documentation</a></p>
</li>
<li><p><a target="_blank" href="https://docs.activestate.com/komodo/12/manual/workspace.html">Download Notepad++ v</a><a target="_blank" href="https://notepad-plus-plus.org/downloads/v8.7.1/">8.7.1 (stable: auto-update triggered) | Notepad++</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Modern Fortran:  Tricks of the Software Engineering Trade]]></title><description><![CDATA[Modern Fortran: Tricks of the Software Engineering Trade by Damian Rouson
Sometimes I think I'm one of the few programmers routinely using Fortran long after my Engineering studies too many years ago.
As such, I'm pleasantly surprised when a new book...]]></description><link>https://tcltkscripts.com/modern-fortran-tricks-of-the-software-engineering-trade</link><guid isPermaLink="true">https://tcltkscripts.com/modern-fortran-tricks-of-the-software-engineering-trade</guid><category><![CDATA[cursor IDE]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Fri, 31 Mar 2023 01:59:07 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-modern-fortran-tricks-of-the-software-engineering-trade-by-damian-rouson">Modern Fortran: Tricks of the Software Engineering Trade by Damian Rouson</h2>
<p>Sometimes I think I'm one of the few programmers routinely using Fortran long after my Engineering studies too many years ago.</p>
<p>As such, I'm pleasantly surprised when a new book like Modern Fortran: Tricks of the Software Engineering Trade" will be released. I pre-ordered my copy and expect it to arrive sometime in December of 2023.</p>
<p>You're never too old to learn new tricks.</p>
<h2 id="heading-cursorhttpswwwcursorso"><a target="_blank" href="https://www.cursor.so/">cursor</a></h2>
<p>I also found yet another code editor that offers a unique AI feature to help you write your code! Check out <a target="_blank" href="https://www.cursor.so/">cursor</a>!</p>
]]></content:encoded></item><item><title><![CDATA[Add a safe.directory to your repository!]]></title><description><![CDATA[I recently added a new 20GB external hard drive to my system. I added a code directory that contains some of my Tcl/Tk files. After creating and attempting to add a file to the repository, I received the following error:
F:\Code\TclTk\ReadKey>git add...]]></description><link>https://tcltkscripts.com/add-a-safedirectory-to-your-repository</link><guid isPermaLink="true">https://tcltkscripts.com/add-a-safedirectory-to-your-repository</guid><category><![CDATA[Git]]></category><category><![CDATA[Git Commands]]></category><category><![CDATA[Git config]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sat, 11 Mar 2023 18:33:57 GMT</pubDate><content:encoded><![CDATA[<p>I recently added a new 20GB external hard drive to my system. I added a code directory that contains some of my Tcl/Tk files. After creating and attempting to add a file to the repository, I received the following error:</p>
<p><em>F:\Code\TclTk\ReadKey&gt;git add ReadKey.tcl fatal: detected dubious ownership in repository at 'F:/Code/TclTk/ReadKey' 'F:/Code/TclTk/ReadKey' is on a file system that doesnot record ownership To add an exception for this directory, call:</em></p>
<p><code>git config --global --add</code> <a target="_blank" href="http://safe.directory"><code>safe.directory</code></a> <code>F:/Code/TclTk/ReadKey</code></p>
<p>After entering the above command, I can use git to work on my project on my new drive!</p>
<p>git continues to surprise me and it only gets better.</p>
<p>We learn something new every day!</p>
]]></content:encoded></item><item><title><![CDATA[ChatGPT on EDGE]]></title><description><![CDATA[ChatGPT is the latest viral AI technology to help make our lives easier. I've been using ChatGPT for several weeks, and while it's not perfect, I'm still impressed by its features and speed.
Not surprisingly, Microsoft unveiled a new version of its s...]]></description><link>https://tcltkscripts.com/chatgpt-on-edge</link><guid isPermaLink="true">https://tcltkscripts.com/chatgpt-on-edge</guid><category><![CDATA[chatgpt]]></category><category><![CDATA[Bing]]></category><category><![CDATA[Edge Browser]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sun, 12 Feb 2023 16:43:52 GMT</pubDate><content:encoded><![CDATA[<p>ChatGPT is the latest viral AI technology to help make our lives easier. I've been using ChatGPT for several weeks, and while it's not perfect, I'm still impressed by its features and speed.</p>
<p>Not surprisingly, Microsoft unveiled a new version of its search engine Bing with integrated GPT-4, an AI model that powers OpenAI's ChatGPT. After reading "<a target="_blank" href="https://80.lv/articles/microsoft-unveiled-a-chatgpt-powered-version-of-bing/">Microsoft Unveiled a ChatGPT-Powered Version of Bing</a>, I decided to check out the <a target="_blank" href="https://www.bing.com/new?setlang=en">New Bing</a> and went one step further to "<a target="_blank" href="https://www.bing.com/new/fastaccess?form=MY0291&amp;OCID=MY0291">Access the new Bing faster</a>."</p>
<p>The process requires you to use Microsoft's recommended settings and causes you to give up your own.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1676093197420/324e262e-9a14-42d4-884f-a954e2da366d.png" alt class="image--center mx-auto" /></p>
<p>If you agree to sacrifice your current settings, click "Apply" to change your settings.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1676093335701/23b9a2c3-4d93-4fed-b5a7-1de954d6acbd.png" alt class="image--center mx-auto" /></p>
<p>In a few seconds, you're all set to go.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1676093589448/0ae5937b-1ea4-4b9c-844b-3e205833b1ac.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-is-it-worth-it">Is it worth it?</h2>
<p>Time will tell. The integration of AI is an exciting advancement in our everyday tools. Watch <a target="_blank" href="https://www.youtube.com/watch?v=j-jwvzYhCZ0">this video</a> to see what the new "Edge" offers and how it works.</p>
<p>ChatGPT is not perfect. As with everything "software," there are risks, and no one will be liable for the "correctness" of the data it provides.</p>
<h2 id="heading-chatgpt-monetized">ChatGPT Monetized</h2>
<p>On another note, ChatGPT is monetizing! $20.00 a month supposedly provides an "enhanced" ChatGPT experience. Improved "availability" and a "Turbo Mode" optimized for speed (alpha is available to plus users)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1676138123372/d917c040-4047-47b5-8f1b-0c5730105966.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Kinesis TKO Triple-Split Spacebar - Keyboard]]></title><description><![CDATA[Kinesis Gaming TKO Mechanical keyboard
Of all the ways to compress keys onto a keyboard, I wondered why we need such a large spacebar. Unless people are accustomed to using both thumbs, only half or less of the spacebar is required.
After searching t...]]></description><link>https://tcltkscripts.com/kinesis-tko-triple-split-spacebar-keyboard</link><guid isPermaLink="true">https://tcltkscripts.com/kinesis-tko-triple-split-spacebar-keyboard</guid><category><![CDATA[keyboards]]></category><category><![CDATA[keyboard]]></category><category><![CDATA[Kinesis Gaming TKO Mechanical Keyboard]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Fri, 03 Feb 2023 04:34:51 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-kinesis-gaming-tko-mechanical-keyboardhttpsamznto3jvxhyn"><a target="_blank" href="https://amzn.to/3jvXHYn">Kinesis Gaming TKO Mechanical keyboard</a></h2>
<p>Of all the ways to compress keys onto a keyboard, I wondered why we need such a large spacebar. Unless people are accustomed to using both thumbs, only half or less of the spacebar is required.</p>
<p>After searching the web for "split spacebar keyboards," I was pleasantly surprised to discover that keyboards with split spacebars exist, which led me to buy the <a target="_blank" href="https://amzn.to/3jvXHYn">Kinesis Gaming TKO Mechanical Keyboard</a> with a programmable triple-split spacebar.</p>
<p>This is a 60% ultra-compact keyboard featuring PBT keycaps and your choice of either Kailh Linear Red, Kailh Clicky White, or Kailh Tactile Brown key switches. The keyboard has a unique ergonomic tilt feature that enables 0, 5, or 10-degree left-to-right or right-to-left tilting, also known as tenting, and front-to-back or back-to-front tilting.</p>
<p>There is more to the Kinesis keyboard than meets the eye, and I was pleased with the many features they managed to pack into this keyboard. It is made with premium materials, including double-shot PBT keycaps and an anodized aluminum top.</p>
<p>This keyboard was designed with gamers in mind. The hardshell case that accompanies the keyboard also contains a detachable USB-C/USB-A cable, eight extra Kailh switches, a full-size spacebar, and a key switch puller.</p>
<p>The programmable lighting effects are an excellent complement to round out this keyboard's features.</p>
<p>If I have but one complaint about this keyboard, it is the same feature that inspired me to buy it in the first place: the split spacebar. I use my right thumb to strike the spacebar. The center "segment" is too short, and the "segment" to the right is too long. Reversing these two switches would be ideal for my typing style.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675393382409/595667b5-6c9f-41d1-b5fc-9d88624ab631.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675395399443/d1e98709-4d64-4e62-82c1-3d7101279454.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-mdyyd-mechanical-gaming-keyboardhttpsamznto3hz6as0"><a target="_blank" href="https://amzn.to/3Hz6As0"><mark>MDYYD Mechanical Gaming Keyboard</mark></a></h2>
<p>You may also want to consider the <a target="_blank" href="https://amzn.to/3X99XMk">MDYYD Mechanical Gaming Keyboard</a> as a lower-budget alternative. While it doesn't offer PBT keycaps or a hardshell case, it does feature a similar compact layout with ABS keycaps, Gateron Optical switches (Blue, Red, or Brown), and a split spacebar. You will also receive a Keycap Puller and a USB Cable.</p>
<p>You will notice the difference in the size of the spacebar segments!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675396568145/0ec68793-329b-4989-8635-2f9d07a820c2.png" alt class="image--center mx-auto" /></p>
<p>It is perhaps ironic that the spacebar of most keyboards is the key requiring more space than necessary.</p>
]]></content:encoded></item><item><title><![CDATA[Carbon?]]></title><description><![CDATA[I just read an interesting article about the Carbon programming language, an intended successor programming language to C++.
While the article presented interesting content, I was also intrigued to learn about Compiler Explorer (compiler-explorer.com...]]></description><link>https://tcltkscripts.com/carbon</link><guid isPermaLink="true">https://tcltkscripts.com/carbon</guid><category><![CDATA[Carbon]]></category><category><![CDATA[Compiler Explorer]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Thu, 19 Jan 2023 04:31:37 GMT</pubDate><content:encoded><![CDATA[<p>I just read an interesting article about the Carbon programming language, an intended successor programming language to C++.</p>
<p>While the article presented interesting content, I was also intrigued to learn about <a target="_blank" href="https://carbon.compiler-explorer.com/">Compiler Explorer (</a><a target="_blank" href="http://compiler-explorer.com">compiler-explorer.com</a>) where at least 46 programming languages or their variants are supported.</p>
<p>The concept is not new, but I thought it was worth checking out. I definitely like that it supports Assembly, C, and Fortran, my tried and true favourites of years past and present.</p>
<p><a target="_blank" href="https://xania.org/201609/how-compiler-explorer-runs-on-amazon">How it works: Compiler Explorer — Matt Godbolt’s blog (</a><a target="_blank" href="http://xania.org">xania.org</a><a target="_blank" href="https://xania.org/201609/how-compiler-explorer-runs-on-amazon">)</a></p>
<p>As of 2023-Jan-18:</p>
<ol>
<li><p>Ada</p>
</li>
<li><p>Analysis</p>
</li>
<li><p>Assembly</p>
</li>
<li><p>C</p>
</li>
<li><p>C#</p>
</li>
<li><p>C++</p>
</li>
<li><p>C++ (Circle)</p>
</li>
<li><p>C++ for OpenCL</p>
</li>
<li><p>CIRCT</p>
</li>
<li><p>Clean</p>
</li>
<li><p>Cpp2-cppfront</p>
</li>
<li><p>Cppx</p>
</li>
<li><p>Cppx-Blue</p>
</li>
<li><p>Cppx-Gold</p>
</li>
<li><p>Crystal</p>
</li>
<li><p>D</p>
</li>
<li><p>Dart</p>
</li>
<li><p>Erlang</p>
</li>
<li><p>F#</p>
</li>
<li><p>Fortran</p>
</li>
<li><p>Go</p>
</li>
<li><p>Haskell</p>
</li>
<li><p>HLSL</p>
</li>
<li><p>Hook</p>
</li>
<li><p>ispc</p>
</li>
<li><p>Jakt</p>
</li>
<li><p>Java</p>
</li>
<li><p>Julia</p>
</li>
<li><p>Kotlin</p>
</li>
<li><p>LLVM IR</p>
</li>
<li><p>MLIR</p>
</li>
<li><p>Nim</p>
</li>
<li><p>OCaml</p>
</li>
<li><p>OpenCL C</p>
</li>
<li><p>Pascal</p>
</li>
<li><p>Pony</p>
</li>
<li><p>Python</p>
</li>
<li><p>Racket</p>
</li>
<li><p>Ruby</p>
</li>
<li><p>Rust</p>
</li>
<li><p>Scala</p>
</li>
<li><p>Solidity</p>
</li>
<li><p>Swift</p>
</li>
<li><p>TypeScript Native</p>
</li>
<li><p>Visual Basic</p>
</li>
<li><p>Zig</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Speed Typing]]></title><description><![CDATA[Some would say that I have a "thing" for keyboards, and I would have to agree. I learned to type in grade nine and haven't stopped keyboarding since. After delivering more than my fair share of newspapers, I finally saved enough money to buy my typew...]]></description><link>https://tcltkscripts.com/speed-typing</link><guid isPermaLink="true">https://tcltkscripts.com/speed-typing</guid><category><![CDATA[typing]]></category><category><![CDATA[Typing test, test, typing, online computer typing test, ]]></category><category><![CDATA[keyboards]]></category><category><![CDATA[keyboard]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Mon, 02 Jan 2023 04:35:33 GMT</pubDate><content:encoded><![CDATA[<p>Some would say that I have a "thing" for keyboards, and I would have to agree. I learned to type in grade nine and haven't stopped keyboarding since. After delivering more than my fair share of newspapers, I finally saved enough money to buy my typewriter in grade eleven.</p>
<p>According to my teacher, my typing skills were above average. I could quickly type over 80 words per minute on a mechanical machine, and my typing speed cleared 100 words per minute on an electric typewriter. I've had a passion for improving my typing speed ever since.</p>
<p>Many different factors may influence your typing speed, but the fundamental elements that matter most are:</p>
<ol>
<li><p>Posture:</p>
<ol>
<li><p>Feet flat on the floor,</p>
</li>
<li><p>Wrists in a neutral position (avoid lifting or dropping your wrists),</p>
</li>
<li><p>Forearms at 90 to 110 degrees,</p>
</li>
<li><p>Back straight,</p>
</li>
<li><p>Head up, and</p>
</li>
<li><p>Eyes straight - Top of the screen should be at eye level</p>
</li>
</ol>
</li>
<li><p>Touch Typing:</p>
<ol>
<li><p>Learn to type using all of your fingers. This is the best and fastest means of typing. While some have become proficient using just a few fingers, they seldom achieve the speeds possible through touch typing.</p>
</li>
<li><p>Keep your fingers positioned on or over the home row. The fingers of your left and right hand should hover over the letters asdf and jkl; respectively.</p>
</li>
</ol>
</li>
<li><p>Keyboard:</p>
<ol>
<li><p>Treat your fingers to a premium keyboard. Many factors define a premium keyboard, and many of them carry a fairly hefty price tag.</p>
</li>
<li><p>I own many different keyboards in various styles. Still, my favourites are the <a target="_blank" href="https://amzn.to/3GyQ9ws">Logitech Craft keyboard</a> and <a target="_blank" href="https://amzn.to/3WBUTqN">Logitech MX Keys Advanced Wireless Illuminated</a> keyboards, as they both support my workflow across multiple computers and with my MX Master 3S mouse.</p>
</li>
<li><p>As a programmer, my daily driver is the <a target="_blank" href="https://amzn.to/3Z2hjTS">Happy Hacking Keyboard</a>, and the reasons why are worthy of a separate post.</p>
</li>
<li><p>Preventive maintenance: keep your keyboard clean!</p>
<ol>
<li><p>Purchase a cover to prevent harmful spills from damaging your keyboard.</p>
</li>
<li><p>Store your keyboard in a carrying case when travelling.</p>
</li>
</ol>
</li>
<li><p>Remember, if you can't type, the best keyboard in the world won't help you.</p>
</li>
</ol>
</li>
<li><p>Ergonomics:</p>
<ol>
<li><p>Keyboard layout: QWERTY versus DVORAK</p>
</li>
<li><p>Key Switches:</p>
<ol>
<li><p>Type: Mechanical, Optical,</p>
</li>
<li><p>Travel: Pre-Travel / Full Travel</p>
</li>
<li><p>Actuation Force</p>
</li>
</ol>
</li>
<li><p>Tilt: positive/negative - left/right - both</p>
</li>
</ol>
</li>
<li><p>Practice:</p>
<ul>
<li><p>Although I type daily as part of my regular job duties, online speed typing exercises are part of my daily routine. You may want to try some of these for yourself:</p>
<ol>
<li><p><a target="_blank" href="http://10FastFingers.com">10FastFingers.com</a> <a target="_blank" href="https://10fastfingers.com/">- Typing Test, Competitions, Practice &amp; Typing Games</a></p>
</li>
<li><p><a target="_blank" href="https://www.nitrotype.com/">Nitro Type | Competitive Typing Game | Race Your Friends</a></p>
</li>
<li><p><a target="_blank" href="https://www.keybr.com/">Typing Practice (</a><a target="_blank" href="http://keybr.com">keybr.com</a><a target="_blank" href="https://www.keybr.com/">)</a></p>
</li>
<li><p><a target="_blank" href="https://monkeytype.com/">Monkeytype</a></p>
</li>
<li><p><a target="_blank" href="http://Typing.com">Typing.com</a> (Beginner to Advanced)</p>
</li>
</ol>
</li>
<li><p>The feedback following each typing exercise will help to develop your typing skills so that you can focus on practices that will serve you best.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1672592202401/9b6d043e-07dc-4cb0-ae02-edce134a8e93.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
</li>
</ol>
<p>The exercises are not a substitute for the real world, but they will help you perform better.</p>
]]></content:encoded></item><item><title><![CDATA[TCL/Tk 8.6.13 - Update]]></title><description><![CDATA[The holiday season is rapidly approaching and I've been busy wrapping up what has proven to be a very challenging year - in a good way! As for Tcl/Tk, the updates continue.
Magicsplat Tcl/Tk for Windows (8.6.13) is now available for download from Sou...]]></description><link>https://tcltkscripts.com/tcltk-8613-update</link><guid isPermaLink="true">https://tcltkscripts.com/tcltk-8613-update</guid><category><![CDATA[Tcl/Tk]]></category><category><![CDATA[Tcl]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sun, 18 Dec 2022 23:05:10 GMT</pubDate><content:encoded><![CDATA[<p>The holiday season is rapidly approaching and I've been busy wrapping up what has proven to be a very challenging year - in a good way! As for Tcl/Tk, the updates continue.</p>
<p><a target="_blank" href="HTTPS://www.magicsplat.com/tcl-installer/index.html#downloads">Magicsplat Tcl/Tk for Windows</a> (8.6.13) is now available for download from <a target="_blank" href="HTTPS://sourceforge.net/projects/magicsplat/files/magicsplat-tcl/">Sourceforge</a>. This update includes tclfpdf 1.5.1 and the following packages have been updated:</p>
<ul>
<li><p>cffi 1.2.0</p>
</li>
<li><p>itcl 4.2.3</p>
</li>
<li><p>mentry 3.16</p>
</li>
<li><p>nsf 2.4</p>
</li>
<li><p>rbc 0.1.2</p>
</li>
<li><p>scrollutil 1.17</p>
</li>
<li><p>sqlite3 3.40.0</p>
</li>
<li><p>tablelist 6.20</p>
</li>
<li><p>TDBC 1.1.5</p>
</li>
<li><p>tdom 0.9.3</p>
</li>
<li><p>thread 2.8.8</p>
</li>
<li><p>tkdnd 2.9.2</p>
</li>
<li><p>twapi 4.7.2</p>
</li>
<li><p>wcb 3.8</p>
</li>
</ul>
<p>Tcl/Tk doesn't receive the same level of excitement as some of the more prominent programming languages and the releases arrive with little fanfare.</p>
<p>I use ActiveState's Komodo IDE for writing the majority of my Tcl/Tk applications and was surprised to learn that it will become an open source project going forward. Updates have been waning for quite some time, and it is perhaps the next best move on their part.</p>
<p>Until next time ...</p>
]]></content:encoded></item><item><title><![CDATA[Qwerkywriter S Keyboard]]></title><description><![CDATA[Disclaimer:  I may earn a commission for items purchased using links in this article, and thank you in advance for your support.
As a programmer, I spend hours at a time writing code.  While I prefer my Happy Hacking Keyboard for coding, I am particu...]]></description><link>https://tcltkscripts.com/qwerkywriter-s-keyboard</link><guid isPermaLink="true">https://tcltkscripts.com/qwerkywriter-s-keyboard</guid><category><![CDATA[typewriter]]></category><category><![CDATA[Qwerkywriter]]></category><category><![CDATA[keyboard]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sat, 26 Nov 2022 20:22:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1669489304090/ntkpcSPY_.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Disclaimer:  I may earn a commission for items purchased using links in this article, and thank you in advance for your support.</p>
<p>As a programmer, I spend hours at a time writing code.  While I prefer my Happy Hacking Keyboard for coding, I am particularly fond of my Qwerkywriter S keyboard.</p>
<p>The <a target="_blank" href="https://amzn.to/3AMlY1C">Qwerkywriter S Keyboard</a> brings a touch of nostalgia to my desktop.  I originally bought this keyboard for its pleasantly unique aesthetic.  It boasts a scratch-resistant all-aluminum chassis, two-piece typewriter-inspired keycaps, a programmable macro return bar, and an integrated tablet stand which accommodates my iPad Pro quite nicely.</p>
<p>The keyboard can be set to sleep after 10, 20, or 30 minutes of inactivity to conserve power!  Setting the sleep timer to "off" is also an option and not recommended.  The sleep timer has no effect if you use a wired USB connection.</p>
<p><a target="_blank" href="https://amzn.to/3AMlY1C"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669478076981/CBgRtLt7d.jpg" alt="Qwirkywriter S Resized.jpg" class="image--center mx-auto" /></a></p>
<p>Weighing in at 2.75 lbs (1.25 kgs), the <a target="_blank" href="https://amzn.to/3AMlY1C">Qwerkywriter keyboard</a> is heavier than most and not necessarily designed to fall into my portable category any time soon.  However, the weight of the keyboard, coupled with the rubber feet on its underside, makes for a solid and stable presence.</p>
<h2 id="heading-documentation-and-setup">Documentation and Setup</h2>
<p>Please read the documentation to set up the keyboard and familiarize yourself with all of its features.  Setting up the Bluetooth connections is slightly different than you would expect compared to other multi-device keyboards.  However, switching between devices is simply a matter of using the applicable "fn" + "number" key combination, where the number is either 1, 2, or 3 to match your selected device.</p>
<h2 id="heading-features">Features</h2>
<ul>
<li>75% keyboard layout.</li>
<li>Left and right scroll knobs provide scrolling and volume controls, respectively.</li>
<li>Cherry Blue MX clicky switches.  Not quite the same as the clacking we would expect from a real typewriter, but the clicky switch is an admirable attempt to replicate the experience.</li>
<li>Connect up to three devices using Bluetooth.</li>
<li>or use the supplied braided USB cable to connect in Wired USB mode with NKRO support.</li>
<li>Rechargeable battery that lasts up to 4 weeks, depending on your usage.</li>
<li>Programmable "carriage return" macro function.  While the default Enter key behaviour is apropos, pressing "fn" + "carriage return" can record up to, including modifier keys.  Press the "fn" key when finished, and the macro is ready to run.</li>
<li>NKEY mode provides a faster response time when keys are typed and is available in both wired and Bluetooth modes.  However, enabling this feature consumes more power, and you will have to charge your keyboard more frequently.</li>
<li>Windows, MacOS, iOS, and Android compatible.</li>
<li>12-month limited warranty to the original purchaser.  An extended 3-year warranty is available for purchase.</li>
</ul>
<h2 id="heading-built-for-looks-and-speed">Built for Looks and Speed</h2>
<p>I'm primarily a programmer and always a writer.  As for speed typing, this keyboard doesn't slow me down.  I tested my typing speed at <a target="_blank" href="https://10fastfingers.com/typing-test/english/">10fastfingers.com</a> using the <a target="_blank" href="https://amzn.to/3AMlY1C">Qwerkywrite S keyboard</a> in NKEY mode.  I was pleasantly surprised that my typing speed is at least as good as with my other high-end keyboards.</p>
<p>Switches can make or break your experience with a keyboard.</p>
<h2 id="heading-no-insert-key">No INSERT Key</h2>
<p>Of all the great features this keyboard offers, there is no INSERT key.  Of course, the traditional vintage typewriter never had an insert key either, and if it did, White Out might never have been invented.</p>
<p>However, some editors allow you to overwrite existing text which is toggled by pressing the insert key.  Other applications also take advantage of the insert key.  Some of these same applications allow you to map a different key to achieve the same functionality the insert key offers.</p>
<h2 id="heading-ergonomics">Ergonomics</h2>
<p>There is no tilt adjustment feature to adjust the keyboard's angle, and I would suggest they aren't necessary.  My desk has a drop-down front pull-out drawer that serves as my keyboard tray and allows me to work with an ergonomically friendly posture. </p>
<p>For this same reason, I don't require a wrist pad, as my wrists maintain a neutral position while typing.  If you're using this keyboard on your desktop and resting your forearms against the front lip of your desk, I would recommend getting a wrist rest as well.</p>
<h2 id="heading-final-thoughts">Final Thoughts</h2>
<p>The <a target="_blank" href="https://amzn.to/3AMlY1C">Qwerkywriter Keyboard</a> is a high-end keyboard worth every penny.  The look and feel of this keyboard bring back memories from my early teenage years of learning to type in high school.</p>
<p>The build and execution of the features of the <a target="_blank" href="https://amzn.to/3AMlY1C">Qwerkywriter S Keyboard</a> are exceptional and present excellent value for the money.  I highly recommend the Qwerkywriter S keyboard to anyone looking to add that vintage look and feel to their home or office space.</p>
<h2 id="heading-related-articles-and-resources">Related Articles and Resources</h2>
<ul>
<li><a target="_blank" href="https://www.qwerkywriter.com/pages/new-user-setup-getting-started">Quirkywriter:  New User Setup / Getting Started</a></li>
<li><a target="_blank" href="http://www.10fastfingers.com">10fastfingers.com</a></li>
<li><a target="_blank" href="http://www.keybr.com">keybr.com</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Updating Linux on Windows]]></title><description><![CDATA[Running Ubuntu Linux on your Windows machine?
Stay Up to Date
Here's what to do to ensure you have the latest packages installed on your machine.  Run the following commands and enter your password when prompted:
1.  Check for new updates.
sudo apt u...]]></description><link>https://tcltkscripts.com/updating-linux-on-windows</link><guid isPermaLink="true">https://tcltkscripts.com/updating-linux-on-windows</guid><category><![CDATA[Tcl/Tk]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Windows]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sun, 06 Nov 2022 21:28:02 GMT</pubDate><content:encoded><![CDATA[<p>Running Ubuntu Linux on your Windows machine?</p>
<h2 id="heading-stay-up-to-date">Stay Up to Date</h2>
<p>Here's what to do to ensure you have the latest packages installed on your machine.  Run the following commands and enter your password when prompted:</p>
<h3 id="heading-1-check-for-new-updates">1.  Check for new updates.</h3>
<pre><code>sudo apt update
</code></pre><h3 id="heading-2-list-of-upgradeable-packages">2. List of upgradeable packages.</h3>
<pre><code>apt list --upgradable
</code></pre><h3 id="heading-3-install-the-updates">3. Install the updates</h3>
<pre><code>sudo apt upgrade
</code></pre><p>Three simple commands are all it takes.    I'm running Ubuntu 20.04.5 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64) on my Windows machine.</p>
]]></content:encoded></item><item><title><![CDATA[Tcl/Tk Tools]]></title><description><![CDATA[You may not believe this, but ...
I purchased a copy of Tcl/Tk Tools by Mark Harrison and other contributors (with a foreword by John Ousterhout), O'Reilly & Associates, Inc. (August 1997 - First Edition).  ISBN:  1-56592-218-2, 653 Pages.
Why?
As th...]]></description><link>https://tcltkscripts.com/tcltk-tools</link><guid isPermaLink="true">https://tcltkscripts.com/tcltk-tools</guid><category><![CDATA[Tcl/Tk Tools]]></category><category><![CDATA[Tcl/Tk]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Fri, 28 Oct 2022 00:52:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/xrVDYZRGdw4/upload/v1666918229677/fyGBeyc1O.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-you-may-not-believe-this-but">You may not believe this, but ...</h2>
<p>I purchased a copy of Tcl/Tk Tools by Mark Harrison and other contributors (with a foreword by John Ousterhout), O'Reilly &amp; Associates, Inc. (August 1997 - First Edition).  ISBN:  1-56592-218-2, 653 Pages.</p>
<h2 id="heading-why">Why?</h2>
<p>As the book title suggests, Tcl/Tk Tools documents the most popular (at the time) and robust extensions written by the extension authors themselves.</p>
<p>Understanding how to use the extensions also provides additional insights into using Tcl/Tk as well.  Topics of interest include the display of 3D graphics with rich textures (TSIPP), Network over sockets and remote procedure calls (Tcl-DP), and Embed Tk calls in C programs (ET), to name a few.</p>
<p>Years ago, I was reminded to always "Remember your roots."  Tcl/Tk may be dated in many respects, but delving into the history of a programming language offers a glimpse into the many tools we enjoy today.</p>
<h2 id="heading-tcltk-tools-software">Tcl/Tk Tools - Software</h2>
<p>I'll be spending a few weeks combing over the information in this book, and I finally get to blow the dust off of my CD-ROM drive to load the sources and binaries for Tcl/Tk core and the extensions documented in the book.</p>
<h2 id="heading-business-reply-mail">Business Reply Mail</h2>
<p>O'Reilly would like to hear from you!  I wonder how the mailroom at O'Reilly &amp; Associates would react if I mailed them the "Business Reply Mail" card from the back of the book.</p>
]]></content:encoded></item><item><title><![CDATA[Windows Terminal Preview 1.16]]></title><description><![CDATA[Microsoft's Windows Terminal has become a second home on my machine, especially since I've been writing and running more code on Windows Subsystem for Linux.  Microsoft's recent release of Windows Terminal Preview 1.16 introduces some nice new touche...]]></description><link>https://tcltkscripts.com/windows-terminal-preview-116</link><guid isPermaLink="true">https://tcltkscripts.com/windows-terminal-preview-116</guid><category><![CDATA[windows terminal]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Wed, 21 Sep 2022 03:12:35 GMT</pubDate><content:encoded><![CDATA[<p><a href="https://apps.microsoft.com/store/detail/windows-terminal-preview/9N8G5RFZ9XK3?hl=en-ca&amp;gl=ca">Microsoft's Windows Terminal</a> has become a second home on my machine, especially since I've been writing and running more code on Windows Subsystem for Linux.  Microsoft's recent release of Windows Terminal Preview 1.16 introduces some nice new touches.</p>
<p>You can tailor your terminal sessions using the various settings options available.  Individual profiles can also be tailored to your specific requirements.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1663729635904/38S_VwKeX.png" alt="image.png" /></p>
<h2 id="heading-more-information">More Information ...</h2>
<p>To learn more about Windows Terminal Preview, visit the <a href="https://apps.microsoft.com/store/detail/windows-terminal-preview/9N8G5RFZ9XK3?hl=en-ca&amp;gl=ca">Microsoft App Store.</a></p>
<h2 id="heading-get-then-install-the-app">Get, then Install the App</h2>
<p>Click "GET" on the Microsoft App Store page to download Windows Terminal Preview to your machine.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1663724654720/Q7CIUEvt_.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1663724703381/DOskaNEMO.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1663724823841/suatcC3lr.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1663724857124/0sUUBIUc3.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1663725211679/yWDN46aye.png" alt="image.png" class="image--center mx-auto" /></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/8gw0rXPMMPE">https://youtu.be/8gw0rXPMMPE</a></div>
<h1 id="heading-related-articles-and-resources">Related Articles and Resources</h1>
<ul>
<li><a href="https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-16-release/">Windows Terminal Preview 1.16 Release</a> by Kayla Cinnamon, September 13, 2022, on microsoft.com.</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Komodo IDE]]></title><description><![CDATA[I use ActiveState's Komodo IDE exclusively for writing, testing, and debugging my Tcl/Tk code.  However, once I've set up the environment, I want to execute my code without navigating through the Debugging Options window.

To skip this dialogue windo...]]></description><link>https://tcltkscripts.com/komodo-ide</link><guid isPermaLink="true">https://tcltkscripts.com/komodo-ide</guid><category><![CDATA[Tcl/Tk]]></category><category><![CDATA[#Komodo IDE]]></category><category><![CDATA[ActiveState]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sat, 10 Sep 2022 04:28:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1667350202297/gRlE2lAj6.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I use ActiveState's Komodo IDE exclusively for writing, testing, and debugging my Tcl/Tk code.  However, once I've set up the environment, I want to execute my code without navigating through the Debugging Options window.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662695319132/XPAJBDgfp.png" alt="image.png" class="image--center mx-auto" /></p>
<p>To skip this dialogue window, we need to change our preferences.  </p>
<ul>
<li>Click the EDIT tab on the main menu.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662695500242/JxSXE404e.png" alt="image.png" class="image--center mx-auto" /></p>
<ul>
<li>Click PREFERENCES, and a dialogue box similar to the one shown below will appear:</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662695851061/LuhDpuKrC.png" alt="image.png" class="image--center mx-auto" /></p>
<ul>
<li>Click the Debugger option in the sidebar</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662695913108/xpMvQlwoW.png" alt="image.png" class="image--center mx-auto" /></p>
<ul>
<li>Click on the Checkbox next to "Skip debugging options dialogue when launching."</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662696516977/_NLzeS8Oq.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662696083579/VqqzjieGi.png" alt="image.png" class="image--center mx-auto" /></p>
<p>If checked, the "Debugging Options" dialogue will NOT appear, and your code will execute immediately following the press of the "Play" button or the F5 key.</p>
<ul>
<li>Click the APPLY button on the bottom right corner of the screen.</li>
<li><p>Click OK to return to the main IDE window.  </p>
</li>
<li><p>Now, when you press the PLAY button, press the F5 function key, or Debug &gt; Go/Continue from the main menu, your code will start running immediately.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Me and My Arduino]]></title><description><![CDATA[Introduction
The more I learn about MQTT, the more intrigued I become.  I recently purchased an Arduino Starter Kit containing an Arduino Uno R3, a book with 15 projects, and a variety of sensors, resistors, LEDs and more.  I'm anxious to develop an ...]]></description><link>https://tcltkscripts.com/me-and-my-arduino</link><guid isPermaLink="true">https://tcltkscripts.com/me-and-my-arduino</guid><category><![CDATA[arduino]]></category><category><![CDATA[arduinouno]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Thu, 08 Sep 2022 05:10:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/0IZC2kYhYIo/upload/v1662525938897/RaP6zqtc3.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>The more I learn about MQTT, the more intrigued I become.  I recently purchased an Arduino Starter Kit containing an Arduino Uno R3, a book with 15 projects, and a variety of sensors, resistors, LEDs and more.  I'm anxious to develop an MQTT project and thought it best to start with minimal investment at this time.</p>
<p>A quick search of the Library Manager suggests several MQTT libraries are available:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661735990800/la6Sw8D3f.png" alt="image.png" class="image--center mx-auto" /></p>
<h2 id="heading-arduino-ide">Arduino IDE</h2>
<p>Visit the <a target="_blank" href="https://www.arduino.cc/en/software#experimental-software">Arduino Software page</a> to download the stable (1.8.19), latest release candidate (2.0.0-rc9.3) or nightly builds.</p>
<p>I highly recommend downloading the <a target="_blank" href="https://www.arduino.cc/en/software#experimental-software">Arduino IDE 2.0.0 (rc9.3)</a> directly from the Arduino.cc website.  As part of the installation process, you will be prompted to provide permission to download libraries to your machine as well, and there are many of them.</p>
<p>Version 2.0.0 is more intuitive and user friendly. </p>
<h2 id="heading-getting-started-arduinoccstarterkit">Getting Started - arduino.cc/starterkit</h2>
<p><a target="_blank" href="https://www.arduino.cc/en/software">Arduino Software - Downloads</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661729307194/GIkfdLquA.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661729383541/G3l2rj4Xm.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661729409988/T283zV7ec.png" alt="image.png" class="image--center mx-auto" /></p>
<h2 id="heading-windows-security">Windows Security</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661729534025/wdBYP3J8h.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661729562414/Yfu7TUbxK.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661729587110/D0rAvhsWZ.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661729661186/x7MtBVe4x.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661731084175/AnELrJEto.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661731102513/gtB40PyCU.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661724274810/EbWMLxNUT.png" alt="image.png" class="image--center mx-auto" /></p>
<p><a target="_blank" href="https://apps.microsoft.com/store/detail/arduino-ide/9NBLGGH4RSD8?hl=en-ca&amp;gl=CA">Windows in Store App</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661724308215/aiYTFZjAf.png" alt="image.png" class="image--center mx-auto" /></p>
<p>![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661723491720/EE9w5UCSp.png align="center"</p>
<h2 id="heading-wifi101wifinina-firmwarecertificates-updater">WiFi101/WiFiNINA Firmware/Certificates Updater</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661732149663/cbxqKmcVG.png" alt="image.png" class="image--center mx-auto" /></p>
<h2 id="heading-troubleshooting">Troubleshooting</h2>
<p>I plugged in my Arduino using the USB port and attempted to connect only to receive this error:  "Board at null is not available."</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733265116/rAZcdpoG8.png" alt="image.png" class="image--center mx-auto" /></p>
<p>Device Manager
Windows &gt; Control Panel &gt; Device Manager</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733807384/JuWfNRqZ0.png" alt="image.png" class="image--center mx-auto" /></p>
<p>Clicking on the Arduino Uno (COM3)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733748004/7m589lHDq.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733868371/p6njGG6Zr.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733889978/KeQFwNggn.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733923004/i8TAOtRHk.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733960187/gvF99gCO9.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661733976001/gug9QN_0u.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661734119996/_9sLp5x0a.png" alt="image.png" class="image--center mx-auto" /></p>
<h1 id="heading-errors">ERRORS!</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661734609791/DK6cjBzgA.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661734756246/6_7dDSptV.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661735429774/IufoYegZ2.png" alt="image.png" class="image--center mx-auto" /></p>
<p>Right Click and Update the Drivers.  Close all windows, reboot your machine.</p>
<h2 id="heading-testing-running-the-blink-sketch">TESTING - Running the BLINK sketch</h2>
<p>It worked!</p>
<h2 id="heading-libraries">Libraries</h2>
<p>http://www.arduino.cc/en/Guide/Libraries</p>
<p>Code Online - </p>
<p>https://www.arduino.cc/en/Guide</p>
<p>https://www.arduino.cc/reference/en/libraries/mqtt/</p>
<blockquote>
<p><a target="_blank" href="https://github.com/256dpi/arduino-mqtt">Documentation (GitHub)</a></p>
</blockquote>
<h1 id="heading-getting-help">Getting Help</h1>
<ul>
<li><a target="_blank" href="HTTP://www.forum.arduino.cc">Arduino Forum</a></li>
</ul>
<p>-<a target="_blank" href="arduino.cc/ide">Arduino Programming Environment (IDE)</a></p>
<ul>
<li><p><a target="_blank" href="http://www.arduino.cc/tutorial">Arduino Tutorial</a></p>
</li>
<li><p><a target="_blank" href="http://www.arduino.cc/examples">Arduino Language</a></p>
</li>
</ul>
<h2 id="heading-industry-40">Industry 4.0</h2>
<p>Industrial scale </p>
<ul>
<li><p><a target="_blank" href="https://store-usa.arduino.cc/products/portenta-x8">Portenta X8 (with Linux)</a> ($239.00)</p>
</li>
<li><p><a target="_blank" href="https://store-usa.arduino.cc/products/portenta-max-carrier?pr_prod_strat=copurchase&amp;pr_rec_id=308e25968&amp;pr_rec_pid=7034478559439&amp;pr_ref_pid=7011350839503&amp;pr_seq=uniform">Portenta Max Carrier</a> ($335.00)</p>
</li>
<li><p><a target="_blank" href>Arduino Portenta Vision Shield - Ethernet</a> ($51.80)</p>
</li>
<li><p><a target="_blank" href>Portenta H7</a> ($113.90)</p>
</li>
<li><p><a target="_blank" href>Portenta CAT.M1/NB IoT GNSS Shield</a> ($87.60)</p>
</li>
<li><p><a target="_blank" href>Arduino Portenta Breakout</a> ($55.20)</p>
</li>
</ul>
<h1 id="heading-purchasing-arduino-products">Purchasing Arduino Products</h1>
<p>You will be pleased to learn that you can order directly from the Arduino site, and you can choose your shipping country.  As for me, it's good to know Arduino Online Shop ships to Canada!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1661712154919/sez44JPwd.png" alt="image.png" class="image--center mx-auto" /></p>
<h2 id="heading-related-articles-and-resources">Related Articles and Resources</h2>
<ul>
<li><a target="_blank" href="https://venturebeat.com/product-comparisons/best-arduino-board-reviews/">Best Arduino Board 2022 - 6 Arduino Boards Reviews</a></li>
</ul>
<h2 id="heading-my-hardware">My Hardware</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1662604996547/Y5ZJd7XSx.png" alt="image.png" class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Docker - A Must Have]]></title><description><![CDATA[You begin to wonder why specific topics continue to appear on your screen time and again.  Docker and Kubernetes seemingly appear whenever I start searching and delving deeper into a subject.
I understand why now that I've been playing with Docker fo...]]></description><link>https://tcltkscripts.com/docker-a-must-have</link><guid isPermaLink="true">https://tcltkscripts.com/docker-a-must-have</guid><category><![CDATA[Docker]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Fri, 19 Aug 2022 01:40:20 GMT</pubDate><content:encoded><![CDATA[<p>You begin to wonder why specific topics continue to appear on your screen time and again.  Docker and Kubernetes seemingly appear whenever I start searching and delving deeper into a subject.</p>
<p>I understand why now that I've been playing with Docker for a while.  It's a fantastic ecosystem of its own.</p>
<p>Download Docker and create an account.  Docker is free for individuals, and you can upgrade your account from "Personal" to one of the paid tiers, including Pro, Team, and Business.</p>
<p>Once you've installed Docker, run the Docker Desktop to manage images, containers, volumes, and development environments.</p>
<p>It is a simple matter to download a docker image and create a container.  Open a terminal session on your machine and enter the following command at the prompt:  <code>docker pull ubuntu</code>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660787693560/yol41UjC_.png" alt="image.png" class="image--center mx-auto" /></p>
<p>When you sign in to your docker account, you can choose from a large variety of "images" to run on your machine.   Click on the "Explore" option on the main menu and enter "python" in the search bar.  A selection of images appears.</p>
<p>Click on the "python (Docker Official Image)," and a new page appears where you'll find instructions for setting up and using this image on your machine.</p>
<p>In a terminal, type:  <code>docker pull python</code> as pictured below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660823219705/glpPqhoRS.png" alt="image.png" class="image--center mx-auto" /></p>
<p>Crystal is one of my more recent language interests, so I downloaded an image in kind.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660794943194/bVeXfxWY-.png" alt="image.png" class="image--center mx-auto" /></p>
<h1 id="heading-docker-desktop">Docker Desktop</h1>
<p>We can immediately see the Images on our Docker Desktop.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660823322298/YFCde6QCM.png" alt="image.png" class="image--center mx-auto" /></p>
<p>To use an image, hover over the image and click run:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660823431420/tOdegX2wp.png" alt="image.png" class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660823641105/QkKBgebQx.png" alt="image.png" /></p>
<p>When we click "run," several symbols appear terminal, pause, refresh, stop, and trash.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660823667975/8cesLFaFP.png" alt="image.png" /></p>
<p>We can access our Python image if we click on the terminal button.  At the "#" prompt, type <code>python</code> and a python terminal session should start as pictured below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660823938151/mh85l7l5J.png" alt="image.png" /></p>
<p>We're all set and good to go.</p>
<h1 id="heading-related-articles-and-resources">Related Articles and Resources</h1>
<p><a target="_blank" href="https://dev.to/techworld_with_nana/full-docker-course-free-4hl3">Free Docker Complete Course (3-Hour)</a>.  <a target="_blank" href="https://youtu.be/3c-iBn73dDE">Video</a></p>
<ul>
<li><a target="_blank" href="https://dzone.com/articles/docker-explained-an-introductory-guide-to-docker">Docker Explained - An Introductory Guide to Docker</a> by Sahiti Kappagantula (October 19, 2019).</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[ImHex - Hex Editor]]></title><description><![CDATA[As a developer, I have created a number of binary utilities to support my applications.  However, today I discovered ImHex on daily.dev and I was impressed enough to want to share it with anyone who has the need for more than a simple Hex editor.  
S...]]></description><link>https://tcltkscripts.com/imhex-hex-editor</link><guid isPermaLink="true">https://tcltkscripts.com/imhex-hex-editor</guid><category><![CDATA[hex ]]></category><category><![CDATA[ImHex]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Mon, 01 Aug 2022 11:00:12 GMT</pubDate><content:encoded><![CDATA[<p>As a developer, I have created a number of binary utilities to support my applications.  However, today I discovered <a target="_blank" href="https://imhex.werwolv.net/">ImHex</a> on <a target="_blank" href="https://app.daily.dev/posts/_wmqBKkqk">daily.dev</a> and I was impressed enough to want to share it with anyone who has the need for more than a simple Hex editor.  </p>
<p>So, check out the <a target="_blank" href="https://app.daily.dev/posts/_wmqBKkqk">link</a> and discover what ImHex can do for you and say hello to binary bliss!</p>
]]></content:encoded></item><item><title><![CDATA[3rd Party Software "Tooling"]]></title><description><![CDATA[I am seldom impressed when an application requires a third-party software tool to make it work.  There, I said it.
Why?  The explanation is simple.  You can't control the destiny of a third-party software provider.]]></description><link>https://tcltkscripts.com/3rd-party-software-tooling</link><guid isPermaLink="true">https://tcltkscripts.com/3rd-party-software-tooling</guid><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sat, 23 Jul 2022 12:44:19 GMT</pubDate><content:encoded><![CDATA[<p>I am seldom impressed when an application requires a third-party software tool to make it work.  There, I said it.</p>
<p>Why?  The explanation is simple.  You can't control the destiny of a third-party software provider.</p>
]]></content:encoded></item><item><title><![CDATA[Syntax Errors and "Errata" Moments]]></title><description><![CDATA[I have Ubuntu Linux 22.04 installed on my Windows machine.  I was working through an example from a book that required running the "time" command.  However, the syntax was wrong.  Since time is not a command I use frequently, I wanted to understand t...]]></description><link>https://tcltkscripts.com/syntax-errors-and-errata-moments</link><guid isPermaLink="true">https://tcltkscripts.com/syntax-errors-and-errata-moments</guid><category><![CDATA[syntax]]></category><category><![CDATA[errors]]></category><category><![CDATA[learning]]></category><dc:creator><![CDATA[Redge Shepherd]]></dc:creator><pubDate>Sat, 23 Jul 2022 12:19:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/XWar9MbNGUY/upload/v1658578700045/AJ9uzhNkn.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have Ubuntu Linux 22.04 installed on my Windows machine.  I was working through an example from a book that required running the "time" command.  However, the syntax was wrong.  Since <code>time</code> is not a command I use frequently, I wanted to understand the available options and why the syntax failed.</p>
<p>The terminal command session and outputs below are self-explanatory:</p>
<pre><code>$ <span class="hljs-keyword">type</span> <span class="hljs-operator">-</span>a time
time <span class="hljs-keyword">is</span> a shell keyword
time <span class="hljs-keyword">is</span> <span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time
time <span class="hljs-keyword">is</span> <span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time

$ <span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time
Usage: <span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time [<span class="hljs-operator">-</span>apvV] [<span class="hljs-operator">-</span>f format] [<span class="hljs-operator">-</span>o file] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>append] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>verbose]
       [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>portability] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>format<span class="hljs-operator">=</span>format] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>output<span class="hljs-operator">=</span>file] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>version]
       [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>quiet] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>help] command [arg...]

$ <span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time <span class="hljs-operator">-</span><span class="hljs-operator">-</span>version
GNU time <span class="hljs-number">1.7</span>

$ <span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time
Usage: <span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time [<span class="hljs-operator">-</span>apvV] [<span class="hljs-operator">-</span>f format] [<span class="hljs-operator">-</span>o file] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>append] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>verbose]
       [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>portability] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>format<span class="hljs-operator">=</span>format] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>output<span class="hljs-operator">=</span>file] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>version]
       [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>quiet] [<span class="hljs-operator">-</span><span class="hljs-operator">-</span>help] command [arg...]

$ <span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>time <span class="hljs-operator">-</span><span class="hljs-operator">-</span>version
GNU time <span class="hljs-number">1.7</span>
</code></pre><p>I can only attribute the syntax error to an "errata" moment in the book, as only two options begin with a single <code>-</code> and <code>--</code> must precede all the remaining options.</p>
<p>Almost every book published refers to the "errata" page to report or review known errors.  Unfortunately, discovering them as you work through a book introduces unexpected and often time-consuming frustration.</p>
<p>Perhaps it's time for a different kind of eBook - one that has a "version control" mechanism that triggers an "Upgrade Available" that automatically notifies readers of changes to the text or code.</p>
<p>If we can do it with code, there must be a way with plain text!</p>
]]></content:encoded></item></channel></rss>