<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Technology &#8211; Greg Laden&#039;s Blog</title>
	<atom:link href="https://gregladen.com/blog/tag/technology/feed/" rel="self" type="application/rss+xml" />
	<link>https://gregladen.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 08 Nov 2019 18:58:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.8</generator>

<image>
	<url>https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2017/10/Greg_Ladens_Blog_Favicon_black_GLb.png?fit=32%2C32&#038;ssl=1</url>
	<title>Technology &#8211; Greg Laden&#039;s Blog</title>
	<link>https://gregladen.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">77525483</site>	<item>
		<title>Grant Imahara&#8217;s Engineering Big Ideas&#8230;</title>
		<link>https://gregladen.com/blog/2019/10/23/grant-imaharas-engineering-big-ideas/</link>
					<comments>https://gregladen.com/blog/2019/10/23/grant-imaharas-engineering-big-ideas/#respond</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Wed, 23 Oct 2019 13:57:42 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Grant Imahara]]></category>
		<category><![CDATA[Transportation]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=32416</guid>

					<description><![CDATA[&#8230; is very worth a look. It is here. The first episode looks at Nicola (not Tesla, the other one) which makes electronic/hydrogen vehicles that we will need in the future, the future being absolutely right now. In the second episode, Grant interviews Massimo Banzi, of Arduino fame. There are three more episodes coming. Each &#8230; <a href="https://gregladen.com/blog/2019/10/23/grant-imaharas-engineering-big-ideas/" class="more-link">Continue reading <span class="screen-reader-text">Grant Imahara&#8217;s Engineering Big Ideas&#8230;</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>&#8230; is very worth a look.  <span id="more-32416"></span></p>
<p><a href="https://www.mouser.com/empowering-innovation/engineering-big-ideas">It is here. </a></p>
<p>The first episode looks at Nicola (not Tesla, the other one) which makes electronic/hydrogen vehicles that we will need in the future, the future being absolutely right now.</p>
<p><img fetchpriority="high" decoding="async" data-attachment-id="32418" data-permalink="https://gregladen.com/blog/2019/10/23/grant-imaharas-engineering-big-ideas/grantmassimo/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/10/GrantMassimo.png?fit=367%2C336&amp;ssl=1" data-orig-size="367,336" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="GrantMassimo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/10/GrantMassimo.png?fit=300%2C275&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/10/GrantMassimo.png?fit=367%2C336&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/10/GrantMassimo.png?resize=367%2C336" alt="" width="367" height="336" class="alignright size-full wp-image-32418" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/10/GrantMassimo.png?w=367&amp;ssl=1 367w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/10/GrantMassimo.png?resize=300%2C275&amp;ssl=1 300w" sizes="(max-width: 367px) 100vw, 367px" data-recalc-dims="1" />In the second episode, Grant interviews Massimo Banzi, of Arduino fame.</p>
<p>There are three more episodes coming.  Each episode is about 5 minutes long, high production value, interesting interviews.  Makes me want to get back to work on that garage door open/closed detecting robot.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2019/10/23/grant-imaharas-engineering-big-ideas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32416</post-id>	</item>
		<item>
		<title>ALERT!! cPanel is ruining the Internet!</title>
		<link>https://gregladen.com/blog/2019/08/01/alert-cpanel-is-ruining-the-internet/</link>
					<comments>https://gregladen.com/blog/2019/08/01/alert-cpanel-is-ruining-the-internet/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Thu, 01 Aug 2019 14:25:08 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cPanel]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=32254</guid>

					<description><![CDATA[cPanel is a widely used front end used on servers for people to operate things like their blog, email system, other web related functions, etc. It is a way to avoid using the command line. So, for instance, you might buy into a hosing package, and that may allow you to set up a WordPress &#8230; <a href="https://gregladen.com/blog/2019/08/01/alert-cpanel-is-ruining-the-internet/" class="more-link">Continue reading <span class="screen-reader-text">ALERT!! cPanel is ruining the Internet!</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><a href="https://twitter.com/cpanel">cPanel</a> is a widely used front end used on servers for people to operate things like their blog, email system, other web related functions, etc.  It is a way to avoid using the command line. So, for instance, you might buy into a hosing package, and that may allow you to set up a WordPress site. Your host give you the info to log into your own cPanel. There, you press the &#8220;one click install&#8221; button and whoosh, you have a web site.<span id="more-32254"></span></p>
<p><a href="https://www.facebook.com/cpanel">cPanel</a> is great because it does things that are critically important in a way that most users can mange.</p>
<p><a href="https://www.cpanel.net/company/#contact">cPanel</a> sucks because it does that job, sure, but in a way that ends up confusing most users. In other words, the only way to use cPanel unless you already know what you are doing is if you have careful step by step instructions for using cPanel. So, it is only slightly better than the command line.</p>
<p>And now, cPanel has decided to dramatically raise its cost to the extent that most hosts that use cPanel now will have to jettison it or charge more.</p>
<p>I&#8217;m letting you know so you can be mad at cPanel. Also, if you know of any <a href="https://hosting.review/web-hosting/free-cpanel-alternative/">OpenSource or reasonably priced alternatives</a>, let&#8217;s hear about it.</p>
<p>My personal favorite for alternative: SSH and cli. But I think more is needed.</p>
<p>That is all.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2019/08/01/alert-cpanel-is-ruining-the-internet/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32254</post-id>	</item>
		<item>
		<title>Make Your Own Pixel Art</title>
		<link>https://gregladen.com/blog/2019/05/19/make-your-own-pixel-art/</link>
					<comments>https://gregladen.com/blog/2019/05/19/make-your-own-pixel-art/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Sun, 19 May 2019 17:09:03 +0000</pubDate>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Book review]]></category>
		<category><![CDATA[pixel art]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=31853</guid>

					<description><![CDATA[First, what is &#8220;pixel art?&#8221; Is that just art that is rendered in raster? Not exactly. Pixel art is the sort of art you draw for digital cartoons or similar things. The skills and tools of making pixel art would apply to designing icons or logos used in electronic products as well. To demonstrate what &#8230; <a href="https://gregladen.com/blog/2019/05/19/make-your-own-pixel-art/" class="more-link">Continue reading <span class="screen-reader-text">Make Your Own Pixel Art</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" data-attachment-id="31854" data-permalink="https://gregladen.com/blog/2019/05/19/make-your-own-pixel-art/beatemup_3/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/BeatEmUp_3.png?fit=128%2C128&amp;ssl=1" data-orig-size="128,128" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="BeatEmUp_3" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/BeatEmUp_3.png?fit=128%2C128&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/BeatEmUp_3.png?fit=128%2C128&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/BeatEmUp_3.png?resize=128%2C128" alt="" width="128" height="128" class="alignright size-full wp-image-31854" data-recalc-dims="1" />First, what is &#8220;pixel art?&#8221;</p>
<p>Is that just art that is rendered in raster? Not exactly.  Pixel art is the sort of art you draw for digital cartoons or similar things. The skills and tools of making pixel art would apply to designing icons or logos used in electronic products as well.</p>
<p>To demonstrate what pixel art is, I&#8217;m including a few examples from the newly published <a target="_blank" href="https://www.amazon.com/gp/product/1593278861/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1593278861&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=b3c81ccabb5d5a3ce375d2a4daf100c5" rel="noopener noreferrer">Make Your Own Pixel Art: Create Graphics for Games, Animations, and More!</a><img decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=1593278861" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Jennifer Dawe and Matthew Humphries.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="31856" data-permalink="https://gregladen.com/blog/2019/05/19/make-your-own-pixel-art/vernefamilysketch_768/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768.png?fit=768%2C297&amp;ssl=1" data-orig-size="768,297" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="vernefamilysketch_768" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768.png?fit=300%2C116&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768.png?fit=604%2C233&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768-650x251.png?resize=604%2C233" alt="" width="604" height="233" class="aligncenter size-large wp-image-31856" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768.png?resize=650%2C251&amp;ssl=1 650w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768.png?resize=500%2C193&amp;ssl=1 500w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768.png?resize=300%2C116&amp;ssl=1 300w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/vernefamilysketch_768.png?w=768&amp;ssl=1 768w" sizes="(max-width: 604px) 100vw, 604px" data-recalc-dims="1" /></p>
<p>This book will give you an introduction to the tricks of the trade of making technologically simply but artistically potent drawings, including ways to animate them.</p>
<p>The non-OpenSource (boo) software that is used throughout the book is not expensive and is easy to use, and yes, OpenSource alternatives are suggested and briefly discussed.  The book relies on Aseprite and Pro Motion, with GraphcsGale (Windows only, boo) being a free alternative.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="31857" data-permalink="https://gregladen.com/blog/2019/05/19/make-your-own-pixel-art/pixelwalking/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/PixelWalking.png?fit=348%2C343&amp;ssl=1" data-orig-size="348,343" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="PixelWalking" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/PixelWalking.png?fit=300%2C296&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/PixelWalking.png?fit=348%2C343&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/PixelWalking.png?resize=348%2C343" alt="" width="348" height="343" class="alignright size-full wp-image-31857" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/PixelWalking.png?w=348&amp;ssl=1 348w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/05/PixelWalking.png?resize=300%2C296&amp;ssl=1 300w" sizes="(max-width: 348px) 100vw, 348px" data-recalc-dims="1" />Techniques covered include shading, texture, proper use of color, motion and animation, and making things look sentient.  Apparently, you can make money doing this sort of thing! This book is probably a good investment, at the very least to see if you have the talent and interest.</p>
<p>Author Jennifer Dawe is an animator and character designer who has been a professional pixel artist for the past 15 years. Author Matthew Humphries is Senior Editor at PCMag.com and a professional game designer.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2019/05/19/make-your-own-pixel-art/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">31853</post-id>	</item>
		<item>
		<title>Update on Mechanical Keyboards</title>
		<link>https://gregladen.com/blog/2019/05/10/update-on-mechanical-keyboards/</link>
					<comments>https://gregladen.com/blog/2019/05/10/update-on-mechanical-keyboards/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Sat, 11 May 2019 01:38:45 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[daskeyboard]]></category>
		<category><![CDATA[keyboards]]></category>
		<category><![CDATA[mechanical keyboard]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=31820</guid>

					<description><![CDATA[All keyboards are &#8220;mechanical&#8221; in some sense, or at least most of them, in that something moves. But what we call a &#8220;mechanical keyboard&#8221; is one that has individual switches under each key cap, instead of some sort of silly squishy membrane. This gives the keys a different tactile sense, and often, a sound. This &#8230; <a href="https://gregladen.com/blog/2019/05/10/update-on-mechanical-keyboards/" class="more-link">Continue reading <span class="screen-reader-text">Update on Mechanical Keyboards</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>All keyboards are &#8220;mechanical&#8221; in some sense, or at least most of them, in that something moves. But what we call a &#8220;mechanical keyboard&#8221; is one that has individual switches under each key cap, instead of some sort of silly squishy membrane.  This gives the keys a different tactile sense, and often, a sound.</p>
<p>This post &#8212; <a href="https://gregladen.com/blog/2018/02/01/mechanical-keyboards-one-want/">Mechanical Keyboards What Are They And Which One Do You Want</a> &#8212; is a little, but not too much, out of date. The basic information is correct. There are one or two more kinds of keys than described, and there are emerging manufacturers that may or may not be making good switches, and there are many more offerings of el-cheapo keyboards.  And, still, the DasKeyboard is still one of the better (and more expensive) options.</p>
<p>My Avant Stellar keyboard finally broke in enough places (I&#8217;m tough on keyboards) to require major repair or replacement.  I looked briefly at really old Northgates (20-30 years old?) on ebay, bid on a few, but was outbid and decided not to spend an exorbitant amount of money on a decades old untested machine.  I also realized that I have two computers sitting next to each other, and when I change between them, it feels wrong, because they have two entirely different kinds of keyboards. But, I realized, if I get a new DasKeyboard for my Linux machine, since I have a Mac DasKeyboard on the Mac, then I would quickly become accustomed to switching back and forth and all would be well.  So, I got the <a target="_blank" href="https://www.amazon.com/gp/product/B008PFABI8/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B008PFABI8&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=4ff9889fc4f1f95d8b7fe95ac0691696">Das Keyboard Model S Professional Cherry MX Blue </a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=B008PFABI8" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> for the Linux to match the <a target="_blank" href="https://www.amazon.com/gp/product/B003ZG9T62/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B003ZG9T62&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=ec584d09507af1b8f1b17c513a69edd3">Das Keyboard Model S Pro for Mac</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=B003ZG9T62" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, and now everything is good.</p>
<p>Except possibly one thing. You may recal that I had earlier complained about the font used on the key caps on the DasKeyboards.  At the time, <a href="https://gregladen.com/blog/2018/03/16/making-das-keyboard-closer-perfect/">I used stick on labels to upgrade the DasKeyboard</a> to how I like it.  For some reason, as I sit here typing on the new DasKeyboard with the small typeface that I don&#8217;t like much, I&#8217;m not bothered by it, so I may not make that change.  We&#8217;ll see.</p>
<p>So now all is well in keyboard land, and my pile of no longer in use keyboards available for spare parts grows.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2019/05/10/update-on-mechanical-keyboards/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">31820</post-id>	</item>
		<item>
		<title>How to do science with a computer: workflow tools and OpenSource philosophy</title>
		<link>https://gregladen.com/blog/2019/02/25/how-to-do-science-with-a-computer-workflow-tools-and-opensource-philosophy/</link>
					<comments>https://gregladen.com/blog/2019/02/25/how-to-do-science-with-a-computer-workflow-tools-and-opensource-philosophy/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Tue, 26 Feb 2019 03:12:30 +0000</pubDate>
				<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Book review]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[r]]></category>
		<category><![CDATA[science work flow]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[software]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=31648</guid>

					<description><![CDATA[I have two excellent things on my desk, a Linux Journal article by Andy Wills, and a newly published book by Stefano Allesina and Madlen Wilmes. They are: Computing Skills for Biologists: A Toolbox by Stefano Allesina and Madlen Wilmes, Princeton University Press. Open Science, Open Source, and R, by Andy Wills, Linux Journal Why &#8230; <a href="https://gregladen.com/blog/2019/02/25/how-to-do-science-with-a-computer-workflow-tools-and-opensource-philosophy/" class="more-link">Continue reading <span class="screen-reader-text">How to do science with a computer: workflow tools and OpenSource philosophy</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>I have two excellent things on my desk, a Linux Journal article by Andy Wills, and a newly published book by Stefano Allesina and Madlen Wilmes.</p>
<p>They are:</p>
<p><strong><a target="_blank" href="https://www.amazon.com/gp/product/0691182752/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0691182752&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=144827cf0a3a455f6a3f898cc51e00c7">Computing Skills for Biologists: A Toolbox</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=0691182752" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></strong> by Stefano Allesina and Madlen Wilmes, Princeton University Press.</p>
<p><strong><a href="https://www.linuxjournal.com/content/open-science-open-source-and-r">Open Science, Open Source, and R</a></strong>, by Andy Wills, Linux Journal</p>
<p><H3>Why OpenSource?</H3></p>
<p>OpenSource science means, among other things, using OpenSource software to do the science. For some aspects of software this is not important. It does not matter too much if a science lab uses Microsoft Word or if they use LibreOffice Write.</p>
<p>However, since it does matter if you use LibreOffice Calc as your spreadsheet, as long as you are eschewing proprietary spreadsheets, you might as well use the OpenSource office package LibreOffice or equivalent, and then use the OpenSource presentation software, word processor, and spreadsheet.</p>
<p>OpenSource programs like Calc, R (a stats package), and OpenSource friendly software development tools like Python and the GPL C Compilers, etc. do matter. Why? Because your science involves calculating things, and software is a magic calculating box. You might be doing actual calculations, or production of graphics, or management of data, or whatever.  All of the software that does this stuff is on the surface a black box, and just using it does not give you access to what is happening under the hood.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="31658" data-permalink="https://gregladen.com/blog/2019/02/25/how-to-do-science-with-a-computer-workflow-tools-and-opensource-philosophy/computing_skills_for_biologists_book_review/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/computing_skills_for_biologists_book_review.png?fit=384%2C480&amp;ssl=1" data-orig-size="384,480" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="computing_skills_for_biologists_book_review" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/computing_skills_for_biologists_book_review.png?fit=240%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/computing_skills_for_biologists_book_review.png?fit=384%2C480&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/computing_skills_for_biologists_book_review.png?resize=384%2C480" alt="" width="384" height="480" class="alignright size-full wp-image-31658" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/computing_skills_for_biologists_book_review.png?w=384&amp;ssl=1 384w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/computing_skills_for_biologists_book_review.png?resize=240%2C300&amp;ssl=1 240w" sizes="(max-width: 384px) 100vw, 384px" data-recalc-dims="1" />But, if you use OpenSoucre software, you have both direct and indirect access to the actual technologies that are key to your science project.  You can see exactly how the numbers are calculated or the graphic created, if you want to.  It might not be easy, but at least you don&#8217;t have to worry about the first hurdle in looking under the hood that happens with commercial software: they won&#8217;t let you do it.</p>
<p>Direct access to the inner workings of the software you use comes in the form of actually getting involved in the software development and maintenance.  For most people, this is not something you are going to do in your scientific endeavor, but you could get involved with some help from a friend or colleague. For example, if you are at a University, there is a good chance that somewhere in your university system there is a computer department that has an involvement in OpenSource software development. See what they are up to, find out what they know about the software you are using. Who knows, maybe you can get a special feature included in your favorite graphics package by helping your new found computer friends cop an internal University grant! You might be surprised as to what is out there, as well as what is in there.</p>
<p>In any event, it is explicitly easy to get involved in OpenSource software projects because they are designed that way. Or, usually are and always  should be.</p>
<p>The indirect benefit comes from the simple fact that these projects are OpenSource. Let me give you an example form the non scientific world. (it is a made up example, but it could reflect reality and is highly instructive.)</p>
<p>Say there is an operating system or major piece of software competing in a field of other similar products.  Say there is a widely used benchmark standard that compares the applications and ranks them. Some of the different products load up faster than others, and use less RAM.  That leaves both time (for you) and RAM (for other applications) that you might value a great deal. All else being equal, pick the software that loads faster in less space, right?</p>
<p>Now imagine a group of trollish deviants meeting in a smoky back room of the evile corporation that makes one of these products.  They have discovered that if they leave a dozen key features that all the competitors use out of the loading process, so they load later, they can get a better benchmark. Without those standard components running, the software will load fast and be relatively small. It happens to be the case, however, that once all the features are loaded, this particular product is the slowest of them all, and takes up the most RAM. Also, the process of holding back functionality until it is needed is annoying to the user and sometimes causes memory conflicts, causing crashes.</p>
<p>In one version of this scenario, the concept of selling more of the product by using this performance tilting trick is considered a good idea, and someone might even get a promotion for thinking of it. That would be something that could potentially happen in the world of proprietary software.</p>
<p>In a different version of this scenario the idea gets about as far as the water cooler before it is taken down by a heavy tape dispenser to the head and kicked to death.  That would be what would certainly happen in the OpenSource world.</p>
<p>So, go OpenSource!  And, read <a href="https://www.linuxjournal.com/content/open-science-open-source-and-r">the paper from Linux Journal</a>, which by the way has been producing some great articles lately, on this topic.</p>
<p><H3>The Scientists Workflow and Software</H3></p>
<p>You collect and manage data. You write code to process or analyze data.  You use statistical tools to turn data into analytically meaningful numbers. You make graphs and charts. You write stuff and integrate the writing with the pretty pictures, and produce a final product.</p>
<p>The first thing you need to understand if you are developing or enhancing the computer side of your scientific endevour is that you need the basic GNU tools and command line access that comes automatically if you use Linux.  You can get the same stuff with a few extra steps if you use Windows.  The Apple Mac system is in between with the command line tools already built in, but not quite as in your face available.</p>
<p>You may need to have an understanding of Regular Expressions, and how to use them on the command line (using sed or awk, perhaps) and in programming, perhaps in python.</p>
<p>You will likely want to master the R environment because a) it is cool and powerful and b) a lot of your colleagues use R so you will want to have enough under your belt to share code and data now and then. You will likely want to master Python, which is becoming the default scientific programming language.  It is probably true that anything you can do in R you can do in Python using the available tools, but it is also true that the most basic statistical stuff you might be doing is easier in R than Python since R is set up for it.  The two systems are relatively easy to use and very powerful, so there is no reason to not have both in your toolbox.  If you don&#8217;t chose the Python route, you may want to supplement R with gnu plotting tools.</p>
<p>You will need some sort of relational database setup in your lab, some kind of OpenSource SQL lanaguge based system.</p>
<p>You will have to decide on your own if you are into LaTex.  If you have no idea what I&#8217;m talking about, don&#8217;t worry, you don&#8217;t need to know.  If you do know what I&#8217;m talking about, you probably have the need to typeset math inside your publications.</p>
<p>Finally, and of utmost importance, you should be willing to spend the upfront effort making your scientific work flow into scripts.  Say you have a machine (or a place on the internet or an email stream if you are working collaboratively) where some raw data spits out. These data need some preliminary messing around with to discard what you don&#8217;t want, convert numbers to a proper form, etc. etc.  Then, this fixed-up data goes through a series of analyses, possibly several parallel streams of analysis, to produce a set of statistical outputs, tables, graphics, or a new highly transformed data set you send on to someone else.</p>
<p>If this is something you do on a regular basis, and it likely is because your lab or field project is set up to get certain data certain ways, then do certain things to it, then ideally you would set up a script, likely in bash but calling gnu tools like sed or awk, or running Python programs or R programs, and making various intermediate files and final products and stuff.  You will want to bother with making the first run of these operations take three times longer to set up, so that all the subsequent runs take one one hundredth of the time to carry out, or can be run unattended.</p>
<p>Nothing, of course, is so simple as I just suggested &#8230; you will be changing the scripts and Python programs (and LaTeX specs) frequently, perhaps. Or you might have one big giant complex operation that you only need to run once, but you KNOW it is going to screw up somehow &#8230; a value that is entered incorrectly or whatever &#8230; so the entire thing you need to do once is actually something you have to do 18 times.  So make the whole process a script.</p>
<p>Aside form convenience and efficiency, a script does something else that is vitally important. It documents the process, both for you and others. This alone is probably more important than the convenience part of scripting your science, in many cases.</p>
<p><H3>Being small in a world of largeness</H3></p>
<p>Here is a piece of advice you wont get from anyone else. As you develop your computer working environment, the set of software tools and stuff that you use to run R or Python and all that, you will run into opportunities to install some pretty fancy and sophisticated developments systems that have many cool bells and whistles, but that are really designed for team development of large software projects, and continual maintenance over time of versions of that software as it evolves as a distributed project.</p>
<p>Don&#8217;t do that unless you need to. Scientific computing often not that complex or team oriented. Sure, you are working with a team, but probably not a team of a dozen people working on the same set of Python programs. Chances are, much of the code you write is going to be tweaked to be what you need it to be then never change. There are no marketing gurus coming along and asking you to make a different menu system to attract millennials. You are not competing with other products in a market of any sort.  You will change your software when your machine breaks and you get a new one, and the new one produces output in a more convenient style than the old one.  Or whatever.</p>
<p>In other words, if you are running an enterprise level operation, look into systems like Anaconda.  If you are a handful of scientists making and controlling your own workflow, stick with the simple scripts and avoid the snake.  The setup and maintenance of an enterprise level system for using R and Python is probably more work before you get your first t-test or histogram than it is worth.  This is especially true if you are more or less working on your own.</p>
<p><H3>Culture</H3></p>
<p><img loading="lazy" decoding="async" data-attachment-id="31657" data-permalink="https://gregladen.com/blog/2019/02/25/how-to-do-science-with-a-computer-workflow-tools-and-opensource-philosophy/meta_key/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/meta_key.png?fit=321%2C389&amp;ssl=1" data-orig-size="321,389" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="meta_key" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/meta_key.png?fit=248%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/meta_key.png?fit=321%2C389&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/meta_key-248x300.png?resize=248%2C300" alt="" width="248" height="300" class="alignright size-medium wp-image-31657" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/meta_key.png?resize=248%2C300&amp;ssl=1 248w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/02/meta_key.png?w=321&amp;ssl=1 321w" sizes="(max-width: 248px) 100vw, 248px" data-recalc-dims="1" />Another piece of advice. Some software decisions are based on deeply rooted cultural norms or fetishes that make no sense.  I&#8217;m an emacs user. This is the most annoying, but also, most powerful, of all text editors. Here is an example of what is annoying about emac.  In the late 70s, computer keyboards had a &#8220;meta&#8221; key (it was actually called that) which is now the alt key.  Emacs made use of the metakey. No person has seen or used a metakey since about 1979, but emacs refuses to change its documentation to use the word &#8220;alt&#8221; for this key. Rather, the documentation says somethin like &#8220;here, use the meta key, which on some keyboards is the alt key.&#8221; That is a cultural fetish.</p>
<p>Using LaTeX might be a fetish as well. Obliviously.  It is possible that for some people, using R is a fetish and they should rethink and switch to using Python for what they are doing. The most dangerous fetish, of course, is using proprietary scientific software because you think only if you pay hundreds of dollars a year to use SPSS or BMD for stats, as opposed to zero dollars a year for R, will your numbers be acceptable. In fact, the reverse is true. Only with an OpenSource stats package can you really be sure how the stats or other values are calculated.</p>
<p><H3>And finally&#8230; </h3>
<p>And my final piece of advice is to get and use this book: <a target="_blank" href="https://www.amazon.com/gp/product/0691182752/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0691182752&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=4bf0ae55a2deb5c13d3ccb42ad7a1748">Computing Skills for Biologists: A Toolbox</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=0691182752" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Allesina and Wilmes.</p>
<p>This book focuses on Python and not R, and covers Latex which, frankly, will not be useful for many.  This also means that the regular expression work in the book is not as useful for all applications, as might be the case with a volume like <a target="_blank" href="https://www.amazon.com/gp/product/0596528124/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0596528124&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=6a055cd258312059141a2e5e7fef41d9">Mastering Regular Expressions</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=0596528124" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.  But overall, this volume does a great job of mapping out the landscape of scripting-oriented scientific computing, using excellent examples from biology.</p>
<p><a target="_blank" href="https://www.amazon.com/gp/product/0596528124/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0596528124&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=6a055cd258312059141a2e5e7fef41d9">Mastering Regular Expressions</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=0596528124" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> can and should be used as a textbook for an advanced high school level course to prep young and upcoming investigators for when they go off and apprentice in labs at the start of their career. It can be used as a textbook in a short seminar in any advanced program to get everyone in a lab on the same page. I suppose it would be treat if Princeton came out with a version for math and physical sciences, or geosciences, but really, this volume can be generalized beyond biology.</p>
<p>Stefano Allesina is a professor in the Department of Ecology and Evolution at the University of Chicago and a deputy editor of PLoS Computational Biology. Madlen Wilmes is a data scientist and web developer.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2019/02/25/how-to-do-science-with-a-computer-workflow-tools-and-opensource-philosophy/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">31648</post-id>	</item>
		<item>
		<title>Impractical Python Programming For Fun</title>
		<link>https://gregladen.com/blog/2019/01/26/impractical-python-programming-for-fun/</link>
					<comments>https://gregladen.com/blog/2019/01/26/impractical-python-programming-for-fun/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Sat, 26 Jan 2019 15:42:29 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=31433</guid>

					<description><![CDATA[Project oriented programming books, books that help you develop actual working programs while you learn to program, are the thing, and the new Impractical Python Projects: Playful Programming Activities to Make You Smarter is an excellent example. Knowing how the elements of a program work is fine and dandy, but applying programming concepts to the &#8230; <a href="https://gregladen.com/blog/2019/01/26/impractical-python-programming-for-fun/" class="more-link">Continue reading <span class="screen-reader-text">Impractical Python Programming For Fun</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Project oriented programming books, books that help you develop actual working programs while you learn to program, are the thing, and the new <a target="_blank" href="https://www.amazon.com/gp/product/159327890X/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=159327890X&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=64e199cc242018594d7987b51467187d">Impractical Python Projects: Playful Programming Activities to Make You Smarter</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=159327890X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is an excellent example.<span id="more-31433"></span></p>
<p><img loading="lazy" decoding="async" data-attachment-id="31435" data-permalink="https://gregladen.com/blog/2019/01/26/impractical-python-programming-for-fun/51bbamvwj6l-_sx375_bo1204203200_/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/51bbaMvwj6L._SX375_BO1204203200_.jpg?fit=377%2C499&amp;ssl=1" data-orig-size="377,499" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="51bbaMvwj6L._SX375_BO1,204,203,200_" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/51bbaMvwj6L._SX375_BO1204203200_.jpg?fit=227%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/51bbaMvwj6L._SX375_BO1204203200_.jpg?fit=377%2C499&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/51bbaMvwj6L._SX375_BO1204203200_.jpg?resize=377%2C499" alt="" width="377" height="499" class="alignright size-full wp-image-31435" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/51bbaMvwj6L._SX375_BO1204203200_.jpg?w=377&amp;ssl=1 377w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/51bbaMvwj6L._SX375_BO1204203200_.jpg?resize=227%2C300&amp;ssl=1 227w" sizes="(max-width: 377px) 100vw, 377px" data-recalc-dims="1" />Knowing how the elements of a program work is fine and dandy, but applying programming concepts to the real world is where the rubber of code meets the reality of &#8230; running code, I guess.  <a target="_blank" href="https://www.amazon.com/gp/product/159327890X/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=159327890X&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=64e199cc242018594d7987b51467187d">Impractical Python Projects: Playful Programming Activities to Make You Smarter</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=159327890X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is full of code examples, and they are said to be impractical, but really, that depends on why you even use computers. For example, one might want to breed rodents of unusual size, or come up with an anagram suitable for a Dark Wizard.  Even more useful is calculating the odds of detecting alien civilizations (I for one welcome our hypothetical overlords from elsewhere in the universe). Make a python programmed volcano for your next science project. Seriously, that&#8217;s not a bad idea for the kiddo&#8230;</p>
<p>To give you an idea, here are the chapters:</p>
<p>Chapter 1: Silly Name Generator<br />
Chapter 2: Finding Palingram Spells<br />
Chapter 3: Solving Anagrams<br />
Chapter 4: Decoding American Civil War Ciphers<br />
Chapter 5: Encoding English Civil War Ciphers<br />
Chapter 6: Writing in Invisible Ink<br />
Chapter 7: Breeding Giant Rats with Genetic Algorithms<br />
Chapter 8: Counting Syllables for Haiku Poetry<br />
Chapter 9: Writing Haiku with Markov Chain Analysis<br />
Chapter 10: Are We Alone? Exploring the Fermi Paradox<br />
Chapter 11: The Monty Hall Problem<br />
Chapter 12: Securing your Nest Egg<br />
Chapter 13: Simulating an Alien Volcano<br />
Chapter 14: Mapping Mars with the Mars Orbiter<br />
Chapter 15: Improving Your Astrophotography with Planet Stacking<br />
Chapter 16: Finding Frauds with Benford&#8217;s Law</p>
<p>This book does something else, that not too many coding instruction books do. The author, Lee Vaughan, builds small projects that work, then applies python based methods to analyze the code, showing how the original project had problems of one kind or another, then builds them again. The results are surprising, even spectacular, and very instructive.</p>
<p>The book does assume a basic knowledge of how python works, but that is not hard to get from any of <a href="https://gregladen.com/blog/?s=python">several other books</a>, or on line. Rather than being an introductory text, Vaughan&#8217;s project pushes you in interesting directions for solving a diverse set of problems.  Most of these &#8220;impractical&#8221; projects, while themselves being not so useless after all (there are those of us that need to produce or evaluate anagrams now and then, for example) will have parallels to real life projects.  For example, the exploration of the Fermi Paradox and Drake Equation can serve as a template for a wide range of simulations, and the section on Benford&#8217;s law can, well, help you cheat better on your taxes!</p>
<p>This is just plain a fun book, and it is useful, not impractical.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2019/01/26/impractical-python-programming-for-fun/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">31433</post-id>	</item>
		<item>
		<title>Practical Binary Analysis: Book Review</title>
		<link>https://gregladen.com/blog/2019/01/25/practical-binary-analysis-book-review/</link>
					<comments>https://gregladen.com/blog/2019/01/25/practical-binary-analysis-book-review/#respond</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Sat, 26 Jan 2019 01:51:05 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Binary Analysis]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=31419</guid>

					<description><![CDATA[A computer program is like a memo. Often, a vague memo. You are the boss. You want a pile of files to be put away. You could do it yourself, but instead you instruct someone else to do it. There are a lot of them and they are all mixed up. So you write a &#8230; <a href="https://gregladen.com/blog/2019/01/25/practical-binary-analysis-book-review/" class="more-link">Continue reading <span class="screen-reader-text">Practical Binary Analysis: Book Review</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>A computer program is like a memo.  Often, a vague memo.</p>
<p>You are the boss. You want a pile of files to be put away. You could do it yourself, but instead you instruct someone else to do it.  There are a lot of them and they are all mixed up. So you write a memo to an employee that says &#8220;put the files away&#8221; and sis-bam-boom you&#8217;re all set.</p>
<p>Or are you? <span id="more-31419"></span></p>
<p>It turns out that the files fall into four categories, each associated with a different set of file cabinets.  All the files have labels with words and numbers on them.  One set is filed alphabetically.  Two sets are filed by the number that is on the label. The fourth set are stacked in an outbox in any order where they are to be processed by someone else at a later time.</p>
<p>So, if you just say, &#8220;file these&#8221; a lot of things can go wrong, unless he person who gets the memo knows what to do.</p>
<p>Your memo could read &#8220;Find the person who knows how to file stuff. Then have that person file these files properly.&#8221; In a computer language, that is a little like loading a library then using instructions from that library to carryout a task in a specific way.</p>
<p><code># file.py<br />
import alpha-numeric-filing as fileit</p>
<p>def main():<br />
     files.fileit(file)</code></p>
<p>&#8230; or code to that effect.</p>
<p>The point is, telling your underlings to do something only works if the underlings do it correctly.  This is also true with computers, where a line of code seems to be instructing the processor, way down deep in the hardware, to do a certain thing, but it may or may not be actually doing that thing.</p>
<p>Computers are famous for making strange and unexpected (to the non-expert) calculations.  For example, a computer will calculate the base 10 log of 2 as 0.000029995663981195 off of the actual number because of the way numbers are represented and manipulated inside the machine. So when you ask for that value in a computer program, you are making an incorrect assumption if you think it is being done correctly.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="31422" data-permalink="https://gregladen.com/blog/2019/01/25/practical-binary-analysis-book-review/practicalbinaryanalysis_full/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/PracticalBinaryAnalysis_full.png?fit=226%2C409&amp;ssl=1" data-orig-size="226,409" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="PracticalBinaryAnalysis_full" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/PracticalBinaryAnalysis_full.png?fit=166%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/PracticalBinaryAnalysis_full.png?fit=226%2C409&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/PracticalBinaryAnalysis_full.png?resize=226%2C409" alt="" width="226" height="409" class="alignright size-full wp-image-31422" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/PracticalBinaryAnalysis_full.png?w=226&amp;ssl=1 226w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2019/01/PracticalBinaryAnalysis_full.png?resize=166%2C300&amp;ssl=1 166w" sizes="(max-width: 226px) 100vw, 226px" data-recalc-dims="1" />That is a known mathematical phenomenon and not of consequence to most people or most programs, but there may be other issues that are more important and even less predicted. Like the filing problem mentioned above, there may be assumptions built into the deeper level operation of a computer program or script once it is complied or interpreted, linked up with other software it works with, and deployed on this or that machine.  This is the difference between working in the area of written code including uncompiled programs or scripts and the deeper binary code that is created by the software that interprets or complies your program.</p>
<p><a target="_blank" href="https://www.amazon.com/gp/product/1593279124/ref=as_li_tl?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1593279124&#038;linkCode=as2&#038;tag=grlasbl0a-20&#038;linkId=e588fe2566dac583745dd23aa94ee955">Practical Binary Analysis: Build Your Own Linux Tools for Binary Instrumentation, Analysis, and Disassembly</a><img loading="lazy" decoding="async" src="//ir-na.amazon-adsystem.com/e/ir?t=grlasbl0a-20&#038;l=am2&#038;o=1&#038;a=1593279124" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Dennis Andriesse (with a foreword by Herbert Bos) is a guide to looking into the binaries created by application-making software. This is a set of approaches to delve into the space in which malware may lurk, bugs may flourish almost invisibly, and inefficiencies may wreak their slow and ponderous havoc.</p>
<p>The book teaches how to:</p>
<li>Parse ELF and PE binaries and build a binary loader with libbfd</li>
<li>Use data-flow analysis techniques like program tracing, slicing, and reaching definitions analysis to reason about runtime flow of your programs</li>
<li>Modify ELF binaries with techniques like parasitic code injection and hex editing</li>
<li>Build custom disassembly tools with Capstone</li>
<li>Use binary instrumentation to circumvent anti-analysis tricks commonly used by malware</li>
<li>Apply taint analysis to detect control hijacking and data leak attacks</li>
<li>Use symbolic execution to build automatic exploitation tools</li>
<p>The most important way in which this book will change your life is that it will allow you to analyze binaries more automatically and with less manual work.</p>
<p>I can not truly evaluate this book because this is way beyond, or maybe, way below (as in down deep in the abyss of computer science where I assume small gnomes still write all the assembler language) my understanding of thing. But the book gains great praise from others, and is a brand new edition.</p>
<p>Dennis Andriesse has a Ph.D. in system and network security and uses binary analysis daily in his research. He is one of the main contributors to PathArmor, a Control-Flow Integrity system that defends against control-flow hijacking attacks such as ROP. Andriesse was also one of the attack developers involved in the takedown of the GameOver Zeus P2P botnet.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2019/01/25/practical-binary-analysis-book-review/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">31419</post-id>	</item>
		<item>
		<title>Do Not Upgrade To The New Chrome! Yet.</title>
		<link>https://gregladen.com/blog/2018/09/06/do-not-upgrade-to-the-new-chrome-yet/</link>
					<comments>https://gregladen.com/blog/2018/09/06/do-not-upgrade-to-the-new-chrome-yet/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Thu, 06 Sep 2018 15:52:02 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Google Chrome 69]]></category>
		<category><![CDATA[Google Chrome Upgrade]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=30392</guid>

					<description><![CDATA[The new Chrome browser by Google, Chrome 69, is probably an important improvement in browser functionality, look and feel, and security. But, as you might expect, the first version available for general users is buggy, perhaps very buggy. I would wait a little while for the bugs to get all hunted down and exterminated. How &#8230; <a href="https://gregladen.com/blog/2018/09/06/do-not-upgrade-to-the-new-chrome-yet/" class="more-link">Continue reading <span class="screen-reader-text">Do Not Upgrade To The New Chrome! Yet.</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>The new Chrome browser by Google, Chrome 69, is probably an important improvement in browser functionality, look and feel, and security.  But, as you might expect, the first version available for general users is buggy, perhaps very buggy.  I would wait a little while for the bugs to get all hunted down and exterminated. How long? A week or two should do it.</p>
<p><H3>What is new in the new Google Chrome 69 Browser?</H3><br />
<span id="more-30392"></span></p>
<p>This new 10th anniversary edition (has it only bee 10 years?), which you can <a href="https://www.google.com/chrome/">download here</a>, is said to be faster.  However, speed is more of a function of your internet connection and computers&#8217; speed, so how much that matters will depend on your situation.  In-line results, in the place formerly known as the Address Bar, are new.  You&#8217;ll see things in there like the actual weather, not just a link to the weather, or say Google believes you have documents or links related to an upcoming trip, and you put the destination city in the search bar &#8230; you may get a link to your files. That sort of thing.</p>
<p>Security is improved, but I can&#8217;t really say how. Flash is handled differently, more gingerly, so that&#8217;s one thing.</p>
<p>The biggest difference, probably, is the overall look and feel It is rounder and flatter, as things are these days. Material design style, for those keeping track.  There are more and perhaps better themes, and you can play around more with the background.</p>
<p>There is a thing called Picture in Picture mode.  I think this allows you to deploy that annoying feature some web sites already have where a video that is playing follows you around and refuses to go away. Yay!</p>
<p><H3>What&#8217;s wrong with this first release of Google Chrome 69?</H3></p>
<p>A variety of things, like downloading certain files instead of using or &#8220;playing&#8221; them, like web sites that won&#8217;t work or that are greyed out.  It is actually not worth listing these problems here because even as we speak they are being fixed. Within the last few hours, 40 bugs were fixed, most of which most people didn&#8217;t even see.</p>
<p>My biggest concern is that there are URLs I must visit now and then that Google habitually sees as insecure (but they are gateways through which it is difficult to pass, and otherwise do nothing).  If the new Google Chrome is super security oriented and not perfected, I may not be able to do certain things. So, I&#8217;ll keep a computer with the old Chrome indefinitely just to make sure, once I do upgrade.</p>
<p>I am about to launch two heavily modified or freshly home built computers, and I&#8217;m a bit worried that if I do that right now, and install the available version of Chrome, I&#8217;m going to have problems.  What that really means for me is keeping Firefox on those boxes, just in case!</p>
<p><H3>Why is it called 69?</H3></p>
<p>I believe this is called Chrome 69 simply because it is the 69th version. But I for one do not remember earlier vesions being called by their name so overtly, so I&#8217;m wondering if there is another reason.  I tried typing &#8220;why is it called 69&#8221; into Google. I got lots of answers, but not to my specific question.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2018/09/06/do-not-upgrade-to-the-new-chrome-yet/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">30392</post-id>	</item>
		<item>
		<title>Computer Terms Definitions  &#8212; &#8220;D&#8221;</title>
		<link>https://gregladen.com/blog/2018/06/28/computer-terms-definitions-d/</link>
					<comments>https://gregladen.com/blog/2018/06/28/computer-terms-definitions-d/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Fri, 29 Jun 2018 02:30:58 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[desktop]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=29796</guid>

					<description><![CDATA[Terms used in the personal computer world that begin with the letter &#8220;D&#8221; Desktop The screen &#8220;real estate&#8221; that coveres a monitor on which icons may be placed, and which is generally covered up when an application is open. Desktop A type of computer which usually includes a &#8220;box&#8221; containing a CPU, hard drives, and &#8230; <a href="https://gregladen.com/blog/2018/06/28/computer-terms-definitions-d/" class="more-link">Continue reading <span class="screen-reader-text">Computer Terms Definitions  &#8212; &#8220;D&#8221;</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Terms used in the personal computer world that begin with the letter &#8220;D&#8221;  <span id="more-29796"></span></p>
<dl>
<dt>Desktop</dt>
<dd>The screen &#8220;real estate&#8221; that coveres a monitor on which icons may be placed, and which is generally covered up when an application is open.   </dd>
<dt>Desktop</dt>
<dd>A type of computer which usually includes a &#8220;box&#8221; containing a CPU, hard drives, and other hardware, a separate keyboard, separate monitor, and so on. Sometimes the monitor and the &#8220;box&#8221; are integrated.     </dd>
<dt>Desktop</dt>
<dd>Also called a &#8220;Desktop environment,&#8221; the main all encompassing user interface associated with a specific distribution of Linux. Examples are &#8220;Gnome Desktop&#8221; and &#8220;KDE&#8221; (note that the &#8220;K&#8221; in KDE originally stood for &#8220;kool&#8221; so that KDE meant Kool Desktop Environment.&#8221; This is a wordplay on the &#8220;Common Desktop Environment&#8221; or CDE, which was a unix system based on x11 technology.  Soon after the name first went into use the meaning &#8220;kool&#8221; was dropped and everyone tried to forget about it.  Some have suggested that KDE is a typical recursive term, like GNU (GNU = &#8220;GNU is Not Unix&#8221;), and would thus mean &#8220;KDE Desktop Environment.&#8221;)   </dd>
<dt>Desktop</dt>
<dd>The surface of a piece of furniture typically with a legwell, drawers, etc., on which one puts a computer for normal use.  See also &#8220;Lap&#8221; and &#8220;Laptop&#8221;  </dd>
<dt>Desktop</dt>
<dd>An individual &#8220;workspace&#8221; consisting of a virtual desktop, icons and other things that go on a desktop, which may or may not be part of a particular desktop environment&#8217;s capabilities, allowing a user to expand screen real estate by a factor of how many separate virtual desktops are defined.    </dd>
</dl>
<p><img loading="lazy" decoding="async" data-attachment-id="29801" data-permalink="https://gregladen.com/blog/2018/06/28/computer-terms-definitions-d/desktop_desktop_desktop_greg_laden_blog/" data-orig-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2018/06/Desktop_desktop_desktop_greg_laden_blog.png?fit=459%2C534&amp;ssl=1" data-orig-size="459,534" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Desktop_desktop_desktop_greg_laden_blog" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2018/06/Desktop_desktop_desktop_greg_laden_blog.png?fit=258%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2018/06/Desktop_desktop_desktop_greg_laden_blog.png?fit=459%2C534&amp;ssl=1" src="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2018/06/Desktop_desktop_desktop_greg_laden_blog.png?resize=459%2C534" alt="" width="459" height="534" class="aligncenter size-full wp-image-29801" srcset="https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2018/06/Desktop_desktop_desktop_greg_laden_blog.png?w=459&amp;ssl=1 459w, https://i0.wp.com/gregladen.com/blog/wp-content/uploads/2018/06/Desktop_desktop_desktop_greg_laden_blog.png?resize=258%2C300&amp;ssl=1 258w" sizes="(max-width: 459px) 100vw, 459px" data-recalc-dims="1" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2018/06/28/computer-terms-definitions-d/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">29796</post-id>	</item>
		<item>
		<title>We knew either birds or technology would cause our demise. It turns out &#8230;.</title>
		<link>https://gregladen.com/blog/2018/05/19/we-knew-either-birds-or-technology-would-cause-our-demise-it-turns-out/</link>
					<comments>https://gregladen.com/blog/2018/05/19/we-knew-either-birds-or-technology-would-cause-our-demise-it-turns-out/#comments</comments>
		
		<dc:creator><![CDATA[Greg Laden]]></dc:creator>
		<pubDate>Sat, 19 May 2018 15:18:18 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Alexa]]></category>
		<category><![CDATA[Birds]]></category>
		<guid isPermaLink="false">https://gregladen.com/blog/?p=29695</guid>

					<description><![CDATA[It is a conspiracy!!!! I love the way the parrot responds to Alexa&#8217;s response by first making bleepy-bloopy techie noises, then imitating the sound of all the manual light switches being thrown. But wait, there&#8217;s more. This parrot made an Alexa shopping list:]]></description>
										<content:encoded><![CDATA[<p>It is a conspiracy!!!!</p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/-3JLqhFo8j4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p>I love the way the parrot responds to Alexa&#8217;s response by first making bleepy-bloopy techie noises, then imitating the sound of all the manual light switches being thrown.</p>
<p>But wait, there&#8217;s more. This parrot made an Alexa shopping list:</p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/qOq_GvaYhLU" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://gregladen.com/blog/2018/05/19/we-knew-either-birds-or-technology-would-cause-our-demise-it-turns-out/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">29695</post-id>	</item>
	</channel>
</rss>
