<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>JeffComputes - Jeff Rimko</title><link>https://www.jeffcomput.es/</link><description>website and blog of Jeff Rimko</description><lastBuildDate>Mon, 05 Sep 2022 00:00:00 -0400</lastBuildDate><item><title>Windows Bluetooth Add/Remove Device Fix</title><link>https://www.jeffcomput.es/posts/2022/09/windows-bluetooth-addremove-device-fix/</link><description>&lt;p&gt;Another entry in the miscellaneous fixes blog series. This fix should help with the following strange behavior on Windows 10 (and possibly 11) under the "Bluetooth &amp;amp; other devices" settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clicking on the "Add Bluetooth or other device" causes the "Add a device" window to appear normally but clicking on any option in the window causes it to immediately close without warning.&lt;/li&gt;
&lt;li&gt;Attempting to remove a Bluetooth device fails.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This behavior may also be accompanied by …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 05 Sep 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2022-09-05:/posts/2022/09/windows-bluetooth-addremove-device-fix/</guid><category>blog</category><category>misc</category></item><item><title>Acer Aspire VX 15 Shutdown Fix</title><link>https://www.jeffcomput.es/posts/2020/04/acer-aspire-vx-15-shutdown-fix/</link><description>&lt;p&gt;Recently ran into an issue where an Acer VX 15 laptop would occasionally shut down. And I don't mean like going through the Windows shutdown process, I mean the laptop would be on one second then immediately off the next. This issue occurred while running on battery and never happened while plugged into the AC adapter.&lt;/p&gt;
&lt;p&gt;The only official troubleshooting information I could find were &lt;a href="https://us.answers.acer.com/app/answers/detail/a_id/34843/~/acer-internal-battery-reset"&gt;these instructions for resetting the battery&lt;/a&gt;. Following these instructions had …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 18 Apr 2020 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2020-04-18:/posts/2020/04/acer-aspire-vx-15-shutdown-fix/</guid><category>blog</category><category>misc</category></item><item><title>Python File Iterator Performance</title><link>https://www.jeffcomput.es/posts/2019/10/python-file-iterator-performance/</link><description>&lt;p&gt;Often I find myself writing Python scripts to iterate over the files in a directory for fun and profit. This is so common that I wrote a simple helper function in Auxly called &lt;a href="https://auxly.readthedocs.io/en/latest/#auxly.filesys.walkfiles"&gt;&lt;code&gt;walkfiles()&lt;/code&gt;&lt;/a&gt;. The performance of &lt;code&gt;walkfiles()&lt;/code&gt; always felt kinda sluggish, especially when compared to blazing fast utilities like &lt;a href="https://github.com/sharkdp/fd"&gt;fd&lt;/a&gt;. Only recently did I learn about &lt;a href="https://docs.python.org/3/library/os.html#os.scandir"&gt;&lt;code&gt;os.scandir()&lt;/code&gt;&lt;/a&gt; in the Python standard library which is essentially a more performant &lt;code&gt;os.listdir()&lt;/code&gt;. After some benchmarks …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 21 Oct 2019 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2019-10-21:/posts/2019/10/python-file-iterator-performance/</guid><category>blog</category><category>python</category></item><item><title>Fzf And Windows File Explorer</title><link>https://www.jeffcomput.es/posts/2019/03/fzf-and-windows-file-explorer/</link><description>&lt;p&gt;As mentioned in &lt;a href="https://www.jeffcomput.es/posts/2018/03/fzf-to-clipboard-on-windows/"&gt;previous&lt;/a&gt; &lt;a href="https://www.jeffcomput.es/posts/2019/02/weekly-picks-fzf/"&gt;posts&lt;/a&gt;, I really like &lt;a href="https://github.com/junegunn/fzf"&gt;fzf&lt;/a&gt;. If you are a Windows user, here's how you can use &lt;a href="https://www.autohotkey.com/"&gt;AutoHotKey&lt;/a&gt; and &lt;a href="https://www.launchy.net/"&gt;Launchy&lt;/a&gt; to search files and folders with fzf directly from File Explorer. The absolute path of the result file/folder will be copied to the system clipboard so it can be pasted into any application.&lt;/p&gt;
&lt;p&gt;This AutoHotKey script will open an fzf file/folder search starting at the current File Explorer path:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;;;&lt;/span&gt; &lt;span class="nt"&gt;This …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 02 Mar 2019 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2019-03-02:/posts/2019/03/fzf-and-windows-file-explorer/</guid><category>blog</category><category>misc</category></item><item><title>Weekly Picks - Fzf</title><link>https://www.jeffcomput.es/posts/2019/02/weekly-picks-fzf/</link><description>&lt;p&gt;A super useful software utility is this week's pick.&lt;/p&gt;
&lt;h4&gt;Software:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/junegunn/fzf"&gt;Fzf&lt;/a&gt;&lt;/em&gt; - Been using this utility a lot recently and it is a game changer for working in command-line terminals. I frequently use it for searching files/folders and searching through utility help output (e.g. &lt;code&gt;rg --help | fzf&lt;/code&gt;). It's great for searching files too, especially in cases where the immediate feedback is helpful (as opposed to using something like grep).&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 24 Feb 2019 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2019-02-24:/posts/2019/02/weekly-picks-fzf/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Jump Rope</title><link>https://www.jeffcomput.es/posts/2019/02/weekly-picks-jump-rope/</link><description>&lt;p&gt;It's been a while! Hope everyone had a great holiday season and New Year!&lt;/p&gt;
&lt;h4&gt;Misc:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Taking Time Off&lt;/em&gt; - Sometimes you just need to take some time off. Rest, relax, and enjoy life!&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Jump Rope&lt;/em&gt; - When you're done taking some time off, why not try some exercise? Cardio has been the bane of my exercise world forever but I'm hoping to change that this year. After a few weeks of jumping rope everyday, I'm seeing results …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 17 Feb 2019 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2019-02-17:/posts/2019/02/weekly-picks-jump-rope/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Hollow Knight</title><link>https://www.jeffcomput.es/posts/2018/12/weekly-picks-hollow-knight/</link><description>&lt;p&gt;Haven't had a video game pick in a while. Let's change that :-)&lt;/p&gt;
&lt;h4&gt;Games:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://hollowknight.com/"&gt;Hollow Knight&lt;/a&gt;&lt;/em&gt; - Still playing through this game but really enjoying it. This game has a beautiful art style and solid Metroidvania gameplay. Definitely worth a try for any fans of the genre.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 02 Dec 2018 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-12-02:/posts/2018/12/weekly-picks-hollow-knight/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Hill House</title><link>https://www.jeffcomput.es/posts/2018/11/weekly-picks-hill-house/</link><description>&lt;p&gt;Single pick for this week.&lt;/p&gt;
&lt;h4&gt;Shows:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.netflix.com/title/80189221"&gt;The Haunting Of Hill House&lt;/a&gt;&lt;/em&gt; - Recently binged through this show with my wife and we absolutely loved it! The story is engaging and well paced. There is an impressive amount of detail and clever moments in this show and it really feels like a labor of love.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 25 Nov 2018 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-11-25:/posts/2018/11/weekly-picks-hill-house/</guid><category>blog</category><category>picks</category></item><item><title>Nexus 6P Battery Replacement</title><link>https://www.jeffcomput.es/posts/2018/11/nexus-6p-battery-replacement/</link><description>&lt;p&gt;Recently replaced the battery in my Nexus 6P smartphone. The process is kind of a pain and there is a lot of great info out there if you plan to try this on your own. Here are a few quick tips from my experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The most difficult part for me was removing the glass piece that is glued over the camera. Several videos I watched recommended using an X-Acto knife but I ended up breaking …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 14 Nov 2018 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-11-14:/posts/2018/11/nexus-6p-battery-replacement/</guid><category>blog</category><category>misc</category></item><item><title>Weekly Picks - How To Make Everything</title><link>https://www.jeffcomput.es/posts/2018/09/weekly-picks-how-to-make-everything/</link><description>&lt;p&gt;Excellent YouTube channel this week.&lt;/p&gt;
&lt;h4&gt;Videos:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.youtube.com/channel/UCfIqCzQJXvYj9ssCoHq327g"&gt;How To Make Everything&lt;/a&gt;&lt;/em&gt; - Andy, the host of this channel, shows how various everyday objects are made from raw materials. He tries to recreate the objects with varying degrees of success. The videos are funny and educational.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 16 Sep 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-09-16:/posts/2018/09/weekly-picks-how-to-make-everything/</guid><category>blog</category><category>picks</category></item><item><title>TV Repair And Heartbreak</title><link>https://www.jeffcomput.es/posts/2018/09/tv-repair-and-heartbreak/</link><description>&lt;p&gt;Ugh. So I tried to repair a large screen LED TV recently. I've never worked on a TV before so this was definitely uncharted territory. The issue was that the LED backlight would not stay on, they would briefly flash when starting the TV and the logo would show but then the screen would go dark.&lt;/p&gt;
&lt;p&gt;Ultimately, I was able to repair the backlight but did end up breaking the screen in the process.&lt;/p&gt;
&lt;p&gt;:-(&lt;/p&gt;
&lt;p&gt;You …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 07 Sep 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-09-07:/posts/2018/09/tv-repair-and-heartbreak/</guid><category>blog</category><category>misc</category></item><item><title>Introducing Ubuild</title><link>https://www.jeffcomput.es/posts/2018/08/introducing-ubuild/</link><description>&lt;p&gt;I recently added a new project to GitHub: &lt;a href="https://github.com/jeffrimko/Ubuild"&gt;Ubuild&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This project addresses something I've wanted for a long time: a way to unify the build process for various software projects. It shouldn't matter if the project is a C++ native application or a web app, there should be a simple interface that takes the guess-work out of the build process. Ubuild provides this unified interface.&lt;/p&gt;
&lt;p&gt;A user can review the build options by running the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 29 Aug 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-08-29:/posts/2018/08/introducing-ubuild/</guid><category>blog</category><category>software</category></item><item><title>Weekly Picks - Naddpod</title><link>https://www.jeffcomput.es/posts/2018/08/weekly-picks-naddpod/</link><description>&lt;p&gt;One of my favorite podcasts is the pick this week.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://headgum.com/not-another-dandd-podcast"&gt;Not Another D&amp;amp;D Podcast&lt;/a&gt;&lt;/em&gt; - An excellent comedy D&amp;amp;D podcast with great characters and an intriguing story. This quickly became one of my all time favorite podcasts after listening to a few episodes. I introduced it to my wife and we are both hooked.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 26 Aug 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-08-26:/posts/2018/08/weekly-picks-naddpod/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - HospitalRun</title><link>https://www.jeffcomput.es/posts/2018/08/weekly-picks-hospitalrun/</link><description>&lt;p&gt;The pick this week is a project with great intentions.&lt;/p&gt;
&lt;h4&gt;Software:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://hospitalrun.io/"&gt;HospitalRun&lt;/a&gt;&lt;/em&gt; - Free and open source software intended to help administrate hospitals in developing countries. This project is currently looking for maintainers!&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 19 Aug 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-08-19:/posts/2018/08/weekly-picks-hospitalrun/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Life And Kayaks</title><link>https://www.jeffcomput.es/posts/2018/08/weekly-picks-life-and-kayaks/</link><description>&lt;p&gt;Some random picks this week.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://podcasts.joerogan.net/podcasts/kevin-smith-2"&gt;JRE #1123 - Kevin Smith&lt;/a&gt;&lt;/em&gt; - Great talk covering various topics from owning pets to ancient Egypt. Kevin shares some interesting views on life and death following his recent heart attack.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Products:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Intex Challenger K1 Inflatable Kayak&lt;/em&gt; - Admittedly, I was super skeptical about inflatable kayaks but these things are awesome! My wife and I bought two when they were on sale for about $50 each. They are light, portable, and durable …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 12 Aug 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-08-12:/posts/2018/08/weekly-picks-life-and-kayaks/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Aliens And Doom</title><link>https://www.jeffcomput.es/posts/2018/07/weekly-picks-aliens-and-doom/</link><description>&lt;p&gt;Took a short summer break from picks but I'm back with two goodies.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.dotnetrocks.com/?show=1548"&gt;.NET Rocks!, Episode 1548, Life on Other Planets Geek Out&lt;/a&gt;&lt;/em&gt; - Interesting episode covering the science of detecting life on other planets and the current status of the field.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Videos:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://youtu.be/eBU34NZhW7I"&gt;DOOM's Development: A Year of Madness&lt;/a&gt;&lt;/em&gt; - Great talk given by John Romero summarizing the year of development for the original DOOM.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 29 Jul 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-07-29:/posts/2018/07/weekly-picks-aliens-and-doom/</guid><category>blog</category><category>picks</category></item><item><title>Debugging Godot With Visual Studio Code</title><link>https://www.jeffcomput.es/posts/2018/07/debugging-godot-with-visual-studio-code/</link><description>&lt;div class="paragraph"&gt;
&lt;p&gt;I&amp;#8217;ve been playing around with &lt;a href="https://github.com/godotengine/godot"&gt;Godot&lt;/a&gt; a bit recently, a promising 2D/3D game engine that is completely open source. What most impressed me is that the entire engine is distributed as a 50MB binary. Compared to the 1GB+ installation size for Unity, this is pretty amazing.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Here are some quick instructions for debugging the Godot engine itself (i.e. rather than a game created in Godot) using VS Code:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="olist arabic"&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;
&lt;p&gt;Make sure you have …&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 23 Jul 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-07-23:/posts/2018/07/debugging-godot-with-visual-studio-code/</guid><category>blog</category><category>software</category></item><item><title>Weekly Picks - Avengers</title><link>https://www.jeffcomput.es/posts/2018/05/weekly-picks-avengers/</link><description>&lt;p&gt;Big blockbuster movie for this week's pick.&lt;/p&gt;
&lt;h4&gt;Movies:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.imdb.com/title/tt4154756"&gt;Avengers: Infinity War&lt;/a&gt;&lt;/em&gt; - Was massively impressed by this movie. Marvel has really done something special with their cinematic universe and this movie is a remarkable feat.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 13 May 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-05-13:/posts/2018/05/weekly-picks-avengers/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Jamie King</title><link>https://www.jeffcomput.es/posts/2018/05/weekly-picks-jamie-king/</link><description>&lt;p&gt;Got a YouTube channel for this week's picks.&lt;/p&gt;
&lt;h4&gt;Videos:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.youtube.com/channel/UCda_RJU9-xB0Hswcrjn4SKw"&gt;Jamie King&lt;/a&gt;&lt;/em&gt; - This guy has some great instructional videos on the C# programming language and other computer science topics. I found his channel which searching for C# LINQ videos.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 07 May 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-05-07:/posts/2018/05/weekly-picks-jamie-king/</guid><category>blog</category><category>picks</category></item><item><title>Easy To Remember Unit Estimates</title><link>https://www.jeffcomput.es/posts/2018/04/easy-to-remember-unit-estimates/</link><description>&lt;p&gt;Here is a short list of ballpark equivalents that are fairly easy to remember. Keep in mind these are only ballpark estimates and are purposefully kept to round numbers. So only use these for quick mental calculations and don't go building spaceships or anything with them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 cup of water ~ 0.5 pounds&lt;/li&gt;
&lt;li&gt;1 pound ~ 0.5 kilograms&lt;/li&gt;
&lt;li&gt;1 kilometer ~ 0.5 mile&lt;/li&gt;
&lt;li&gt;1 gallon ~ 5 liter&lt;/li&gt;
&lt;li&gt;1 liter ~ 5 cups&lt;/li&gt;
&lt;li&gt;1 teaspoon ~ 5 milliliters …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 30 Apr 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-04-30:/posts/2018/04/easy-to-remember-unit-estimates/</guid><category>blog</category><category>misc</category></item><item><title>Weekly Picks - Savage Worlds</title><link>https://www.jeffcomput.es/posts/2018/04/weekly-picks-savage-worlds/</link><description>&lt;p&gt;Something a bit different this week.&lt;/p&gt;
&lt;h4&gt;Games:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/Savage_Worlds"&gt;Savage Worlds&lt;/a&gt;&lt;/em&gt; - This is a generic tabletop role-playing game system that is a lot of fun! Savage Worlds provides the toolkit for a wide variety of scenarios. The rules are fairly simple and the core rule book can be picked up for $10. This system is well suited for one-shots or longer campaigns.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 29 Apr 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-04-29:/posts/2018/04/weekly-picks-savage-worlds/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - The Ocean Cleanup</title><link>https://www.jeffcomput.es/posts/2018/04/weekly-picks-the-ocean-cleanup/</link><description>&lt;p&gt;Picking a great cause this week.&lt;/p&gt;
&lt;h4&gt;Documents:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://podcasts.joerogan.net/podcasts/boyan-slat"&gt;JRE #1104 - Boyan Slat&lt;/a&gt;&lt;/em&gt; - Joe interviews Boyan who is leading an effort to clean up the plastic polluting the ocean. Really admire Boyan's dedication and vision.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Organizations:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.theoceancleanup.com/"&gt;The Ocean Cleanup&lt;/a&gt;&lt;/em&gt; - Boyan's organization dedicated to cleaning the ocean.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 22 Apr 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-04-22:/posts/2018/04/weekly-picks-the-ocean-cleanup/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Web Systems</title><link>https://www.jeffcomput.es/posts/2018/04/weekly-picks-web-systems/</link><description>&lt;p&gt;Helpful resource for web developers for this week's pick.&lt;/p&gt;
&lt;h4&gt;Documents:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/donnemartin/system-design-primer"&gt;The System Design Primer&lt;/a&gt;&lt;/em&gt; - This GitHub document is an amazing resource for getting up to speed on common techniques used when building web systems. For people like me who are fairly new to the web-side of development, resources like this are a godsend since they condense a ton of practical knowledge into a fairly quick read.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 15 Apr 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-04-15:/posts/2018/04/weekly-picks-web-systems/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Vimium</title><link>https://www.jeffcomput.es/posts/2018/04/weekly-picks-vimium/</link><description>&lt;p&gt;Another useful Chrome extension for this week's pick.&lt;/p&gt;
&lt;h4&gt;Software:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://vimium.github.io/"&gt;Vimium&lt;/a&gt;&lt;/em&gt; - This Chrome extension adds Vim-like keybindings for common navigation actions. For example, &lt;code&gt;j&lt;/code&gt; and &lt;code&gt;k&lt;/code&gt; allow for horizontal scrolling. It's effective and fun to use! The &lt;code&gt;f&lt;/code&gt; "open link" functionality is amazing!&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 08 Apr 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-04-08:/posts/2018/04/weekly-picks-vimium/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Finance Podcasts</title><link>https://www.jeffcomput.es/posts/2018/04/weekly-picks-finance-podcasts/</link><description>&lt;p&gt;Couple of finance related podcasts for this week's picks.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://freakonomics.com/podcast/everything-always-wanted-know-money-afraid-ask/"&gt;Freakonomics, Episode 298, Everything You Always Wanted to Know About Money (But Were Afraid to Ask)&lt;/a&gt;&lt;/em&gt; - Great episode from last year that was recently re-released. Covers basic finance topics like compound interest and inflation.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.theinvestorspodcast.com/episodes/jesse-felder-report-fang-stocks-crypto-bitcoin/"&gt;The Investor Podcast, Episode 169, FANG Stocks, Crypto, Central Banks, &amp;amp; Inflation&lt;/a&gt;&lt;/em&gt; - This episode is packed with expert advice. The Netflix discussion near the beginning provides great insight into fundamental analysis of …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 01 Apr 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-04-01:/posts/2018/04/weekly-picks-finance-podcasts/</guid><category>blog</category><category>picks</category></item><item><title>Italian Verbs</title><link>https://www.jeffcomput.es/posts/2018/03/italian-verbs/</link><description>&lt;p&gt;Here are some word associations that might be helpful to remember some common Italian Verbs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CADERE&lt;/strong&gt; - Cady &lt;strong&gt;falls&lt;/strong&gt; catlike. - &lt;em&gt;Cady &lt;/em&gt;&lt;em&gt;cade&lt;/em&gt;&lt;em&gt; come un gatto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CHIAMARE&lt;/strong&gt; - Key-Mary &lt;strong&gt;calls&lt;/strong&gt; midday. - &lt;em&gt;Key-Mary &lt;/em&gt;&lt;em&gt;chiama&lt;/em&gt;&lt;em&gt; mezzogiorno.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CHIEDERE&lt;/strong&gt; - Key-Eddy &lt;strong&gt;asks&lt;/strong&gt; keenly. - &lt;em&gt;Key-Eddy &lt;/em&gt;&lt;em&gt;chiede&lt;/em&gt;&lt;em&gt; acutamente.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CHIUDERE&lt;/strong&gt; - Key-Eustace &lt;strong&gt;closes&lt;/strong&gt; juices. - &lt;em&gt;Key-Eustace &lt;/em&gt;&lt;em&gt;chiude&lt;/em&gt;&lt;em&gt; i succhi.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DARE&lt;/strong&gt; - Darin &lt;strong&gt;gives&lt;/strong&gt; dozens. - &lt;em&gt;Darin &lt;/em&gt;&lt;em&gt;dà&lt;/em&gt;&lt;em&gt; dozzine.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DIVENTARE&lt;/strong&gt; - Dante &lt;strong&gt;becomes&lt;/strong&gt; dainty. - &lt;em&gt;Dante &lt;/em&gt;&lt;em&gt;diventa&lt;/em&gt;&lt;em&gt; delicato.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DOVERE&lt;/strong&gt; - Dove &lt;strong&gt;owes&lt;/strong&gt; two dollars. - &lt;em&gt;Dove &lt;/em&gt;&lt;em&gt;deve&lt;/em&gt;&lt;em&gt; due dollari.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FARE&lt;/strong&gt; - Farah &lt;strong&gt;makes&lt;/strong&gt; fairings. - &lt;em&gt;Farah &lt;/em&gt;&lt;em&gt;fa …&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 31 Mar 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-03-31:/posts/2018/03/italian-verbs/</guid><category>blog</category><category>misc</category></item><item><title>Weekly Picks - Video Speed Controller</title><link>https://www.jeffcomput.es/posts/2018/03/weekly-picks-video-speed-controller/</link><description>&lt;p&gt;Been a while since the last picks post. I've been watching a lot of instructional videos on YouTube recently which inspired this pick.&lt;/p&gt;
&lt;h4&gt;Software:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/igrigorik/videospeed"&gt;Video Speed Controller&lt;/a&gt;&lt;/em&gt; - This Chrome extension allows you to quickly increase or decrease the speed of an HTML5 video. Yeah, many sites have similar features built-in to their video players but this extension ramps it up a notch. Try it and you'll see how helpful the keyboard shortcuts are when watching …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 25 Mar 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-03-25:/posts/2018/03/weekly-picks-video-speed-controller/</guid><category>blog</category><category>picks</category></item><item><title>Fzf To Clipboard On Windows</title><link>https://www.jeffcomput.es/posts/2018/03/fzf-to-clipboard-on-windows/</link><description>&lt;p&gt;Been using the great &lt;a href="https://github.com/junegunn/fzf"&gt;fzf&lt;/a&gt; CLI utility lately. Here's a neat trick to copy the search result to the Windows clipboard:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;fzf | clip&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The resulting copied text tends to include a carriage return however. To remove it, either add the &lt;code&gt;--print0&lt;/code&gt; option to the &lt;code&gt;fzf&lt;/code&gt; command or permanently make it a default option using the &lt;code&gt;FZF_DEFAULT_OPTS&lt;/code&gt; environment variable.&lt;/p&gt;
&lt;p&gt;The use case for this trick is to quickly find a file within a project, copy the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 24 Mar 2018 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-03-24:/posts/2018/03/fzf-to-clipboard-on-windows/</guid><category>blog</category><category>misc</category></item><item><title>Speed Up Ctrlp With Fd</title><link>https://www.jeffcomput.es/posts/2018/03/speed-up-ctrlp-with-fd/</link><description>&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: This was originally posted &lt;a href="https://www.reddit.com/r/vim/comments/83h31q/speed_up_ctrlp_with_fd/"&gt;on the Vim subreddit here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Just learned aboug &lt;a href="https://github.com/sharkdp/fd"&gt;fd&lt;/a&gt; today and was impressed by its speed. Tried using it for ctrlp and it works great! Didn't take any precise measurements but for the CPython code base, stock ctrlp loaded in about 2 seconds, ctrlp+ripgrep about 1 second, and ctlp+fd about 0.5 seconds.&lt;/p&gt;
&lt;p&gt;I'm running gVim 8.0.586 on Windows 10 and used the following in my …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 10 Mar 2018 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-03-10:/posts/2018/03/speed-up-ctrlp-with-fd/</guid><category>blog</category><category>vim</category></item><item><title>Another Quick Update</title><link>https://www.jeffcomput.es/posts/2018/02/another-quick-update/</link><description>&lt;p&gt;Another quick update of random stuff I've been up to lately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Released a new version of &lt;a href="https://github.com/jeffrimko/archiver"&gt;gArchiver&lt;/a&gt;. This is the first new release in nearly two years. It is now built with Python 3.6 and wxPython 4.0.1.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jeffrimko/PopPage"&gt;PopPage&lt;/a&gt; has some cool features like the &lt;code&gt;run&lt;/code&gt; command and default files.&lt;/li&gt;
&lt;li&gt;Learning a lot about C# and the .NET framework. Microsoft has done a great job with the tooling centered around Visual Studio!&lt;/li&gt;
&lt;li&gt;Finally …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 12 Feb 2018 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2018-02-12:/posts/2018/02/another-quick-update/</guid><category>blog</category><category>misc</category></item><item><title>The Number e And Compound Interest</title><link>https://www.jeffcomput.es/posts/2017/12/the-number-e-and-compound-interest/</link><description>&lt;div class="paragraph"&gt;
&lt;p&gt;The number &lt;code&gt;e&lt;/code&gt; is one of those things in mathematics that appears mysterious at first glance. It has a seemingly random value and occasionally pops up in various contexts. Today, let&amp;#8217;s take a closer look at this important number and understand it in the context of one of the most powerful forces known to man: compound interest.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The number &lt;code&gt;e&lt;/code&gt; is essentially the growth multiple of something increasing at 100% over one time unit …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 09 Dec 2017 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-12-09:/posts/2017/12/the-number-e-and-compound-interest/</guid><category>blog</category><category>misc</category></item><item><title>Weekly Picks - The Kingkiller Chronicle</title><link>https://www.jeffcomput.es/posts/2017/10/weekly-picks-the-kingkiller-chronicle/</link><description>&lt;p&gt;It's been a while since the last picks! This round includes the first two books in The Kingkiller Chronicle which is a planned trilogy of fantasy novels telling the life story of one of the most famous/infamous characters in their world, Kvothe. Author Patrick Rothfuss has done something truly special in these books. His story is unique yet familiar and masterfully crafted. My quick blurbs below won't do these books justice. If you are …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 28 Oct 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-10-28:/posts/2017/10/weekly-picks-the-kingkiller-chronicle/</guid><category>blog</category><category>picks</category></item><item><title>Installing HospitalRun On Arch Linux</title><link>https://www.jeffcomput.es/posts/2017/09/installing-hospitalrun-on-arch-linux/</link><description>&lt;p&gt;I recently installed &lt;a href="http://hospitalrun.io/"&gt;HospitalRun&lt;/a&gt; on Arch Linux using the &lt;a href="https://github.com/HospitalRun/hospitalrun-frontend#installation"&gt;official instructions available here&lt;/a&gt;. Everything went well except for step 5 involving &lt;code&gt;script/bootstrap&lt;/code&gt; which required the following changes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add the &lt;code&gt;--ignore-scripts&lt;/code&gt; option to the end of the line &lt;code&gt;npm install -g phantomjs-prebuilt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add the &lt;code&gt;--allow-root&lt;/code&gt; option to the end of the line &lt;code&gt;bower install&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now run the script with &lt;code&gt;sudo script/bootstrap&lt;/code&gt; and all should be good!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 30 Sep 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-09-30:/posts/2017/09/installing-hospitalrun-on-arch-linux/</guid><category>blog</category><category>software</category></item><item><title>Removing A Suzuki SV650 Gas Tank</title><link>https://www.jeffcomput.es/posts/2017/09/removing-a-suzuki-sv650-gas-tank/</link><description>&lt;p&gt;Today, I had to remove the gas tank from a 2000 Suzuki SV650. While it is pretty straightforward, maybe someone can benefit from a documented process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Just below the seat on both sides there are small triangle shaped decorative fairings. Each are held on by an exposed hex bolt and a hidden plastic fastener. Remove the hex bolt and rotate the fairings away from the body of the bike.&lt;/li&gt;
&lt;li&gt;The driver seat is held on …&lt;/li&gt;&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 24 Sep 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-09-24:/posts/2017/09/removing-a-suzuki-sv650-gas-tank/</guid><category>blog</category><category>misc</category></item><item><title>Quick Update</title><link>https://www.jeffcomput.es/posts/2017/09/quick-update/</link><description>&lt;p&gt;Just a quick update on some stuff I've been up to lately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jeffrimko/QuickWin"&gt;QuickWin&lt;/a&gt; now has better multi-monitor support. Been thinking about adding it to Chocolatey.&lt;/li&gt;
&lt;li&gt;Been slowly hacking at &lt;a href="https://github.com/jeffrimko/PopPage"&gt;PopPage&lt;/a&gt; to improve overall functionality and cookiecutter template compatibility.&lt;/li&gt;
&lt;li&gt;Started a new job that is outside of the embedded systems industry (a first for me). Been learning the Microsoft .NET stack and have been impressed so far. The Visual Studio debugger is amazing!&lt;/li&gt;
&lt;li&gt;Slowly researching the …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 10 Sep 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-09-10:/posts/2017/09/quick-update/</guid><category>blog</category><category>misc</category></item><item><title>Changelog Structure</title><link>https://www.jeffcomput.es/posts/2017/07/changelog-structure/</link><description>&lt;p&gt;I recently changed my preferred structure for changelog files. Examples of the old structure are shown in the &lt;a href="https://github.com/jeffrimko/Qprompt/blob/master/CHANGELOG.adoc"&gt;Qprompt changelog&lt;/a&gt; while the new structure is shown in the &lt;a href="https://github.com/jeffrimko/PopPage/blob/master/CHANGELOG.adoc"&gt;PopPage changelog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The new structure is based on suggestions from &lt;a href="http://keepachangelog.com/"&gt;Keep A Changelog&lt;/a&gt;. Liking the clarity and brevity of this style, I updated the &lt;a href="https://github.com/jeffrimko/UnifiedStyleGuide/blob/master/doc/special_files/main.adoc#changelog-files"&gt;changelog section in the Unified Style Guide&lt;/a&gt; to incorporate their suggestions.&lt;/p&gt;
&lt;p&gt;While I don't plan to update old changelogs, new changelogs will definitely …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 31 Jul 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-07-31:/posts/2017/07/changelog-structure/</guid><category>blog</category><category>software</category></item><item><title>PopPage Demo</title><link>https://www.jeffcomput.es/posts/2017/07/poppage-demo/</link><description>&lt;p&gt;&lt;a href="https://github.com/jeffrimko/PopPage"&gt;PopPage&lt;/a&gt; is a small side project I started a few years but haven't really updated much until recently. PopPage was originally a simple static HTML generator; at the time I just needed a utility to apply content to &lt;a href="http://jinja.pocoo.org/"&gt;Jinja2&lt;/a&gt; templates. However, recent updates have effectively made it a &lt;a href="https://github.com/audreyr/cookiecutter"&gt;cookiecutter&lt;/a&gt; clone with a few neat features. Unlike cookiecutter, PopPage information is supplied from YAML files rather than JSON files. As of PopPage &lt;code&gt;0.3.1&lt;/code&gt;, there …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 31 Jul 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-07-31:/posts/2017/07/poppage-demo/</guid><category>blog</category><category>python</category><category>software</category></item><item><title>Superhot Unity Demo</title><link>https://www.jeffcomput.es/posts/2017/07/superhot-unity-demo/</link><description>&lt;p&gt;Having recently played through &lt;a href="https://superhotgame.com/"&gt;Superhot&lt;/a&gt;, I thought it would be a fun exercise to implement the time/movement mechanic in &lt;a href="https://unity3d.com/"&gt;Unity&lt;/a&gt;. Turns out to be fairly easy to do and I threw together a simple demo which is &lt;a href="https://github.com/jeffrimko/Unity-SuperhotDemo"&gt;available on GitHub here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's the demo in action:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Superhot Demo" src="/images/superhot_demo.gif" title="Superhot Demo"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 23 Jul 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-07-23:/posts/2017/07/superhot-unity-demo/</guid><category>blog</category><category>gamedev</category><category>software</category></item><item><title>DevLog - Qprompt</title><link>https://www.jeffcomput.es/posts/2017/06/devlog-qprompt/</link><description>&lt;p&gt;&lt;a href="https://github.com/jeffrimko/Qprompt"&gt;Qprompt&lt;/a&gt; is a simple CLI library for Python that I have slowly working on for about two years now. It provides basic typed prompts and menus in a CLI environment along with some additional convenience functions. Recently, I added a feature that allows prompt inputs to be automatically entered via stdin; I have found this feature to be enormously helpful. Let's look at an example use case.&lt;/p&gt;
&lt;h3&gt;Use Case - QuickWin Build Menu&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/jeffrimko/quickwin"&gt;QuickWin&lt;/a&gt; is another …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 15 Jun 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-06-15:/posts/2017/06/devlog-qprompt/</guid><category>blog</category><category>software</category><category>python</category><category>devlog</category></item><item><title>Question Drilldown - Kalman Filter</title><link>https://www.jeffcomput.es/posts/2017/06/question-drilldown-kalman-filter/</link><description>&lt;div class="sect2"&gt;
&lt;h3 id="_the_topic"&gt;The Topic&lt;/h3&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;For this drilldown, we will take a very high-level look at a technique used in robotics, control systems, and any other applications involving sensors: the Kalman Filter.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: No math will be covered in this article. There are plenty of great resources for learning the math behind the Kalman Filter. Think of this article as a primer.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_the_qa"&gt;The Q&amp;amp;A&lt;/h3&gt;
&lt;div class="dlist"&gt;
&lt;dl&gt;
&lt;dt class="hdlist1"&gt;What is a Kalman Filter (KF)?&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;The KF is an algorithm used to …&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 08 Jun 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-06-08:/posts/2017/06/question-drilldown-kalman-filter/</guid><category>blog</category><category>software</category><category>hardware</category><category>drilldown</category></item><item><title>Weekly Picks - A Strange Trio</title><link>https://www.jeffcomput.es/posts/2017/05/weekly-picks-a-strange-trio/</link><description>&lt;p&gt;The picks this week all involve a group of friends dealing with a supernatural foe. While the premise of each is different, they share similar tones and pay homage to 80's era horror.&lt;/p&gt;
&lt;h4&gt;Games:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://store.steampowered.com/app/388880/Oxenfree/"&gt;Oxenfree&lt;/a&gt;&lt;/em&gt; - A group of friends are tormented by a supernatural presence on an abandoned island. Fun, engaging, and only takes a few hours to play through.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Movies:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.imdb.com/title/tt3235888/"&gt;It Follows&lt;/a&gt;&lt;/em&gt; - A girl is hunted by an unstoppable shape-shifting creature. Good execution of …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 13 May 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-05-13:/posts/2017/05/weekly-picks-a-strange-trio/</guid><category>blog</category><category>picks</category></item><item><title>Better Task Lists In AsciiDoc</title><link>https://www.jeffcomput.es/posts/2017/04/better-task-lists-in-asciidoc/</link><description>&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: This is an update to a &lt;a href="https://www.jeffcomput.es/posts/2014/02/task-lists-in-asciidoc/"&gt;previous post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Okay, it's been a while since the last post on this topic. Since then, I've switched from using the &lt;a href="http://asciidoc.org/"&gt;original AsciiDoc utility&lt;/a&gt; to &lt;a href="http://asciidoctor.org/"&gt;Asciidoctor&lt;/a&gt;. This along with some minor tweaking has changed how my task lists look.&lt;/p&gt;
&lt;p&gt;Here is the basic structure:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;= My Task List

[NOTE]
========
.Category Tags
[horizontal]
`code`::
    Code related tasks.
`doc`::
    Documentation related tasks.
========

== Current Tasks
.Updated 2017-01-06
********
NOTE: Arranged by priority.

  - [ ] `2017-01-05 …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 23 Apr 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-04-23:/posts/2017/04/better-task-lists-in-asciidoc/</guid><category>blog</category><category>asciidoc</category><category>vim</category></item><item><title>Question Drilldown - Processes, Threads</title><link>https://www.jeffcomput.es/posts/2017/04/question-drilldown-processes-threads/</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This is the first post using a format that I have been wanting to try out for a long time. The idea is to catalog the questions that might be asked when first learning about a topic. By reviewing these questions, hopefully newcomers can learn a great deal and the more experienced can brush up a bit. The goal is not to exhaustively review every detail on the topic but rather provide just enough information …&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 20 Apr 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-04-20:/posts/2017/04/question-drilldown-processes-threads/</guid><category>blog</category><category>software</category><category>hardware</category><category>drilldown</category></item><item><title>Second Game Jam</title><link>https://www.jeffcomput.es/posts/2017/04/second-game-jam/</link><description>&lt;p&gt;The &lt;a href="http://youngstowngamedevelopers.com/"&gt;Youngstown Game Developers&lt;/a&gt; had our second annual game jam this past weekend. It was a great time and I learned a ton. It had been several months since doing any game dev stuff so I did spend a fair amount of time relearning Unity.&lt;/p&gt;
&lt;p&gt;During &lt;a href="https://www.youtube.com/watch?v=AKMe0oIH6u4"&gt;the keynote&lt;/a&gt;, we were advised to avoid games with common mechanics like jumping. So of course I made a game about... jumping in the dark! Yeah, I know, not …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 07 Apr 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-04-07:/posts/2017/04/second-game-jam/</guid><category>blog</category><category>events</category><category>gamedev</category></item><item><title>Weekly Picks - Jesse Schell</title><link>https://www.jeffcomput.es/posts/2017/04/weekly-picks-jesse-schell/</link><description>&lt;p&gt;This week's pick is a legend of the video game industry: Jesse Schell.&lt;/p&gt;
&lt;h4&gt;Companies:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.schellgames.com/"&gt;Schell Games&lt;/a&gt;&lt;/em&gt; - Jesse founded this Pittsburgh based company in 2002. It is the largest game studio in Pennsylvania. They make great games like &lt;a href="http://www.enemymindgame.com/"&gt;Enemy Mind&lt;/a&gt; and &lt;a href="https://iexpectyoutodie.schellgames.com/"&gt;I Expect You To Die&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://thedebuglog.com/2016/09/21/episode-50-the-art-of-game-design-with-jesse-schell/"&gt;The Debug Log, Episode 50, The Art Of Game Design With Jesse Schell&lt;/a&gt;&lt;/em&gt; - Excellent interview with Jesse covering topics inspired by &lt;a href="https://www.amazon.com/Art-Game-Design-Book-Lenses/dp/0123694965"&gt;his book&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Videos:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.youtube.com/watch?v=AKMe0oIH6u4"&gt;April Fools' Game Jam Keynote …&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 07 Apr 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-04-07:/posts/2017/04/weekly-picks-jesse-schell/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Podcasts</title><link>https://www.jeffcomput.es/posts/2017/03/weekly-picks-podcasts/</link><description>&lt;p&gt;Couple of random podcast episodes for this round of picks.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://cppcast.com/2017/03/odin-holmes/"&gt;CppCast, 13 March 2017, emBO++ With Odin Holmes&lt;/a&gt;&lt;/em&gt; - Good discussion of how C++ is evolving in the embedded systems field.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://embedded.fm/episodes/190"&gt;Embedded FM, Episode 190, Trust Me I'm Right&lt;/a&gt;&lt;/em&gt; - Great interview with the creator of &lt;a href="https://godbolt.org/"&gt;Compiler Explorer&lt;/a&gt;. Smart guy with an interesting background.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.npr.org/podcasts/510313/how-i-built-this"&gt;How I Built This, 13 March 2017, 5 Hour Energy&lt;/a&gt;&lt;/em&gt; - Interview with the founder, he is not what I expected. Super humble …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 18 Mar 2017 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-03-18:/posts/2017/03/weekly-picks-podcasts/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Foreign Language Learning</title><link>https://www.jeffcomput.es/posts/2017/03/weekly-picks-foreign-language-learning/</link><description>&lt;p&gt;Ciao friends! Been a while since the last "weekly" picks but here are some to help you learn a new (spoken) language.&lt;/p&gt;
&lt;h4&gt;Software:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://apps.ankiweb.net/"&gt;Anki&lt;/a&gt;&lt;/em&gt; - Great flashcard application! Lots of pre-made decks available to help build vocab.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Websites:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://duolingo.com/"&gt;Duolingo&lt;/a&gt;&lt;/em&gt; - Free and amazing language learning site. The mobile app is quite good too.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.forvo.com/"&gt;Forvo&lt;/a&gt;&lt;/em&gt; - Not sure how a word is supposed to be pronounce? Forvo's got your back!&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://translate.google.com/"&gt;Google Translate&lt;/a&gt;&lt;/em&gt; - Essential for those unknown words!&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 11 Mar 2017 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-03-11:/posts/2017/03/weekly-picks-foreign-language-learning/</guid><category>blog</category><category>picks</category></item><item><title>DevLog - Doctrine Updates And Electron</title><link>https://www.jeffcomput.es/posts/2017/01/devlog-doctrine-updates-and-electron/</link><description>&lt;p&gt;In a &lt;a href="https://www.jeffcomput.es/posts/2016/07/devlog-doctrine-updates/"&gt;previous post&lt;/a&gt;, I was kicking around some ideas for updating a pet project of mine called &lt;a href="https://github.com/jeffrimko/doctrine"&gt;Doctrine&lt;/a&gt;. Here's a quick update on the progress of the second iteration of the project.&lt;/p&gt;
&lt;p&gt;I decided to go the JavaScript/Electron route. Electron is easy to work with, it does what is expected (&lt;a href="https://www.jeffcomput.es/posts/2016/09/strange-electron-webview-behavior/"&gt;usually&lt;/a&gt;) and haven't run into too many surprises. The functionality of Doctrine2 is coming together nicely and I hope to make the code …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 31 Jan 2017 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-01-31:/posts/2017/01/devlog-doctrine-updates-and-electron/</guid><category>blog</category><category>software</category><category>devlog</category></item><item><title>V-REP Remote API Demo</title><link>https://www.jeffcomput.es/posts/2017/01/v-rep-remote-api-demo/</link><description>&lt;p&gt;While looking over robot simulator options, ran across &lt;a href="http://www.coppeliarobotics.com/"&gt;V-REP&lt;/a&gt; which looked interesting. After reading through some of &lt;a href="http://www.coppeliarobotics.com/helpFiles/index.html"&gt;the great documentation&lt;/a&gt;, I wanted to give the remote API a try so I threw together a basic demo of a line following robot with logic implemented in Python. The demo is &lt;a href="https://github.com/jeffrimko/Vrep-RemoteApiDemo"&gt;available on GitHub here&lt;/a&gt;. Hoping to try some more complex projects in V-REP soon!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 24 Jan 2017 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2017-01-24:/posts/2017/01/v-rep-remote-api-demo/</guid><category>blog</category><category>robotics</category><category>python</category></item><item><title>Advice From The 10 Year Point</title><link>https://www.jeffcomput.es/posts/2016/12/advice-from-the-10-year-point/</link><description>&lt;p&gt;A quick look back on 10 years of professional software/hardware development and some advice for new developers and engineers.&lt;/p&gt;
&lt;p&gt;Some generalizations on how the first 10 years of your career might look. Years 1 to 5 will be spent learning as much as possible; it's very likely you will learn more in the first two years on the job than you did in all of college. Years 6 to 10 will be spent niching …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 30 Dec 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-12-30:/posts/2016/12/advice-from-the-10-year-point/</guid><category>blog</category><category>misc</category></item><item><title>Easy Custom Parts Experiment - Update 1</title><link>https://www.jeffcomput.es/posts/2016/11/easy-custom-parts-experiment-update-1/</link><description>&lt;p&gt;In a &lt;a href="https://www.jeffcomput.es/posts/2016/11/easy-custom-parts-experiment/"&gt;previous post&lt;/a&gt;, I brainstormed about applying masking tape to one side of a wire mesh part then fiberglass cloth to the other side. Tried it out and the results are encouraging. The only downside I ran into was the cloth tends to move around a bit when applying the resin. Also, this method may require some additional steps if the cloth cannot be applied as a single piece.&lt;/p&gt;
&lt;p&gt;Here is a video showing …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 30 Nov 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-11-30:/posts/2016/11/easy-custom-parts-experiment-update-1/</guid><category>blog</category><category>making</category></item><item><title>Easy Custom Parts Experiment</title><link>https://www.jeffcomput.es/posts/2016/11/easy-custom-parts-experiment/</link><description>&lt;p&gt;Been experimenting with a few methods of using wire mesh to create custom parts. Mesh is cheap and easy to work with. I wanted to figure out a quick method of treating the mesh so that it would retain its shape and seal the openings in the wire. Here is what I have tried so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Method 1&lt;/strong&gt; - Apply FibaTape over the mesh then apply Bondo over the tape.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Method 2&lt;/strong&gt; - Apply masking tape over …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 26 Nov 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-11-26:/posts/2016/11/easy-custom-parts-experiment/</guid><category>blog</category><category>making</category></item><item><title>Windows Explorer Undo Is Scary</title><link>https://www.jeffcomput.es/posts/2016/11/windows-explorer-undo-is-scary/</link><description>&lt;p&gt;The undo feature built into Windows Explorer is scary. Let me preface this statement by saying I have not yet moved pass Windows 7 so maybe the behavior has changed in newer releases. That being said, accidentally hitting Ctrl-Z while in Windows Explorer can be nerve wracking because depending on the action being undone, there may not be any prompt displayed. For example, a file that was renamed an hour ago might be undone without …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 17 Nov 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-11-17:/posts/2016/11/windows-explorer-undo-is-scary/</guid><category>blog</category><category>misc</category></item><item><title>Quick Thought On GDEX</title><link>https://www.jeffcomput.es/posts/2016/11/quick-thought-on-gdex/</link><description>&lt;p&gt;Couple of quick thoughts on &lt;a href="https://www.thegdex.com/"&gt;GDEX&lt;/a&gt; this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Big shout out to the &lt;a href="http://www.fatesecho.com/"&gt;Fate's Echo&lt;/a&gt; team! These guys are awesome and there game looks great! Just happened to meet them on the same day they met each other in person for the first time!&lt;/li&gt;
&lt;li&gt;Of all the games at the show, Collapsis from &lt;a href="http://www.wraithgames.com/"&gt;Wraith Games&lt;/a&gt; stood out with its simple, fun gameplay.&lt;/li&gt;
&lt;li&gt;The talk on arcade first development was very interesting. Enjoyed talking with the …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 01 Nov 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-11-01:/posts/2016/11/quick-thought-on-gdex/</guid><category>blog</category><category>events</category><category>software</category></item><item><title>Programming Language Popularity</title><link>https://www.jeffcomput.es/posts/2016/10/programming-language-popularity/</link><description>&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Complete data is now &lt;a href="https://www.jeffcomput.es/prog-lang-popularity"&gt;available here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following is some programming language popularity and average salary data collected from &lt;a href="http://www.indeed.com/"&gt;Indeed&lt;/a&gt; and the &lt;a href="http://www.bls.gov/"&gt;US Bureau of Labor Statistics&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The collected data included about 50 of the top programming languages in regular use. The popularity value is how a given language compares against all other languages. The employment number is an estimate for all of the US. The salary number is averaged over all the US …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 22 Oct 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-10-22:/posts/2016/10/programming-language-popularity/</guid><category>blog</category><category>software</category></item><item><title>Strange Electron Webview Behavior</title><link>https://www.jeffcomput.es/posts/2016/09/strange-electron-webview-behavior/</link><description>&lt;p&gt;Noticed some strange &lt;a href="http://electron.atom.io/docs/api/web-view-tag/"&gt;Electron &lt;code&gt;&amp;lt;webview&amp;gt;&lt;/code&gt;&lt;/a&gt; behavior while working on a proof-of-concept for the next version of &lt;a href="https://github.com/jeffrimko/Doctrine"&gt;Doctrine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have a simple page with a &lt;code&gt;&amp;lt;webview&amp;gt;&lt;/code&gt; tag displaying a local HTML file. If the local HTML file contains a link and the user clicks on it, the default browser should open the URL instead of the &lt;code&gt;&amp;lt;webview&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The following code produces the expected results:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nx"&gt;webview&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;will-navigate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Order is important or URL will open in …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 10 Sep 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-09-10:/posts/2016/09/strange-electron-webview-behavior/</guid><category>blog</category><category>software</category><category>javascript</category></item><item><title>Weekly Picks - Soft Skills</title><link>https://www.jeffcomput.es/posts/2016/08/weekly-picks-soft-skills/</link><description>&lt;p&gt;Just a single pick this time but it is quite exceptional.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://talkpython.fm/episodes/show/71/soft-skills-the-software-developer-s-life-manual"&gt;Talk Python To Me, Episode 71, Soft Skills&lt;/a&gt;&lt;/em&gt; - This episode has everything: solid advice for entrepreneurs, info on being a good employee, tips for interviewing. This podcast is excellent well worth a listen. I have not read John Sonmez's book yet but can't wait to after listening to this podcast.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 26 Aug 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-08-26:/posts/2016/08/weekly-picks-soft-skills/</guid><category>blog</category><category>picks</category></item><item><title>Quick Thoughts On Abstraction Conference</title><link>https://www.jeffcomput.es/posts/2016/08/quick-thoughts-on-abstraction-conference/</link><description>&lt;p&gt;Recently attended &lt;a href="http://abstractions.io/"&gt;Abstractions Conference&lt;/a&gt; in Pittsburgh. This was my first software-only conference. A few quick highlights from the convention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;While I have no particular application in mind yet, &lt;a href="http://elixir-lang.org/"&gt;Elixir&lt;/a&gt; sounds intriguing. For embedded systems, &lt;a href="http://nerves-project.org/"&gt;Nerves&lt;/a&gt; sound neat but maybe not quite ready for prime time.&lt;/li&gt;
&lt;li&gt;Joe Armstrong's idea of ubiquitous solar powered computing devices is quite interesting.&lt;/li&gt;
&lt;li&gt;Scott Hanselman gave a highly entertaining talk on the Cloud, JavaScript, and the evolution of web technologies. Think …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 23 Aug 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-08-23:/posts/2016/08/quick-thoughts-on-abstraction-conference/</guid><category>blog</category><category>events</category><category>software</category></item><item><title>Weekly Picks - Software Developer Showcase</title><link>https://www.jeffcomput.es/posts/2016/07/weekly-picks-software-developer-showcase/</link><description>&lt;p&gt;Something a little different this week. Picking a single software developer this week and showcasing a few of his/her projects.&lt;/p&gt;
&lt;p&gt;The developer this week is &lt;strong&gt;Lu Wang&lt;/strong&gt;, &lt;a href="https://github.com/coolwanglu"&gt;coolwanglu on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Software:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/coolwanglu/pdf2htmlEX"&gt;pdf2htmlEX&lt;/a&gt;&lt;/em&gt; - Fantastic PDF to HTML converter. I've tried a few similar utilities and this one produces the best results by far.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/coolwanglu/neovim-e"&gt;neovim-e&lt;/a&gt;&lt;/em&gt; - Electron-based GUI for Neovim.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/coolwanglu/vim.js"&gt;vim.js&lt;/a&gt;&lt;/em&gt; - Port of VIM to JavaScript. Looks like &lt;a href="https://github.com/kripken/emscripten"&gt;Emscripten&lt;/a&gt; is being used for the transpilation.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://github.com/coolwanglu/OK"&gt;OK …&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 31 Jul 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-07-31:/posts/2016/07/weekly-picks-software-developer-showcase/</guid><category>blog</category><category>picks</category><category>software</category></item><item><title>DevLog - Doctrine Updates</title><link>https://www.jeffcomput.es/posts/2016/07/devlog-doctrine-updates/</link><description>&lt;p&gt;I have been thinking over some updates for &lt;a href="https://github.com/jeffrimko/doctrine"&gt;Doctrine&lt;/a&gt;. In it's current state, Doctrine is a functional proof-of-concept of an application that renders AsciiDoc files while also applying some &lt;a href="https://github.com/jeffrimko/UnifiedStyleGuide/blob/master/doc/special_files/main.adoc"&gt;Unified Style Guide (USG)&lt;/a&gt; concepts. In the next iteration, my goal is to further integrate USG ideas to help set Doctrine apart from other AsciiDoc tools and also promote a standardized USG toolchain.&lt;/p&gt;
&lt;p&gt;Here's an example of a USG idea that is currently implemented in &lt;a href="https://github.com/jeffrimko/Doctrine/releases/tag/doctrine-0.1.0-alpha"&gt;Doctrine …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 26 Jul 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-07-26:/posts/2016/07/devlog-doctrine-updates/</guid><category>blog</category><category>software</category><category>devlog</category></item><item><title>Weekly Picks - Video Games</title><link>https://www.jeffcomput.es/posts/2016/07/weekly-picks-video-games/</link><description>&lt;p&gt;Couple of video game related picks for this week.&lt;/p&gt;
&lt;h4&gt;Games:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://ska-studios.com/salt/salt2.php"&gt;Salt and Santuary&lt;/a&gt;&lt;/em&gt; - I recently finished this on PC but it is available on PS4 also. This game is basically 2D Dark Souls and does not shy away from that fact. It is well made and quite fun!&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.ign.com/articles/2016/06/30/ign-unfiltered-08-xbox-co-creator-ed-fries"&gt;IGN Unfiltered Episode 8 - Ed Fries&lt;/a&gt;&lt;/em&gt; - Excellent interview with Xbox co-creator Ed Fries. I had not heard of him previously but he is very fascinating. He …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 22 Jul 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-07-22:/posts/2016/07/weekly-picks-video-games/</guid><category>blog</category><category>picks</category></item><item><title>Rollout Released</title><link>https://www.jeffcomput.es/posts/2016/07/rollout-released/</link><description>&lt;p&gt;Yesterday marked the release of my first video game. &lt;a href="https://play.google.com/store/apps/details?id=com.JeffRimko.Rollout"&gt;Rollout&lt;/a&gt; is an Android port of &lt;a href="https://www.jeffcomput.es/posts/2016/04/first-game-jam/"&gt;the project I started during the YSU game jam in April&lt;/a&gt;. Releasing the game on Android was an exercise in bringing an idea to completion and learning Unity. Big thanks to the &lt;a href="http://youngstowngamedevelopers.com/"&gt;Youngstown Game Developers group&lt;/a&gt; and all the wonderful artists that provided assets free of charge (see the credits screen for more info).&lt;/p&gt;
&lt;p&gt;Overall, I am pretty happy with …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 02 Jul 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-07-02:/posts/2016/07/rollout-released/</guid><category>blog</category><category>software</category></item><item><title>Unified Style Guide - Syntax Brainstorming</title><link>https://www.jeffcomput.es/posts/2016/06/unified-style-guide-syntax-brainstorming/</link><description>&lt;p&gt;The &lt;a href="https://github.com/jeffrimko/UnifiedStyleGuide"&gt;Unified Style Guide&lt;/a&gt; (aka USG) is a side project I've been slowly piecing together over the past few years. It started mainly as an effort to document my personal preferences for structuring files and folders. A special file reserved in the style guide is the &lt;a href="https://github.com/jeffrimko/UnifiedStyleGuide/blob/master/doc/special_files/main.adoc#13-directory-information"&gt;directory information file&lt;/a&gt; which simply provides a plain text description of the directory contents. When necessary, I have been using these files to describe the naming convention of the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 18 Jun 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-06-18:/posts/2016/06/unified-style-guide-syntax-brainstorming/</guid><category>blog</category><category>software</category><category>style</category></item><item><title>Weekly Picks - Python Gotcha Awareness</title><link>https://www.jeffcomput.es/posts/2016/05/weekly-picks-python-gotcha-awareness/</link><description>&lt;p&gt;While mostly straightforward and simple, Python still has its share of gotchas and gremlins, one such explored &lt;a href="https://www.jeffcomput.es/posts/2015/02/python-gotcha-globals-and-namespaces/"&gt;in this post&lt;/a&gt;. Familiarizing yourself with common gotchas can help avoid issues and aid debugging.&lt;/p&gt;
&lt;h4&gt;Articles:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make"&gt;The 10 Most Common Mistakes That Python Developers Make&lt;/a&gt;&lt;/em&gt; - Earlier versions of &lt;a href="https://github.com/jeffrimko/Qprompt"&gt;my Qprompt library&lt;/a&gt; suffered from mistake #1 (facepalm!). In my defense, there may be a violation of the &lt;a href="https://en.wikipedia.org/wiki/Principle_of_least_astonishment"&gt;principle of least astonishment&lt;/a&gt; here. However, I also understand that changing the …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 14 May 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-05-14:/posts/2016/05/weekly-picks-python-gotcha-awareness/</guid><category>blog</category><category>picks</category><category>python</category></item><item><title>First Game Jam</title><link>https://www.jeffcomput.es/posts/2016/04/first-game-jam/</link><description>&lt;p&gt;This past weekend, I participated in my first game jam. It was a lot of fun and a great learning opportunity; I learned more about game development in that 48 hours than in the past year. Here is a screenshot of my game in development:&lt;/p&gt;
&lt;p&gt;&lt;img alt="YSU Game Jam 2016" src="/images/game_jam_1.jpg" title="YSU Game Jam 2016"&gt;&lt;/p&gt;
&lt;p&gt;Pretty sweet, right? Here are a few links related to this event:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://youngstowngamedevelopers.com/game-jams/april-game-jam-2016/"&gt;Game Jam Event Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jeffrimko/GameJam-YSU2016"&gt;GitHub Repo For My Game&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jeffrimko.itch.io/breakout"&gt;Itch.io Page For My Game&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 05 Apr 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-04-05:/posts/2016/04/first-game-jam/</guid><category>blog</category><category>events</category><category>gamedev</category></item><item><title>Unified Style Guide Thoughts - Doctrine And Archiver</title><link>https://www.jeffcomput.es/posts/2016/03/unified-style-guide-thoughts-doctrine-and-archiver/</link><description>&lt;p&gt;The &lt;a href="https://github.com/jeffrimko/UnifiedStyleGuide"&gt;Unified Style Guide&lt;/a&gt; (USG) is a project that I have been slowly piecing together to better organize files and directories. The premise of the project (and all style guide projects) is to provide a straightforward guide that is well thought-out and takes the guesswork out of most use cases. I will anguish over all the trivial, mundane details so you don't have too!&lt;/p&gt;
&lt;p&gt;The two utilities that support the USG are &lt;a href="https://github.com/jeffrimko/Doctrine"&gt;Doctrine&lt;/a&gt; and &lt;a href="https://github.com/jeffrimko/Archiver"&gt;Archiver …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 18 Mar 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-03-18:/posts/2016/03/unified-style-guide-thoughts-doctrine-and-archiver/</guid><category>blog</category><category>software</category></item><item><title>Weekly Picks - Unusual Drinks</title><link>https://www.jeffcomput.es/posts/2016/03/weekly-picks-unusual-drinks/</link><description>&lt;p&gt;Been trying out a few unusual drinks (for me at least).&lt;/p&gt;
&lt;h4&gt;Food:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Coffee with butter&lt;/em&gt; - After listening to &lt;a href="http://www.jamesaltucher.com/2016/02/ep-153-dave-asprey/"&gt;Dave Asprey on the James Altucher Show&lt;/a&gt;, I had to try this. Not because of the potentially over-hyped medicinal benefits, but for two simple facts: coffee is delicious, butter is delicious. Turns out a mug of coffee with about 1 tablespoon of butter blended into it is pretty delicious! While still nutritionally skeptical of this combination, I …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 18 Mar 2016 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-03-18:/posts/2016/03/weekly-picks-unusual-drinks/</guid><category>blog</category><category>picks</category></item><item><title>QuickWin 0.3.0 Preview And Thoughts</title><link>https://www.jeffcomput.es/posts/2016/03/quickwin-030-preview-and-thoughts/</link><description>&lt;p&gt;Been working on some updates to &lt;a href="https://github.com/jeffrimko/QuickWin"&gt;QuickWin&lt;/a&gt; recently. QuickWin was ultimately developed to scratch a productivity itch that had been bugging me for a while. There are some similar projects available such as &lt;a href="https://github.com/christianrondeau/GoToWindow"&gt;GoToWindow&lt;/a&gt; and &lt;a href="https://github.com/studgeek/AltTabAHK"&gt;AltTabAHK&lt;/a&gt; but nothing quite hit the feature set I wanted. Overall, I am happy with how functional QuickWin has proven to be; it has quickly integrated into my workflow over the past few months of usage.&lt;/p&gt;
&lt;h4&gt;New Feature Examples&lt;/h4&gt;
&lt;p&gt;The …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 04 Mar 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-03-04:/posts/2016/03/quickwin-030-preview-and-thoughts/</guid><category>blog</category><category>software</category></item><item><title>Vim Tips - Helpful Leader Key Mappings</title><link>https://www.jeffcomput.es/posts/2016/02/vim-tips-helpful-leader-key-commands/</link><description>&lt;p&gt;The leader key is a useful way of creating custom mappings in Vim. While browsing code in normal mode, it can be useful to quickly toggle settings on and off or execute other commands. By defining mappings with the leader key, a short sequence of keys can be used to quickly execute commands. Check out &lt;code&gt;:help &amp;lt;Leader&amp;gt;&lt;/code&gt; for more information on the leader key and defining mappings.&lt;/p&gt;
&lt;p&gt;This post contains some examples from my vimrc …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 29 Feb 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-02-29:/posts/2016/02/vim-tips-helpful-leader-key-commands/</guid><category>blog</category><category>vim</category></item><item><title>Automate Stdin For Python Tests (Updated)</title><link>https://www.jeffcomput.es/posts/2016/02/automate-stdin-for-python-tests-updated/</link><description>&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This is an update to a &lt;a href="https://www.jeffcomput.es/posts/2016/01/automate-stdin-for-python-tests/"&gt;previous post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following can be used to programmatically set stdin for testing under Python 3.x:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;sys&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;io&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;StringIO&lt;/span&gt;
&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;StringIO&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;setinput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seek&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;truncate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seek&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Here is a quick example of using &lt;code&gt;setinput()&lt;/code&gt; in Python 3.x:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;setinput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Jeff&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Enter name:&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 25 Feb 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-02-25:/posts/2016/02/automate-stdin-for-python-tests-updated/</guid><category>blog</category><category>python</category></item><item><title>Vim/Python Compatibility Issue</title><link>https://www.jeffcomput.es/posts/2016/02/vimpython-compatibility-issue/</link><description>&lt;p&gt;Found out the hard way that certain versions of Vim are not compatible with certain versions of Python. I keep my installation of Vim 7.3.712 on Dropbox so I can use it across multiple computers. While trying to run gVim on a new PC with Python 2.7.11 installed, gVim would close without warning or an error message when trying to open files.&lt;/p&gt;
&lt;p&gt;Found out the cause was the one plugin I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 25 Feb 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-02-25:/posts/2016/02/vimpython-compatibility-issue/</guid><category>blog</category><category>python</category><category>vim</category></item><item><title>Weekly Picks - Systems</title><link>https://www.jeffcomput.es/posts/2016/01/weekly-picks-systems/</link><description>&lt;p&gt;Some system related picks this week.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://johnackley.com/systemsmarts/"&gt;System Smarts&lt;/a&gt;&lt;/em&gt; - New podcast focusing on all aspects of systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Software:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.graphviz.org/"&gt;Graphviz&lt;/a&gt;&lt;/em&gt; - Diagramming and visualization tool that uses a text-based markup. Works well for documenting system design.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.mcternan.me.uk/mscgen/"&gt;Mscgen&lt;/a&gt;&lt;/em&gt; - Message diagramming tool that uses a text-based markup. Great for documenting any system that has intercommunicating components.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 20 Jan 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-01-20:/posts/2016/01/weekly-picks-systems/</guid><category>blog</category><category>picks</category><category>podcasts</category><category>software</category></item><item><title>Automate Stdin For Python Tests</title><link>https://www.jeffcomput.es/posts/2016/01/automate-stdin-for-python-tests/</link><description>&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The information in this post applies to Python 2.x only. See &lt;a href="https://www.jeffcomput.es/posts/2016/02/automate-stdin-for-python-tests-updated/"&gt;this post&lt;/a&gt; for Python 3.x support.&lt;/p&gt;
&lt;p&gt;While working on Qprompt (a Python CLI based user input libary), I wanted to write some tests to check for regressions. The following lambda function allows stdin to be programmatically set:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;StringIO&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nn"&gt;sys&lt;/span&gt;
&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;StringIO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StringIO&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;setinput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;truncate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seek&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The following …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 09 Jan 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-01-09:/posts/2016/01/automate-stdin-for-python-tests/</guid><category>blog</category><category>python</category></item><item><title>Python Pattern Matching, Sorta</title><link>https://www.jeffcomput.es/posts/2016/01/python-pattern-matching-sorta/</link><description>&lt;p&gt;This trick is neat and potentially useful although maybe not very Pythonic:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;one&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt;
        &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;two&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt;
        &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;three&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt;
        &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The following form can be used instead:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; \
        &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;one&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; \
        &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;two&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; \
        &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;three&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; \
        &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 07 Jan 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-01-07:/posts/2016/01/python-pattern-matching-sorta/</guid><category>blog</category><category>python</category></item><item><title>Resolutions That Work</title><link>https://www.jeffcomput.es/posts/2016/01/resolutions-that-work/</link><description>&lt;p&gt;Last January, I made a resolution to walk 3 million steps during the year. With the help of a cheap step counter and a spreadsheet, I am happy to say it may have been the first New Years resolution that I actually completed! While preparing a list of resolutions for 2016, the following criteria will help guarantee success:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Progress must be measurable!&lt;/em&gt; - Keep track of your progress periodically to make sure you will hit your …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 03 Jan 2016 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2016-01-03:/posts/2016/01/resolutions-that-work/</guid><category>blog</category><category>misc</category></item><item><title>Wordless - A Better Document Toolchain</title><link>https://www.jeffcomput.es/posts/2015/11/wordless-a-better-document-toolchain/</link><description>&lt;p&gt;I was raised during a generation where writing on a computer was virtually synonymous with using Microsoft Word (little has changed since). However, as I grew versed in the landscape of software development utilities, I knew there had to be a better way to write. For me, the perfect writing toolchain needed the following qualities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Content should be portable.&lt;/li&gt;
&lt;li&gt;Content should play nice with version control and diff tools.&lt;/li&gt;
&lt;li&gt;Content should be grep-able.&lt;/li&gt;
&lt;li&gt;Structure emphasized …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 22 Nov 2015 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-11-22:/posts/2015/11/wordless-a-better-document-toolchain/</guid><category>blog</category><category>docs</category></item><item><title>Introducing Qprompt</title><link>https://www.jeffcomput.es/posts/2015/10/introducing-qprompt/</link><description>&lt;p&gt;Python is an excellent multipurpose language. However, when writing scripts (in the shell script sense), a decent command-line user interface is necessary. Qprompt is a library of simple command-line interface functions that should simplify common tasks. For example, to ask the user for an integer between 1 and 100, simply use the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;qprompt.ask_int(vld=range(1,101))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Menus are straightforward as well:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;menu = qprompt.Menu()&lt;/span&gt;
&lt;span class="err"&gt;menu.add(&amp;quot;1&amp;quot;, &amp;quot;Item 1&amp;quot;)&lt;/span&gt;
&lt;span class="err"&gt;menu.add(&amp;quot;2 …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 31 Oct 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-10-31:/posts/2015/10/introducing-qprompt/</guid><category>blog</category><category>python</category></item><item><title>Properly Plural Python Printing</title><link>https://www.jeffcomput.es/posts/2015/10/properly-plural-python-printing/</link><description>&lt;p&gt;This one is kind of silly but sometimes you just want messages to use the proper plural case. Here is an example in Python 2 (with a little help from &lt;a href="https://github.com/jeffrimko/Qprompt"&gt;Qprompt&lt;/a&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;qprompt&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;qprompt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ask_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;How many beers?&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vld&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Okay, &lt;/span&gt;&lt;span class="si"&gt;%u&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;.&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;beer&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;beers&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 31 Oct 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-10-31:/posts/2015/10/properly-plural-python-printing/</guid><category>blog</category><category>python</category></item><item><title>Introducing The Unified Style Guide</title><link>https://www.jeffcomput.es/posts/2015/08/introducing-the-unified-style-guide/</link><description>&lt;p&gt;Style guides are an important part of the software development process. They keep code consistent across projects and help maintain a level of cleanliness and professionalism. A few years ago, I realized there were no (to my knowledge) guides for general file and directory naming so I started one. Over time, I gradually updated it and eventually named it the Unified Style Guide with the lofty goal of one day expanding it to programming languages …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 30 Aug 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-08-30:/posts/2015/08/introducing-the-unified-style-guide/</guid><category>blog</category><category>style</category><category>docs</category></item><item><title>Weekly Picks - Python</title><link>https://www.jeffcomput.es/posts/2015/06/weekly-picks-python/</link><description>&lt;p&gt;Just a couple of Python related picks this week.&lt;/p&gt;
&lt;h4&gt;Podcasts:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.talkpythontome.com/"&gt;Talk Python To Me&lt;/a&gt;&lt;/em&gt; - Relatively new podcast all about Python. Excellent and informative!&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Software Development:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.lfd.uci.edu/~gohlke/pythonlibs/"&gt;Unofficial Windows Binaries for Python Extension Packages&lt;/a&gt;&lt;/em&gt; - This site is an occasional lifesaver! Sometimes it can be tricky getting a third-party Python library running on a PC. This site provides pre-built libraries that are ready to install.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 20 Jun 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-06-20:/posts/2015/06/weekly-picks-python/</guid><category>blog</category><category>picks</category><category>podcasts</category></item><item><title>Weekly Picks - Automate The Boring Stuff</title><link>https://www.jeffcomput.es/posts/2015/05/weekly-picks-automate-the-boring-stuff/</link><description>&lt;p&gt;This week's pick is a great book for those interested in practical applications and automation using Python.&lt;/p&gt;
&lt;h4&gt;Books:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://automatetheboringstuff.com/"&gt;Automate the Boring Stuff (online)&lt;/a&gt;&lt;/em&gt; - The free book website.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.amazon.com/gp/product/1593275994/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1593275994&amp;amp;linkCode=as2"&gt;Automate the Boring Stuff (paperback)&lt;/a&gt;&lt;/em&gt; - Physical book from Amazon.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 03 May 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-05-03:/posts/2015/05/weekly-picks-automate-the-boring-stuff/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Reddit</title><link>https://www.jeffcomput.es/posts/2015/04/weekly-picks-reddit/</link><description>&lt;p&gt;Picks are a bit late this week but the theme will be "Reddit". I spend arguably too much time browsing and reading interesting articles on various sub-reddits.&lt;/p&gt;
&lt;h4&gt;Websites:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.reddit.com/"&gt;Reddit&lt;/a&gt;&lt;/em&gt; - The main site.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.reddit.com/r/programming"&gt;/r/Programming&lt;/a&gt;&lt;/em&gt; - Discussion about programming in general.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.reddit.com/r/todayilearned"&gt;/r/TodayILearned&lt;/a&gt;&lt;/em&gt; - Learn something interesting? Post it here.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://www.reddit.com/r/explainlikeimfive"&gt;/r/ExplainLikeImFive&lt;/a&gt;&lt;/em&gt; - Request simple explanations for any questions.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 26 Apr 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-04-26:/posts/2015/04/weekly-picks-reddit/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Meetups And Makerspaces</title><link>https://www.jeffcomput.es/posts/2015/04/weekly-picks-meetups-and-makerspaces/</link><description>&lt;p&gt;People in big cities are spoiled. Cities tend to offer numerous interesting meetups with dozens of members. Additionally, local makerspaces (or hackerspaces) are fairly common in larger areas.&lt;/p&gt;
&lt;p&gt;Lately I have been involved in a few meetup groups around the Shenango and Mahoning Valley area. The experience has been very fulfilling and it is great to see smaller cities getting some interesting groups organized.&lt;/p&gt;
&lt;h4&gt;Events:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://hackysu.com/"&gt;HackYSU&lt;/a&gt;&lt;/em&gt; - YSU's first official meetup is this weekend. Only students …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 16 Apr 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-04-16:/posts/2015/04/weekly-picks-meetups-and-makerspaces/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Headphones</title><link>https://www.jeffcomput.es/posts/2015/04/weekly-picks-headphones/</link><description>&lt;p&gt;The theme for the picks this week is "headphones". I frequently listen to podcasts and music so good headphones are a must.&lt;/p&gt;
&lt;h4&gt;Products:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Audio-Technica ATH-M50s&lt;/em&gt; - Hands down the best sounding headphones I have owned. The only downside is the cable length which can sometimes be a nuisance as I tend to be only a foot or two away from the audio source. Consider the newer ATH-M50x model with removable cable.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Motorola MOTOROKR S305&lt;/em&gt; - Simple design …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 09 Apr 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-04-09:/posts/2015/04/weekly-picks-headphones/</guid><category>blog</category><category>picks</category></item><item><title>Weekly Picks - Initial</title><link>https://www.jeffcomput.es/posts/2015/04/weekly-picks-initial/</link><description>&lt;p&gt;&lt;a href="https://twitter.com/cmaxw"&gt;Charles Max Wood&lt;/a&gt; produces some excellent programming-related podcasts. All his podcasts have a similar format which include a picks section near the end of each episode. During this section, a participant can suggest anything (not just programming related) that they have enjoyed or found useful. I am going to try something similar with this blog and post a list of picks weekly (or as close to weekly as possible).&lt;/p&gt;
&lt;h4&gt;Articles:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://medium.com/@fogleman/i-made-an-nes-emulator-here-s-what-i-learned-about-the-original-nintendo-2e078c9b28fe"&gt;I made an NES emulator …&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 02 Apr 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-04-02:/posts/2015/04/weekly-picks-initial/</guid><category>blog</category><category>picks</category></item><item><title>Testing Embedded Systems With Python</title><link>https://www.jeffcomput.es/posts/2015/03/testing-embedded-systems-with-python/</link><description>&lt;p&gt;Testing embedded systems with Python (or at all, really) is an extensive topic. This post is not going to dive too deep into the subject but instead suggest one potential approach from a high level as well as cover a few third party libraries that might make life a bit easier.&lt;/p&gt;
&lt;p&gt;Before going any further, let's take a look at why you might want to incorporate Python into your test solution. Including a high-level scripting …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 15 Mar 2015 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-03-15:/posts/2015/03/testing-embedded-systems-with-python/</guid><category>blog</category><category>python</category></item><item><title>Python Data Serialization Comparison</title><link>https://www.jeffcomput.es/posts/2015/02/python-data-serialization-comparison/</link><description>&lt;p&gt;Did a quick comparison of some data serialization options for Python. My requirements for the serialization format were the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Input data is typically either a list or a dictionary.&lt;/li&gt;
&lt;li&gt;Interoperability is important and must be compatible with at least C.&lt;/li&gt;
&lt;li&gt;A human readable format is desirable but not necessary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Based on the requirements, I took a look at the following Python packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pypi.python.org/pypi/PyYAML"&gt;PyYaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.python.org/pypi/python-cjson"&gt;python-cjson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.python.org/pypi/ujson"&gt;ujson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.python.org/pypi/u-msgpack-python"&gt;u-msgpack-python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.python.org/pypi/msgpack-python"&gt;msgpack-python&lt;/a&gt; &lt;strong&gt;NOTE: Disqualified since had trouble running on …&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 21 Feb 2015 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-02-21:/posts/2015/02/python-data-serialization-comparison/</guid><category>blog</category><category>python</category></item><item><title>Python Gotcha - Globals And Namespaces</title><link>https://www.jeffcomput.es/posts/2015/02/python-gotcha-globals-and-namespaces/</link><description>&lt;p&gt;After several years of regular Python use, I really admire that things work how I expect about 90% of the time. To be fair, the other 10% is typically user error. It is easy to overlook nuances in a language, even if you should know better.&lt;/p&gt;
&lt;p&gt;I ran into this gotcha in Python recently: when importing a global variable from a module explicitly by name, that variable will be bound to the local namespace. If …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 01 Feb 2015 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-02-01:/posts/2015/02/python-gotcha-globals-and-namespaces/</guid><category>blog</category><category>python</category></item><item><title>Thoughts On Writing BakeScale</title><link>https://www.jeffcomput.es/posts/2015/01/thoughts-on-writing-bakescale/</link><description>&lt;p&gt;Recently, I wrote a simple web app called &lt;a href="http://bakescale.info"&gt;BakeScale&lt;/a&gt; which converts common cooking and baking ingredients between weight and volume. I am not a web developer by profession so rather than using the new hotness I used slightly older versions of &lt;a href="http://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt; and &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; since I have some prior experience with both; just a few quick thoughts on these two web development tools.&lt;/p&gt;
&lt;p&gt;While jQuery seems to be falling out of favor with the web …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 21 Jan 2015 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-01-21:/posts/2015/01/thoughts-on-writing-bakescale/</guid><category>blog</category><category>javascript</category></item><item><title>Directory Information Please</title><link>https://www.jeffcomput.es/posts/2015/01/directory-information-please/</link><description>&lt;p&gt;Sometimes a directory structure needs a little extra information. Even the most well thought-out directory names lack the expressiveness of a few short remarks. My solution for these cases has been to add a file named &lt;code&gt;__dir_info__.txt&lt;/code&gt; to a directory requiring additional details. This file provides an explanation of the directory's purpose, which typically starts with &lt;code&gt;This directory contains ...&lt;/code&gt;, and is formatted using &lt;a href="http://asciidoc.org/"&gt;AsciiDoc&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let's look at an example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;= foobar
:date: 5 January 2015 …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 05 Jan 2015 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2015-01-05:/posts/2015/01/directory-information-please/</guid><category>blog</category><category>style</category><category>asciidoc</category></item><item><title>Generating Documents With Jinja2 and YAML</title><link>https://www.jeffcomput.es/posts/2014/11/generating-documents-with-jinja2-and-yaml/</link><description>&lt;p&gt;Quick example of generating documents by rendering data from a YAML file through a &lt;a href="http://jinja.pocoo.org/docs/dev/"&gt;Jinja2&lt;/a&gt; template. The target output is Latex &lt;a href="http://www.ctan.org/tex-archive/macros/latex/contrib/vhistory"&gt;vhistory&lt;/a&gt; data (&lt;code&gt;revs.tex&lt;/code&gt;) which will be included in main document (&lt;code&gt;main.tex&lt;/code&gt;). The output is generated by a Python script (&lt;code&gt;create_revs_tex.py&lt;/code&gt;) from YAML data (&lt;code&gt;revs.yaml&lt;/code&gt;).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;yaml&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;jinja2&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Template&lt;/span&gt;

&lt;span class="c1"&gt;# For this example, assume that stdout will be redirected to `revs.tex`.&lt;/span&gt;
&lt;span class="c1"&gt;# In the template, the `{#--#}` entries are used to …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 22 Nov 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-11-22:/posts/2014/11/generating-documents-with-jinja2-and-yaml/</guid><category>blog</category><category>python</category></item><item><title>gArchiver Demo</title><link>https://www.jeffcomput.es/posts/2014/11/garchiver-demo/</link><description>&lt;p&gt;Made a quick video to demonstrate some of the features of &lt;a href="https://github.com/jeffrimko/Archiver"&gt;gArchiver&lt;/a&gt;:&lt;/p&gt;
&lt;div class="responsive-container"&gt;
&lt;iframe src="//www.youtube.com/embed/TW-0b3iVl1k" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;I use gArchiver frequently and it has proven invaluable. The ability to quickly add metadata to a zip file is handy. Here are a couple of typical use cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keeping track of where files came from.&lt;/strong&gt; When I need to keep a local copy of a received file, its useful to make a quick note of who sent it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grouping files together as …&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 15 Nov 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-11-15:/posts/2014/11/garchiver-demo/</guid><category>blog</category><category>software</category></item><item><title>Comment Groups</title><link>https://www.jeffcomput.es/posts/2014/11/comment-groups/</link><description>&lt;p&gt;Sometimes normal leading comments just aren't enough, instead a visual method of grouping blocks of code together is needed. The following pattern seems to work very well:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;&amp;lt;comment-symbol&amp;gt;{-- &amp;lt;group-text&amp;gt; --&lt;/span&gt;
&lt;span class="err"&gt;&amp;lt;code-here&amp;gt;&lt;/span&gt;
&lt;span class="err"&gt;&amp;lt;comment-symbol&amp;gt;----}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Here is an example in C:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="cm"&gt;/*{-- Some grouped variables. --*/&lt;/span&gt;
&lt;span class="cm"&gt;/* Maintains foo-y stuff. */&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cm"&gt;/* Maintains bar-y stuff. */&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;bar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cm"&gt;/*----}*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Here is an example in Python:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;#{-- Some cool code here. --&lt;/span&gt;
&lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;bar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="c1"&gt;#----}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Multi-line example in JavaScript:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;//{-- Big long explanation of a …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 06 Nov 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-11-06:/posts/2014/11/comment-groups/</guid><category>blog</category><category>software</category></item><item><title>Doctrine Goals</title><link>https://www.jeffcomput.es/posts/2014/10/doctrine-goals/</link><description>&lt;p&gt;This past weekend, I started a side project named Doctrine. It is a desktop application that simplifies viewing the rendered output of an &lt;a href="http://asciidoc.org/"&gt;AsciiDoc&lt;/a&gt; text file. A quick demo video is shown below:&lt;/p&gt;
&lt;div class="responsive-container"&gt;
&lt;iframe src="//www.youtube.com/embed/LfnmNqXEiFg" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;The motivation behind Doctrine is to streamline the user experience when writing documents in plain text markup. Currently I am only focusing on AsciiDoc but compatibility with other formats (Markdown, ReStructuredText, etc) could be added in the future (integration with &lt;a href="http://johnmacfarlane.net/pandoc/"&gt;Pandoc&lt;/a&gt; is …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 22 Oct 2014 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-10-22:/posts/2014/10/doctrine-goals/</guid><category>blog</category><category>doctrine</category><category>asciidoc</category><category>docs</category></item><item><title>Hacking Together HTML With YAML And Mustache</title><link>https://www.jeffcomput.es/posts/2014/09/hacking-together-html-with-yaml-and-mustache/</link><description>&lt;p&gt;Forewarning, this is a hack and an ugly one too. Without getting into the backstory, the idea was to see if it is possible to render &lt;a href="http://www.yaml.org/"&gt;YAML&lt;/a&gt; data to HTML using a &lt;a href="http://mustache.github.io/"&gt;Mustache&lt;/a&gt; template, all locally (i.e. no server, just a single local HTML file). Turns out it is possible... sort of.&lt;/p&gt;
&lt;p&gt;Before getting to the code, a few notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This probably shouldn't be used for anything ever (although it was a fun experiment …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 15 Sep 2014 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-09-15:/posts/2014/09/hacking-together-html-with-yaml-and-mustache/</guid><category>blog</category><category>javascript</category><category>yaml</category></item><item><title>Thoughts On Script Naming</title><link>https://www.jeffcomput.es/posts/2014/08/thoughts-on-script-naming/</link><description>&lt;p&gt;For a while now, I have had the mindset that any high-level operation related to a software project should be captured as an OS-native script kept either in the repo's root directory or an appropriate subdirectory. For example, the following scripts are located in the root directory of my blog repo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;_Build_HTML.bat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_Cleanup.bat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_Deploy_SSH.bat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_Run_Test_Server.bat&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A few things worth noting about the filenames alone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The scripts are Windows-native batch files since …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 11 Aug 2014 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-08-11:/posts/2014/08/thoughts-on-script-naming/</guid><category>blog</category><category>software</category></item><item><title>C Polymorphism</title><link>https://www.jeffcomput.es/posts/2014/05/c-polymorphism/</link><description>&lt;p&gt;Polymorphism, when done right, is a powerful method of simplifying software implementation. There are multiple &lt;a href="http://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Types_of_polymorphism"&gt;types of polymorphism&lt;/a&gt;, here is a simple example of runtime (aka dynamic) polymorphism in C:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&lt;/span&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&lt;/span&gt;

&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;animal_s&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;speak&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;animal_t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;speak_like_a_duck&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;quack!&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;speak_like_a_dog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;woof!&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;animal_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nf"&gt;create_duck&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;animal_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;duck&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;malloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;animal_t&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="n"&gt;duck&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;speak&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;speak_like_a_duck&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;duck&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;animal_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nf"&gt;create_dog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;animal_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;dog …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 04 May 2014 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-05-04:/posts/2014/05/c-polymorphism/</guid><category>blog</category><category>c</category></item><item><title>C Moving Average</title><link>https://www.jeffcomput.es/posts/2014/04/c-moving-average/</link><description>&lt;p&gt;Moving averages are useful since they do not require a buffer of samples to be maintained. Here is a simple implementation in C:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&lt;/span&gt;

&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nf"&gt;ave&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;fAve&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;fSmp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;fSmp&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;weight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0f&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;fSmp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;fAve&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;weight&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;fAve&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fAve&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="cm"&gt;/* Run until user enters …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 26 Apr 2014 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-04-26:/posts/2014/04/c-moving-average/</guid><category>blog</category><category>c</category></item><item><title>Python Geometric Mean</title><link>https://www.jeffcomput.es/posts/2014/03/python-geometric-mean/</link><description>&lt;p&gt;Need to calculate a geometric mean in Python? You could use &lt;a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mstats.gmean.html"&gt;Numpy&lt;/a&gt; or this one-liner:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# NOTE: This import is only needed for Python3.&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;functools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;reduce&lt;/span&gt;

&lt;span class="c1"&gt;# Geometric mean of list `n`:&lt;/span&gt;
&lt;span class="n"&gt;geomean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;geomean&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;span class="c1"&gt;# Result: 2.2133638394&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 06 Mar 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-03-06:/posts/2014/03/python-geometric-mean/</guid><category>blog</category><category>python</category></item><item><title>PhysicsJS Control Sandbox</title><link>https://www.jeffcomput.es/posts/2014/03/physicsjs-control-sandbox/</link><description>&lt;p&gt;Here is a neat little control sandbox put together using &lt;a href="http://wellcaffeinated.net/PhysicsJS/"&gt;PhysicsJS&lt;/a&gt; and &lt;a href="http://jsfiddle.net/Jr5G4/13/light/"&gt;JSFiddle&lt;/a&gt;. Try implementing your own &lt;code&gt;stepController()&lt;/code&gt; to see if you can balance the circle above the square.&lt;/p&gt;
&lt;!-- &lt;iframe width="100%" height="300" src="http://jsfiddle.net/Jr5G4/16/embedded/js%2Cresult" allowfullscreen="allowfullscreen" frameborder="0"&gt;&lt;/iframe&gt; --&gt;
&lt;!-- &lt;script async src="//jsfiddle.net/Jr5G4/17/embed/js,result/"&gt;&lt;/script&gt; --&gt;

&lt;iframe width="100%" height="300" src="//jsfiddle.net/Jr5G4/17/embedded/js,result/" allowfullscreen="allowfullscreen" frameborder="0"&gt;&lt;/iframe&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 04 Mar 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-03-04:/posts/2014/03/physicsjs-control-sandbox/</guid><category>blog</category><category>javascript</category></item><item><title>Python String Index Replace</title><link>https://www.jeffcomput.es/posts/2014/03/python-string-index-replace/</link><description>&lt;p&gt;Python does not allow string to be modified via indexed assignment. For example, &lt;code&gt;a = "hello"; a[1] = "x"&lt;/code&gt; will produce a &lt;code&gt;TypeError: 'str' object does not support item assignment&lt;/code&gt; error. Grr!&lt;/p&gt;
&lt;p&gt;The following one-liner &lt;code&gt;stridxrep()&lt;/code&gt; can be used if the need ever arises:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;hello&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# Python doesn&amp;#39;t allow the following:&lt;/span&gt;
&lt;span class="c1"&gt;# a[1] = &amp;quot;x&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# A &amp;#39;string index replace&amp;#39; function.&lt;/span&gt;
&lt;span class="n"&gt;stridxrep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;([(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 01 Mar 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-03-01:/posts/2014/03/python-string-index-replace/</guid><category>blog</category><category>python</category></item><item><title>Four Technologies for 2014</title><link>https://www.jeffcomput.es/posts/2014/02/four-technologies-for-2014/</link><description>&lt;p&gt;Technology moves fast. Really fast. The following are some software technologies that I will be keeping an eye on in 2014:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.docker.io/"&gt;Docker&lt;/a&gt;&lt;/strong&gt; - Brilliant container manager.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.rust-lang.org/"&gt;Rust&lt;/a&gt;&lt;/strong&gt; - Promising systems language.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/kripken/emscripten/wiki"&gt;Emscripten&lt;/a&gt;&lt;/strong&gt; - Mind-bending JavaScript compiler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://d3js.org/"&gt;D3.js&lt;/a&gt;&lt;/strong&gt; - Beautiful data visualization.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While these technologies are not necessarily new, my prior experience with them is limited.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 10 Feb 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-02-10:/posts/2014/02/four-technologies-for-2014/</guid><category>blog</category><category>software</category></item><item><title>Task Lists In AsciiDoc</title><link>https://www.jeffcomput.es/posts/2014/02/task-lists-in-asciidoc/</link><description>&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: An update to this post is &lt;a href="https://www.jeffcomput.es/posts/2017/04/better-task-lists-in-asciidoc/"&gt;available here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Task lists are great! Need to do something eventually but don't have the time or motivation to do it now? Add it to a task list (think of it as procrastination management)!&lt;/p&gt;
&lt;p&gt;When managing task lists on a computer, I prefer a file-based plain-text approach. As a software developer and avid Vim user, I have found this method to be the most flexible, reliable, and easy …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 06 Feb 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-02-06:/posts/2014/02/task-lists-in-asciidoc/</guid><category>blog</category><category>asciidoc</category><category>vim</category></item><item><title>Introducing CsvPal</title><link>https://www.jeffcomput.es/posts/2014/01/introducing-csvpal/</link><description>&lt;p&gt;When picking a simple but useful data format, CSV is tough to beat. However, looking through large files can be cumbersome. For this reason, I threw together &lt;a href="https://github.com/jeffrimko/CsvPal"&gt;CsvPal&lt;/a&gt;, a simple command-line utility for filtering out columns of interest. Check it out if you frequently work with large CSV files.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 19 Jan 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-01-19:/posts/2014/01/introducing-csvpal/</guid><category>blog</category><category>python</category></item><item><title>My Blogging Workflow</title><link>https://www.jeffcomput.es/posts/2014/01/my-blogging-workflow/</link><description>&lt;p&gt;I recently switched from Blogger to this new blog (JeffComputes). Blogger is competent and feature-rich however I wanted a bit more control over my blogging platform. The blog is now powered by &lt;a href="http://www.getpelican.com/"&gt;Pelican&lt;/a&gt;, a great static website generator written in Python. The theme is a &lt;a href="https://github.com/jeffrimko/fresh-jeffcomputes"&gt;customized version&lt;/a&gt; of &lt;a href="https://github.com/jsliang/pelican-fresh"&gt;fresh&lt;/a&gt; by Jui-Shan Liang. The hosting is provided by &lt;a href="http://ramnode.com/"&gt;RamNode&lt;/a&gt; and their great VPS lineup. The workflow for writing a post looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;All of the …&lt;/li&gt;&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 09 Jan 2014 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2014-01-09:/posts/2014/01/my-blogging-workflow/</guid><category>blog</category></item><item><title>Quickly Render AsciiDoc Notes</title><link>https://www.jeffcomput.es/posts/2013/12/quickly-render-asciidoc-notes/</link><description>&lt;p&gt;&lt;a href="http://asciidoc.org/"&gt;AsciiDoc&lt;/a&gt; is a great markup format for writing notes. In fact, almost all computer-based notes I write are in AsciiDoc; it is simple yet expressive, portable, and most importantly, grepable.&lt;/p&gt;
&lt;p&gt;While Vim is my primary tool for viewing AsciiDoc files, looking through the raw text can leave a bit to be desired. Longing for the beautifully rendered output that only an AsciiDoc file can provide, I threw together the following simple (and ugly) Python script …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Mon, 30 Dec 2013 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-12-30:/posts/2013/12/quickly-render-asciidoc-notes/</guid><category>blog</category><category>asciidoc</category><category>python</category></item><item><title>New Blog</title><link>https://www.jeffcomput.es/posts/2013/12/new-blog/</link><description>&lt;p&gt;Welcome to my new blog, JeffComputes. All previous posts have been imported from my old blog, Audiodidactic. This blog is powered by &lt;a href="http://blog.getpelican.com/"&gt;Pelican&lt;/a&gt;, allowing me to write content directly as &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt; or &lt;a href="http://asciidoc.org/"&gt;AsciiDoc&lt;/a&gt; files. I will post a writeup with more information about my blogging process soon. Thanks for reading!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Thu, 26 Dec 2013 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-12-26:/posts/2013/12/new-blog/</guid><category>blog</category></item><item><title>Vim Highlight Shortcuts</title><link>https://www.jeffcomput.es/posts/2013/12/vim-highlight-shortcuts/</link><description>&lt;p&gt;Highlighting in Vim is super useful when trying to quickly see where something is being used. The following commands can be added to your vimrc file to make highlighting a breeze:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&amp;quot;{-- Commands to highlight the word under the cursor without moving the buffer view or cursor. --
&amp;quot; Case sensitive, partial match inclusive.
noremap hi :set hlsearch:let @/=&amp;#39;&amp;#39;
&amp;quot; Case sensitive, no partial match.
noremap ho :set hlsearch:let @/=&amp;#39;\&amp;lt;\&amp;gt;&amp;#39;
&amp;quot; Case insensitive, partial match inclusive.
noremap hu :set hlsearch …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 14 Dec 2013 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-12-14:/posts/2013/12/vim-highlight-shortcuts/</guid><category>blog</category><category>vim</category></item><item><title>Podcasts For Software Developers</title><link>https://www.jeffcomput.es/posts/2013/11/podcasts-for-software-developers/</link><description>&lt;p&gt;Some great podcasts covering topics related to software development:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://rubyrogues.com/"&gt;Ruby Rogues&lt;/a&gt; - The topics covered by this show are fairly broad and are applicable even if you are not a Ruby or even a web developer. For example, a recent episode discussed how to learn new skills as a developer. Conversational format; new episodes weekly.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.jupiterbroadcasting.com/show/coderradio/"&gt;Coder Radio&lt;/a&gt; - Topics tend to be fairly non-technical and mainly revolve around recent news, mobile development and contracting. Conversational format; new …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 24 Nov 2013 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-11-24:/posts/2013/11/podcasts-for-software-developers/</guid><category>blog</category><category>podcasts</category><category>picks</category></item><item><title>Vim Plugin Picks</title><link>https://www.jeffcomput.es/posts/2013/11/vim-plugin-picks/</link><description>&lt;p&gt;The following are a few Vim plugins that really boost productivity with this fantastic editor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Lokaltog/vim-easymotion"&gt;EasyMotion&lt;/a&gt; - Makes moving to a specific location a breeze; see it in action &lt;a href="http://www.youtube.com/watch?v=Dmv6-dguS3g"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sandeepcr529/Buffet.vim"&gt;Buffet&lt;/a&gt; - My favorite plugin for moving between open buffers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kien/ctrlp.vim"&gt;CtrlP&lt;/a&gt; - Quickly open files within a project directory structure via fuzzy search.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitbucket.org/ns9tks/vim-fuzzyfinder/"&gt;FuzzyFinder&lt;/a&gt; - Fuzzy searching for buffers, files, tags, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vim-scripts/mru.vim"&gt;MRU&lt;/a&gt; - Simple plugin that shows a list of the most recently used files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quick note on using …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 09 Nov 2013 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-11-09:/posts/2013/11/vim-plugin-picks/</guid><category>blog</category><category>vim</category><category>picks</category></item><item><title>Parsing With Parsimonious</title><link>https://www.jeffcomput.es/posts/2013/05/parsing-with-parsimonious/</link><description>&lt;p&gt;Recently I have been playing around with a parsing library for Python called &lt;a href="https://github.com/erikrose/parsimonious"&gt;Parsimonious&lt;/a&gt;. So far, I have been very impressed with it. Examples can be a bit hard to find; the following is a simple CSV parser:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;parsimonious.grammar&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Grammar&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;parsimonious.nodes&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;NodeVisitor&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;EntryParser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NodeVisitor&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;grammar&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
        &lt;span class="n"&gt;ast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Grammar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grammar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;visit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ast&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;visit_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;vc&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 08 May 2013 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-05-08:/posts/2013/05/parsing-with-parsimonious/</guid><category>blog</category><category>python</category></item><item><title>Hidden Fossil Features</title><link>https://www.jeffcomput.es/posts/2013/04/hidden-fossil-features/</link><description>&lt;p&gt;The &lt;a href="http://fossil-scm.org/"&gt;Fossil&lt;/a&gt; version control software has a few cool features that are somewhat hidden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RSS Timeline&lt;/strong&gt; - Add &lt;code&gt;.rss&lt;/code&gt; after a projects timeline URL to get an RSS feed; &lt;a href="http://fossil-scm.org/index.html/timeline.rss"&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Link To Line Number&lt;/strong&gt; - Add &lt;code&gt;?ln=&lt;/code&gt; to an artifacts URL to link directly to a given line number; &lt;a href="http://fossil-scm.org/index.html/artifact/e09a3a97c8a7c06a3007180d3ee68e08d7efdaf9?ln=116"&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Fri, 19 Apr 2013 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-04-19:/posts/2013/04/hidden-fossil-features/</guid><category>blog</category><category>fossil</category></item><item><title>Furnace Debugging</title><link>https://www.jeffcomput.es/posts/2013/02/furnace-debugging/</link><description>&lt;p&gt;A few days ago, the blower motor on my Carrier Weathermaker 9200 furnace stopped working. Luckily, this model of furnace provides quite a bit of debugging information printed on the inside of the door. It was very straightforward to test the blower motor and confirm that it was not the source of the problem. After a bit of poking around with a multimeter, the only remaining possibility was the blower motor relay.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Resoldered Relay Trace on Control PCB" src="/images/relay_fix.png" title="Resoldered Relay Trace on Control PCB"&gt;&lt;/p&gt;
&lt;p&gt;This furnace is …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 17 Feb 2013 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-02-17:/posts/2013/02/furnace-debugging/</guid><category>blog</category><category>hardware</category><category>misc</category></item><item><title>Vim For Health</title><link>https://www.jeffcomput.es/posts/2013/02/vim-for-health/</link><description>&lt;p&gt;Today I was watching a video on using Vim as a Python IDE when &lt;a href="https://www.youtube.com/watch?v=YhqsjUUHj6g#t=2m50s"&gt;a
comment about the health benefits of
Vim&lt;/a&gt; caught my
attention. Oddly enough, one of the reasons I decided to learn Vim was
because of hand pain. After switching to Vim full-time, I have
experienced less pain and could not imagine going back.&lt;/p&gt;
&lt;p&gt;One additional step I took was to remap the left Ctrl key to Caps Lock.
This has made …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Tue, 05 Feb 2013 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2013-02-05:/posts/2013/02/vim-for-health/</guid><category>blog</category><category>vim</category></item><item><title>Qt 4.8.4 And MinGW Quick Start</title><link>https://www.jeffcomput.es/posts/2012/12/qt-484-and-mingw-quick-start/</link><description>&lt;p&gt;The following are instructions for installing &lt;a href="http://qt-project.org/"&gt;Qt&lt;/a&gt; and compiling a demo application using the &lt;a href="http://www.mingw.org/"&gt;MinGW&lt;/a&gt; toolchain:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the Qt 4.8.4 libraries installer &lt;a href="http://releases.qt-project.org/qt4/source/qt-win-opensource-4.8.4-mingw.exe"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Run the installer. If a warning message about the version of the &lt;code&gt;w32api.h&lt;/code&gt; file appears ignore it and continue the installation (my install is version 3.17 and appears to work fine).&lt;/li&gt;
&lt;li&gt;By default, the installer does not add the Qt toolchain to the PATH. Instead, it provides a …&lt;/li&gt;&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 30 Dec 2012 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-12-30:/posts/2012/12/qt-484-and-mingw-quick-start/</guid><category>blog</category><category>qt</category></item><item><title>Vim Zoom Hack</title><link>https://www.jeffcomput.es/posts/2012/12/vim-zoom-hack/</link><description>&lt;p&gt;When writing large documents with a text editor, it is sometimes useful to zoom out and get a high-level view of the file (I believe Sublime Text has a feature called minimap that does this). This functionality can be added to gVim with a simple vimrc addition (to my knowledge, this will not work with regular Vim).&lt;/p&gt;
&lt;p&gt;Add the zoom out command with the following: &lt;code&gt;noremap &amp;lt;Leader&amp;gt;zo :set guifont=courier_new:h4&amp;lt;CR&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Add the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 22 Dec 2012 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-12-22:/posts/2012/12/vim-zoom-hack/</guid><category>blog</category><category>vim</category></item><item><title>Docopt</title><link>https://www.jeffcomput.es/posts/2012/12/docopt/</link><description>&lt;p&gt;While browsing YouTube recently, I stumbled upon &lt;a href="http://www.youtube.com/watch?v=pXhcPJK5cMc"&gt;a video&lt;/a&gt; about a great third-party Python module called &lt;a href="http://www.docopt.org/"&gt;Docopt&lt;/a&gt;. It greatly simplifies writing command-line utilities; instead of writing custom logic using the standard library &lt;code&gt;optparse&lt;/code&gt; or &lt;code&gt;argparse&lt;/code&gt; modules, you simply write the usage docs for the utility and Docopt handles the parsing. Check out the documentation; there are some great examples that really showcase the power of this module.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 01 Dec 2012 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-12-01:/posts/2012/12/docopt/</guid><category>blog</category><category>python</category></item><item><title>PopPage</title><link>https://www.jeffcomput.es/posts/2012/12/poppage/</link><description>&lt;p&gt;Recently, I had a need for a very lightweight static website generator. The idea was to have &lt;a href="http://www.methods.co.nz/asciidoc/"&gt;AsciiDoc&lt;/a&gt; and &lt;a href="http://johnmacfarlane.net/pandoc/"&gt;Pandoc&lt;/a&gt; handle the markup to HTML conversions while the generator would simply apply the HTML content to a &lt;a href="http://jinja.pocoo.org/docs/"&gt;Jinja2&lt;/a&gt; template. The result was &lt;a href="http://github.com/jeffrimko/PopPage"&gt;PopPage&lt;/a&gt;, a simple command-line driven website generator. It plays nicely with native Windows batch scripting and I plan on providing a few examples in the GitHub repo shortly.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sat, 01 Dec 2012 00:00:00 -0500</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-12-01:/posts/2012/12/poppage/</guid><category>blog</category><category>python</category></item><item><title>Raspberry Pi First Impressions</title><link>https://www.jeffcomput.es/posts/2012/08/raspberry-pi-first-impressions/</link><description>&lt;p&gt;Received my first &lt;a href="http://www.raspberrypi.org/"&gt;Raspberry Pi&lt;/a&gt; the other day. I ordered two &lt;a href="http://www.newark.com/raspberry-pi/raspbrry-pcba/raspberry-pi-model-b-board-only/dp/83T1943"&gt;Model B devices from Newark&lt;/a&gt; and, despite the high demand, received them in about a week.
My intended use for the first R-Pi was to serve as a mini-HTPC for my basement TV. I tried both &lt;a href="http://elinux.org/Omxplayer"&gt;Omxplayer&lt;/a&gt; running on &lt;a href="http://www.raspbian.org/"&gt;Raspbian&lt;/a&gt; and &lt;a href="http://www.raspbmc.com/"&gt;Raspbmc&lt;/a&gt;. I was very please with the performance of both; they were able to stream videos from my NAS with no issue. Unfortunately …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 19 Aug 2012 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-08-19:/posts/2012/08/raspberry-pi-first-impressions/</guid><category>blog</category><category>hardware</category></item><item><title>Vim Scratch Buffer</title><link>https://www.jeffcomput.es/posts/2012/08/vim-scratch-buffer/</link><description>&lt;p&gt;Opening a scratch buffer in Vim can come in handy. The following vimrc addition works well: &lt;code&gt;nnoremap &amp;lt;Leader&amp;gt;sc :e scratch&amp;lt;CR&amp;gt;:setlocal readonly&amp;lt;CR&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It is especially useful in combination with the &lt;a href="http://jeffrimko.blogspot.com/2012/08/fossil-command-line-tips_8883.html"&gt;run shell command shortcut&lt;/a&gt; once Vim is configured to change to the directory of the current file with the following vimrc addition: &lt;code&gt;autocmd BufEnter * execute "chdir ".escape(expand("%:p:h"), ' ')&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The advantage this named buffer has over the &lt;code&gt;[No Name]&lt;/code&gt; buffers created …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Wed, 15 Aug 2012 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-08-15:/posts/2012/08/vim-scratch-buffer/</guid><category>blog</category><category>vim</category></item><item><title>Fossil Command-Line Tips</title><link>https://www.jeffcomput.es/posts/2012/08/fossil-command-line-tips/</link><description>&lt;p&gt;For small projects, &lt;a href="http://www.fossil-scm.org/"&gt;Fossil&lt;/a&gt; is a great choice for version control. Fossil's command-line interface is very easy to use and plays nice with utilities like &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;gawk&lt;/code&gt; and &lt;code&gt;xargs&lt;/code&gt;. The following are examples of common operations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Check in only edited files: &lt;code&gt;fossil changes | grep EDITED | gawk '{print $2}' | xargs fossil commit -m "Added feature X."&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add only files with name containing "pattern" to repo: &lt;code&gt;fossil extras | grep pattern | xargs fossil add&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Move files in repo …&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 05 Aug 2012 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-08-05:/posts/2012/08/fossil-command-line-tips/</guid><category>blog</category><category>fossil</category></item><item><title>Vim Run Shell Command</title><link>https://www.jeffcomput.es/posts/2012/08/vim-run-shell-command/</link><description>&lt;p&gt;Here is a nice simple vimrc file addition that will execute a line as a shell command and read back the output into the buffer: &lt;code&gt;nnoremap &amp;lt;Leader&amp;gt;rl yy:r!&amp;lt;C-r&amp;gt;"&amp;lt;CR&amp;gt;&lt;/code&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jeff Rimko</dc:creator><pubDate>Sun, 05 Aug 2012 00:00:00 -0400</pubDate><guid isPermaLink="false">tag:www.jeffcomput.es,2012-08-05:/posts/2012/08/vim-run-shell-command/</guid><category>blog</category><category>vim</category></item></channel></rss>