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

<channel>
	<title>Perl &#8211; About Things | A Hans Scharler Blog</title>
	<atom:link href="https://nothans.com/tag/perl/feed" rel="self" type="application/rss+xml" />
	<link>https://nothans.com</link>
	<description>Life, Comedy, Games, Tech, Marketing, and Community</description>
	<lastBuildDate>Thu, 19 Sep 2024 22:07:56 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i0.wp.com/nothans.com/wp-content/uploads/2023/02/cropped-settings.png?fit=32%2C32&#038;ssl=1</url>
	<title>Perl &#8211; About Things | A Hans Scharler Blog</title>
	<link>https://nothans.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">114568856</site>	<item>
		<title>Ode to Perl and Larry Wall</title>
		<link>https://nothans.com/ode-to-perl-and-larry-wall</link>
					<comments>https://nothans.com/ode-to-perl-and-larry-wall#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Thu, 19 Sep 2024 22:07:52 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Perl]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=4804</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>I woke up this morning nostalgic about Perl, the programming language. I used to write hundreds of lines of Perl code every day. It paved the way to a career, a livelihood, and a family. I miss the community and the online user groups. Those who used Perl know what I am talking about. I decided to wear my Pittsburgh Perl Workshop polo shirt today.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="713" height="1024" data-attachment-id="4809" data-permalink="https://nothans.com/ode-to-perl-and-larry-wall/image-16-8" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?fit=1333%2C1915&amp;ssl=1" data-orig-size="1333,1915" data-comments-opened="0" 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="Hans Scharler in a Pittsburgh Perl Workshop polo shirt" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?fit=713%2C1024&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?resize=713%2C1024&#038;ssl=1" alt="" class="wp-image-4809" style="width:425px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?resize=713%2C1024&amp;ssl=1 713w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?resize=209%2C300&amp;ssl=1 209w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?resize=768%2C1103&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?resize=1069%2C1536&amp;ssl=1 1069w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?resize=750%2C1077&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?resize=1320%2C1896&amp;ssl=1 1320w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-16.png?w=1333&amp;ssl=1 1333w" sizes="(max-width: 713px) 100vw, 713px" /><figcaption class="wp-element-caption">Pittsburgh Perl Workshop polo</figcaption></figure>
</div>


<p>The whole day has been filled with emotions about a programming language and memories of spectacular coffee at PPW, learning from others, and getting the chance to meet Larry Wall. I miss my dear friend Robert Blackwell, who kept me connected to the community and encouraged me to give back.</p>



<p>I wrote a post about <a href="https://nothans.com/how-i-learned-to-program" data-type="post" data-id="2180">how I learned to program</a> and detailed my interactions with Perl, but it can&#8217;t be understated how impactful Perl was on my life. It made the web accessible and my dreams obtainable.</p>



<p>So, channeling my emotions, I decided to write a poem. It would be the thing Larry would do. WWLWD is what I like to say. Larry would say that there is more than one way to do things. Here&#8217;s my poem about Perl and Larry Wall written in Perl. This was the first Perl that I have written in six years. Oh, how I love the Perl language.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img data-recalc-dims="1" decoding="async" width="733" height="1024" data-attachment-id="4808" data-permalink="https://nothans.com/ode-to-perl-and-larry-wall/image-15-8" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?fit=804%2C1123&amp;ssl=1" data-orig-size="804,1123" data-comments-opened="0" 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="image-15" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?fit=733%2C1024&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?resize=733%2C1024&#038;ssl=1" alt="" class="wp-image-4808" style="width:733px;height:auto" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?resize=733%2C1024&amp;ssl=1 733w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?resize=215%2C300&amp;ssl=1 215w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?resize=768%2C1073&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?resize=750%2C1048&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2024/09/image-15.png?w=804&amp;ssl=1 804w" sizes="(max-width: 733px) 100vw, 733px" /><figcaption class="wp-element-caption">A Perl Poem written in Perl by Hans Scharler</figcaption></figure>
</div>


<p>Thank you, Perl.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/ode-to-perl-and-larry-wall/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4804</post-id>	</item>
		<item>
		<title>Prompt Engineering: ChatGPT Prompts for Regular Expressions</title>
		<link>https://nothans.com/prompt-engineering-chatgpt-prompts-for-regular-expressions</link>
					<comments>https://nothans.com/prompt-engineering-chatgpt-prompts-for-regular-expressions#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 22:30:26 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Prompt Engineering]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[Unlock AI]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=3574</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p><a href="https://en.wikipedia.org/wiki/Regular_expression" target="_blank" rel="noreferrer noopener">Regex</a> (Regular Expression) is a pattern-matching syntax used in various programming languages and tools for searching and manipulating strings.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img data-recalc-dims="1" decoding="async" width="593" height="397" data-attachment-id="3575" data-permalink="https://nothans.com/prompt-engineering-chatgpt-prompts-for-regular-expressions/image-22" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-22.png?fit=593%2C397&amp;ssl=1" data-orig-size="593,397" data-comments-opened="0" 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="Regex Prompt Engineering in ChatGPT" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-22.png?fit=593%2C397&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-22.png?resize=593%2C397&#038;ssl=1" alt="" class="wp-image-3575" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-22.png?w=593&amp;ssl=1 593w, https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-22.png?resize=300%2C200&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-22.png?resize=420%2C280&amp;ssl=1 420w" sizes="(max-width: 593px) 100vw, 593px" /><figcaption class="wp-element-caption">Regex Prompt in ChatGPT</figcaption></figure>
</div>


<p>Regular Expressions can be used in various contexts, including:</p>



<ol class="wp-block-list">
<li>Text processing and manipulation</li>



<li>Data validation and pattern matching</li>



<li>Search and replace operations in text editors and IDEs</li>



<li>Web scraping and data extraction</li>



<li>Input validation in programming</li>
</ol>



<p>Regex is supported in many programming languages, including Python, Perl, Java, JavaScript, and Ruby.</p>



<p>I have lived with regex since my Perl days. There are a lot of rules surrounding them and programmers pride themselves on writing hard-to-read code using regex. If you remember all of the rules, you can figure out what a regex means, but I have been using ChatGPT to explain them to me when I see them.</p>


<h2 class="wp-block-heading" id="what-does-string-wsw-do-in-perl">What does &#8216;$string =~ /(\w+)\s(\w+)/&#8217; do in Perl?</h2>


<p><em>Just ask ChatGPT.</em></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The expression <code>$string =~ /(\w+)\s(\w+)/</code> in Perl is a regular expression pattern match operation. It tries to match the pattern <code>(\w+)\s(\w+)</code> within the string <code>$string</code>. If the pattern matches, the matched substrings are stored in special variables <code>$1</code>, <code>$2</code>, etc.</p>



<p>The pattern <code>(\w+)\s(\w+)</code> consists of two sub-patterns <code>(\w+)</code> separated by a white space <code>\s</code>. Each sub-pattern matches one or more word characters <code>\w</code> and the plus sign <code>+</code> indicates to match one or more of the preceding expressions.</p>



<p>For example, if the string <code>$string</code> is <code>"The quick brown fox"</code>, the match will be successful and <code>$1</code> will contain the matched string <code>"The"</code>, and <code>$2</code> will contain <code>"quick"</code>.</p>
<cite>ChatGPT on What does &#8216;$string =~ /(\w+)\s(\w+)/&#8217; do in Perl?</cite></blockquote>


<h2 class="wp-block-heading" id="effective-prompt-engineering-for-regular-expressions-and-chatgpt">Effective Prompt Engineering for Regular Expressions and ChatGPT</h2>


<p>Using a chatbot like ChatGPT effectively is all about writing good prompts. Context really helps the chatbot understand the prompt and how to return accurate results.</p>



<ul class="wp-block-list">
<li>Start prompt with the programing language</li>



<li>Add Regex to the prompt</li>



<li>Ask for example code</li>



<li>Include a short description of the regex and specific rules (ignore case, match all occurrences, etc.)</li>



<li>Ask for an explanation or not</li>



<li>Ask for sample output or not</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="489" data-attachment-id="3576" data-permalink="https://nothans.com/prompt-engineering-chatgpt-prompts-for-regular-expressions/image-23" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?fit=1042%2C679&amp;ssl=1" data-orig-size="1042,679" data-comments-opened="0" 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="image-23" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?fit=750%2C489&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?resize=750%2C489&#038;ssl=1" alt="" class="wp-image-3576" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?resize=1024%2C667&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?resize=300%2C195&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?resize=768%2C500&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?resize=750%2C489&amp;ssl=1 750w, https://i0.wp.com/nothans.com/wp-content/uploads/2023/01/image-23.png?w=1042&amp;ssl=1 1042w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption class="wp-element-caption">Example Regular Expression Prompt for ChatGPT</figcaption></figure>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/prompt-engineering-chatgpt-prompts-for-regular-expressions/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3574</post-id>	</item>
		<item>
		<title>How I Learned to Program</title>
		<link>https://nothans.com/how-i-learned-to-program</link>
					<comments>https://nothans.com/how-i-learned-to-program#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Wed, 05 May 2021 19:23:35 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Perl]]></category>
		<guid isPermaLink="false">https://nothans.com/?p=2180</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading" id="tldr">TL;DR</h2>


<p>I learned to program (and I continue to learn) by writing programs. I started off copying programs from books and magazines and making changes. I set out to solve problems with software, which helped me develop skills over a long time. Also, I didn&#8217;t do anything alone. A lot of people gave me their time, gave me access to resources and computers, and gave me a chance. At the end of this story, I will leave you with some takeaways and steps that mattered to me.</p>


<h2 class="wp-block-heading" id="a-place-to-start">A Place to Start</h2>


<p>My first <a href="https://nothans.com/is-it-time-to-upgrade-to-16k-of-ram" data-type="post" data-id="2169">experience</a> with a personal computer happened at 5 years old in 1982 with a Timex Sinclair TS1000. I remember watching my dad load software from cassette tapes and then being able to repeat those steps on my own to load up games. My first exposure to programming happened at K-Mart. K-Mart is a store like our modern-day Walmart and Target. Back then, we had a bunch of big-box stores in the Pittsburgh, PA area such as Hills, K-Mart, and Ames. They all sold computers. On one of the shopping trips, my dad stopped in front of a <a rel="noreferrer noopener" href="https://virtualconsoles.com/online-emulators/c64/" target="_blank">Commodore 64</a> display. Much like you see at an Apple store today, back then K-Mart had a section of computers hooked up to screens so you could try them out. My dad typed out a <em>basic </em>program.</p>



<pre class="wp-block-code"><code>10 PRINT "HANS"
20 GOTO 10
RUN</code></pre>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/how-i-learned-to-program&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:49.53000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2181" data-permalink="https://nothans.com/how-i-learned-to-program/commodore_64_program" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program.png?fit=558%2C342&amp;ssl=1" data-orig-size="558,342" data-comments-opened="0" 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="commodore_64_program" data-image-description="" data-image-caption="&lt;p&gt;Commodore 64 Program&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program.png?fit=558%2C342&amp;ssl=1" data-attachment-id="2181" data-permalink="https://nothans.com/how-i-learned-to-program/commodore_64_program" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program.png?fit=558%2C342&amp;ssl=1" data-orig-size="558,342" data-comments-opened="0" 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="commodore_64_program" data-image-description="" data-image-caption="&lt;p&gt;Commodore 64 Program&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program.png?fit=558%2C342&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 2 in full-screen"srcset="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program.png?strip=info&#038;w=558&#038;ssl=1 558w" alt="" data-height="342" data-id="2181" data-link="https://nothans.com/?attachment_id=2181" data-url="https://nothans.com/wp-content/uploads/2021/05/commodore_64_program.png" data-width="558" src="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program.png?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:50.47000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2182" data-permalink="https://nothans.com/how-i-learned-to-program/commodore_64_program_output" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program_output.png?fit=557%2C335&amp;ssl=1" data-orig-size="557,335" data-comments-opened="0" 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="commodore_64_program_output" data-image-description="" data-image-caption="&lt;p&gt;Program Output&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program_output.png?fit=557%2C335&amp;ssl=1" data-attachment-id="2182" data-permalink="https://nothans.com/how-i-learned-to-program/commodore_64_program_output" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program_output.png?fit=557%2C335&amp;ssl=1" data-orig-size="557,335" data-comments-opened="0" 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="commodore_64_program_output" data-image-description="" data-image-caption="&lt;p&gt;Program Output&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program_output.png?fit=557%2C335&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 2 of 2 in full-screen"srcset="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program_output.png?strip=info&#038;w=557&#038;ssl=1 557w" alt="" data-height="335" data-id="2182" data-link="https://nothans.com/?attachment_id=2182" data-url="https://nothans.com/wp-content/uploads/2021/05/commodore_64_program_output.png" data-width="557" src="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/commodore_64_program_output.png?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div>



<p>I thought my dad was a wizard. He typed a few lines of text and caused the computer to do something. I wanted to learn as much as I could from that point going forward.</p>



<p>My dad&#8217;s program turned out to be a BASIC program. BASIC is a programming language and most of the computing devices had some way to write BASIC programs back in the 80s. Line 10 told the computer to print out the word &#8220;Hans&#8221;. Line 20 told the computer to go back to line 10. This is also why I commonly misspell &#8220;go to&#8221; as goto. And, RUN told the computer to execute the program.</p>



<p>We had an Atari 2600 and I traded a few cartridges to get the <a rel="noreferrer noopener" href="https://en.wikipedia.org/wiki/BASIC_Programming" target="_blank">BASIC Programming</a> cartridge: Computer Programing Made Easy! Far from easy, but I started to learn the basics, so to speak.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="749" height="999" data-attachment-id="2185" data-permalink="https://nothans.com/how-i-learned-to-program/atari_basic" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Atari_BASIC.jpg?fit=749%2C999&amp;ssl=1" data-orig-size="749,999" data-comments-opened="0" 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="Atari_BASIC" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Atari_BASIC.jpg?fit=749%2C999&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Atari_BASIC.jpg?resize=749%2C999&#038;ssl=1" alt="" class="wp-image-2185" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Atari_BASIC.jpg?w=749&amp;ssl=1 749w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Atari_BASIC.jpg?resize=225%2C300&amp;ssl=1 225w" sizes="auto, (max-width: 749px) 100vw, 749px" /><figcaption>Atari BASIC Programming Cartridge</figcaption></figure>



<p>From the Atari, I got access to a Commodore 64 at a friend&#8217;s house. At school, I got access to Apple II computers. The librarian at the school, Ms. Archer, noticed my interest. She told me about the books and magazines that the school library had about programming. There were only two students interested in programming back then so she allowed us to take home some of the books and magazines. The most impactful book at the time was A Guide to Programming in Applesoft. This book helped me learn everything from making graphics to how to save new programs to a floppy disk.</p>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/how-i-learned-to-program&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:50.00000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2187" data-permalink="https://nothans.com/how-i-learned-to-program/apple_programming_book" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="Apple_programming_book" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg?fit=706%2C942&amp;ssl=1" data-attachment-id="2187" data-permalink="https://nothans.com/how-i-learned-to-program/apple_programming_book" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="Apple_programming_book" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg?fit=706%2C942&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 2 in full-screen"srcset="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg?strip=info&#038;w=706&#038;ssl=1 706w" alt="" data-height="942" data-id="2187" data-link="https://nothans.com/?attachment_id=2187" data-url="https://nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg" data-width="706" src="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book.jpg?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:50.00000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2186" data-permalink="https://nothans.com/how-i-learned-to-program/apple_programming_book_page" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="Apple_programming_book_page" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg?fit=706%2C942&amp;ssl=1" data-attachment-id="2186" data-permalink="https://nothans.com/how-i-learned-to-program/apple_programming_book_page" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="Apple_programming_book_page" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg?fit=706%2C942&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 2 of 2 in full-screen"srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg?strip=info&#038;w=706&#038;ssl=1 706w" alt="" data-height="942" data-id="2186" data-link="https://nothans.com/?attachment_id=2186" data-url="https://nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg" data-width="706" src="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Apple_programming_book_page.jpg?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div>



<p>The way that I learned was by writing out the programs in books and magazines. Some of them took me hours to type out on the computer. During this copying process (akin to forking a repo on GitHub in the modern era), I learned the commands and syntax of programming. In class, I daydreamed of new programs and wrote them out in my notebook. I recently found some note pages from my 8-year-old self.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="706" height="942" data-attachment-id="2189" data-permalink="https://nothans.com/how-i-learned-to-program/written_out_basic_program" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/written_out_BASIC_program.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="written_out_BASIC_program" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/written_out_BASIC_program.jpg?fit=706%2C942&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/written_out_BASIC_program.jpg?resize=706%2C942&#038;ssl=1" alt="" class="wp-image-2189" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/written_out_BASIC_program.jpg?w=706&amp;ssl=1 706w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/written_out_BASIC_program.jpg?resize=225%2C300&amp;ssl=1 225w" sizes="auto, (max-width: 706px) 100vw, 706px" /><figcaption>Written out BASIC program</figcaption></figure>



<p>I was heavily influenced by the movie Wargames, so I wrote my own start-up program for my Apple II. My favorite line: GET LOST, YOU HAVE ACCESSED THE SELF-DESTRUT (sic) MODE. TURN OFF COMPUTER NOW!</p>


<h2 class="wp-block-heading" id="games">Games</h2>


<p>I really wanted to make games. I didn&#8217;t play many games, but I made a connection between me buying software and someone making money off the game. I really wanted to want to create something people would want to buy. My brother and I had a recycling business as kids. We collected aluminum cans, recycled, them, and reinvested the money into computer parts, software, toys, and games. And, if I am honest with myself, I wanted to see my name in lights. All of my software had load screens with my name as the largest text. HANS SCHARLER software!!!</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="563" data-attachment-id="2190" data-permalink="https://nothans.com/how-i-learned-to-program/hans_scharler_loading_screen" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?fit=1245%2C934&amp;ssl=1" data-orig-size="1245,934" data-comments-opened="0" 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="hans_scharler_loading_screen" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?fit=750%2C563&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?resize=750%2C563&#038;ssl=1" alt="" class="wp-image-2190" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_scharler_loading_screen.jpg?w=1245&amp;ssl=1 1245w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption>HANS SCHARLER loading screen</figcaption></figure>



<p>Games are not easy to program. Computer games rely a lot on text and drawing pixels on the screen. You had to know about graphics, logic, state, and peripherals. I didn&#8217;t know much about how to create games, but I brute-forced my way through it. With whatever new function that I learned, I would apply it in a non-scalable way. I used to draw out the screens by hand using graph paper. I can&#8217;t imagine how much time I spent doing this over my formidable years.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="563" data-attachment-id="2191" data-permalink="https://nothans.com/how-i-learned-to-program/ping_pong" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?fit=1245%2C934&amp;ssl=1" data-orig-size="1245,934" data-comments-opened="0" 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="ping_pong" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?fit=750%2C563&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?resize=750%2C563&#038;ssl=1" alt="" class="wp-image-2191" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/ping_pong.jpg?w=1245&amp;ssl=1 1245w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption>PING PONG loading screen with code</figcaption></figure>



<p>I didn&#8217;t make any great games, but I did learn a lot. I loved the process. If I was being measured by how much money, I made off of this work, I would have been a failure by any accounting. It took almost 40 years, in 2020, John Fluet and I released one of my games to <a rel="noreferrer noopener" href="https://nothans.com/divide-and-conquer-is-on-steam" target="_blank">Steam</a>.</p>



<p>&#8220;Hero&#8221; was my most ambitious project. I spent hours, days, weeks drawing the art for the game and encoding them in BASIC. Admittedly, Hero was strongly based on the <a rel="noreferrer noopener" href="https://boardgamegeek.com/boardgame/699/heroquest" target="_blank">Hero Quest board game</a>.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="750" height="563" data-attachment-id="2192" data-permalink="https://nothans.com/how-i-learned-to-program/hero_game_drawings" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?fit=2560%2C1920&amp;ssl=1" data-orig-size="2560,1920" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;1.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Pixel 2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1620217045&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.442&quot;,&quot;iso&quot;:&quot;112&quot;,&quot;shutter_speed&quot;:&quot;0.007993&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="hero_game_drawings" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?fit=750%2C563&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings.jpg?resize=750%2C563&#038;ssl=1" alt="" class="wp-image-2192" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?resize=1536%2C1152&amp;ssl=1 1536w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?resize=2048%2C1536&amp;ssl=1 2048w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?resize=100%2C75&amp;ssl=1 100w, https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hero_game_drawings-scaled.jpg?w=2250&amp;ssl=1 2250w" sizes="auto, (max-width: 750px) 100vw, 750px" /><figcaption>Hero computer game graphics</figcaption></figure>


<h2 class="wp-block-heading" id="going-next-level">Going Next Level</h2>


<p>College introduced me to all kinds of things: coffee, people of varying skill, new computers, the Internet, websites, and new programming languages. I had to learn C as a freshman. I built a matrix solver as my final project. I also had to make an application in MATLAB. I remember spending $30 on a MATLAB book. I would say this turned out to be a good investment on my part.</p>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/how-i-learned-to-program&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:50.91705%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2193" data-permalink="https://nothans.com/how-i-learned-to-program/matlab_book" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?fit=1920%2C2560&amp;ssl=1" data-orig-size="1920,2560" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;1.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Pixel 2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1620216648&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.442&quot;,&quot;iso&quot;:&quot;179&quot;,&quot;shutter_speed&quot;:&quot;0.008335&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="MATLAB_book" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?fit=750%2C1000&amp;ssl=1" data-attachment-id="2193" data-permalink="https://nothans.com/how-i-learned-to-program/matlab_book" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?fit=1920%2C2560&amp;ssl=1" data-orig-size="1920,2560" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;1.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Pixel 2&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1620216648&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.442&quot;,&quot;iso&quot;:&quot;179&quot;,&quot;shutter_speed&quot;:&quot;0.008335&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="MATLAB_book" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?fit=750%2C1000&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 2 in full-screen"srcset="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?strip=info&#038;w=1200&#038;ssl=1 1200w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?strip=info&#038;w=1500&#038;ssl=1 1500w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?strip=info&#038;w=1800&#038;ssl=1 1800w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?strip=info&#038;w=1920&#038;ssl=1 1920w" alt="" data-height="2560" data-id="2193" data-link="https://nothans.com/?attachment_id=2193" data-url="https://nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg" data-width="1920" src="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/MATLAB_book-scaled.jpg?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:49.08295%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2194" data-permalink="https://nothans.com/how-i-learned-to-program/hans_at_mathworks" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg?fit=681%2C942&amp;ssl=1" data-orig-size="681,942" data-comments-opened="0" 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="Hans_at_MathWorks" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg?fit=681%2C942&amp;ssl=1" data-attachment-id="2194" data-permalink="https://nothans.com/how-i-learned-to-program/hans_at_mathworks" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg?fit=681%2C942&amp;ssl=1" data-orig-size="681,942" data-comments-opened="0" 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="Hans_at_MathWorks" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg?fit=681%2C942&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 2 of 2 in full-screen"srcset="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg?strip=info&#038;w=681&#038;ssl=1 681w" alt="" data-height="942" data-id="2194" data-link="https://nothans.com/?attachment_id=2194" data-url="https://nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg" data-width="681" src="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/Hans_at_MathWorks.jpg?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div>



<p>My career got kicked off with an internship at S.P. McCarl and Company. I wrote software for their machining systems and designed their first website back in 1996. This summer internship gave me my early ideas about software for machines and the web. I was really lucky to get a job like this. I was selected because I didn&#8217;t have any absentee days at school. Back then, local companies used to work closely with someone at the college to place students into internships. I didn&#8217;t have a resume or any marketable skills at this point. McCarl&#8217;s only requirement was dependability. The school&#8217;s career counselor thought of me. Everyone needs a break.</p>


<h2 class="wp-block-heading" id="the-web-and-perl">The Web and Perl</h2>


<p>In 1996, I discovered Perl. Perl is a programming language created by Larry Wall. This plucky language took off in popularity when the book, <a rel="noreferrer noopener" href="https://amzn.to/3h2xq0b" target="_blank">CGI Programming on the World Wide Web</a>, was released in 1996. I loved what I learned by creating web pages during my internship and I was convinced that software was going to be delivered through the Netscape web browser. To make a web application, you had to know two domains: the front-end (web browser &#8211; HTML, CSS, and JavaScript), the back-end (server with your logic). Perl and CGI were the first languages that connected the worlds together and made web applications possible. Now, there are hundreds of web application frameworks. I owe a lot of my career to Perl and Larry Wall&#8217;s influence on server software. I became a donor to <a href="https://www.perlfoundation.org/">The Perl Foundation</a> as soon I started making any money. I got to meet Larry Wall at Perl events and also get to have dinner with him. During that dinner, I asked him to sign my Perl book, the pink Perl book with the camel on the cover. I handed him the book and a pen. He took the book and flipped through the pages. He reached under the table and produced a briefcase. In this case, he had the original stamp pad from his O&#8217;Reilly book tour featuring the camel clipart used on the book&#8217;s cover. He signed and stamped my book and told me, &#8220;there&#8217;s more than one way to do it.&#8221; </p>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/how-i-learned-to-program&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:50.00000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2196" data-permalink="https://nothans.com/how-i-learned-to-program/perl_book" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="perl_book" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book.jpg?fit=706%2C942&amp;ssl=1" data-attachment-id="2196" data-permalink="https://nothans.com/how-i-learned-to-program/perl_book" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="perl_book" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book.jpg?fit=706%2C942&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 2 in full-screen"srcset="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book.jpg?strip=info&#038;w=706&#038;ssl=1 706w" alt="" data-height="942" data-id="2196" data-link="https://nothans.com/?attachment_id=2196" data-url="https://nothans.com/wp-content/uploads/2021/05/perl_book.jpg" data-width="706" src="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book.jpg?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:50.00000%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2195" data-permalink="https://nothans.com/how-i-learned-to-program/perl_book_signed" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="perl_book_signed" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg?fit=706%2C942&amp;ssl=1" data-attachment-id="2195" data-permalink="https://nothans.com/how-i-learned-to-program/perl_book_signed" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg?fit=706%2C942&amp;ssl=1" data-orig-size="706,942" data-comments-opened="0" 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="perl_book_signed" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg?fit=706%2C942&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 2 of 2 in full-screen"srcset="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg?strip=info&#038;w=706&#038;ssl=1 706w" alt="" data-height="942" data-id="2195" data-link="https://nothans.com/?attachment_id=2195" data-url="https://nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg" data-width="706" src="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/perl_book_signed.jpg?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div>


<h2 class="wp-block-heading" id="iron-sharpens-iron">Iron Sharpens Iron</h2>


<p>My childhood friend and future business partner, Jason Winters, and I became fast friends. He was the other student who the teachers told me about. Jason had the same passion for programming and I learned a lot from him. I remember looking forward to every Monday to see what he made over the weekend. We used to push each other. I wanted to do cool things as he did, so I tried harder and worked longer. We graduated together, went to Penn State together, had a co-op together, and started an <a href="https://nothans.com/my-history-of-the-internet-of-things">Internet of Things company</a> together. After working together for 30 years building hardware and software, we joined MathWorks together in 2014. I have been there ever since. Here are photos of us at MathWorks and with <a rel="noreferrer noopener" href="https://www.mathworks.com/company/aboutus/founders/clevemoler.html" target="_blank">Cleve Moler</a>, the creator of MATLAB.</p>



<div data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;https://nothans.com/how-i-learned-to-program&quot;}'  class="wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular"><div class="tiled-gallery__gallery"><div class="tiled-gallery__row"><div class="tiled-gallery__col" style="flex-basis:59.58981%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2198" data-permalink="https://nothans.com/how-i-learned-to-program/jason_hans_at_mathworks" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?fit=936%2C942&amp;ssl=1" data-orig-size="936,942" data-comments-opened="0" 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="jason_hans_at_mathworks" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?fit=750%2C755&amp;ssl=1" data-attachment-id="2198" data-permalink="https://nothans.com/how-i-learned-to-program/jason_hans_at_mathworks" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?fit=936%2C942&amp;ssl=1" data-orig-size="936,942" data-comments-opened="0" 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="jason_hans_at_mathworks" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?fit=750%2C755&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 1 of 3 in full-screen"srcset="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?strip=info&#038;w=936&#038;ssl=1 936w" alt="" data-height="942" data-id="2198" data-link="https://nothans.com/?attachment_id=2198" data-url="https://nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg" data-width="936" src="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/jason_hans_at_mathworks.jpg?ssl=1" data-amp-layout="responsive"/></figure></div><div class="tiled-gallery__col" style="flex-basis:40.41019%"><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2199" data-permalink="https://nothans.com/how-i-learned-to-program/hans_scharler_cleve_moler_jason_winters" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?fit=1033%2C942&amp;ssl=1" data-orig-size="1033,942" data-comments-opened="0" 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="hans_Scharler_cleve_moler_jason_winters" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?fit=750%2C684&amp;ssl=1" data-attachment-id="2199" data-permalink="https://nothans.com/how-i-learned-to-program/hans_scharler_cleve_moler_jason_winters" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?fit=1033%2C942&amp;ssl=1" data-orig-size="1033,942" data-comments-opened="0" 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="hans_Scharler_cleve_moler_jason_winters" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?fit=750%2C684&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 2 of 3 in full-screen"srcset="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?strip=info&#038;w=600&#038;ssl=1 600w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?strip=info&#038;w=900&#038;ssl=1 900w,https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?strip=info&#038;w=1033&#038;ssl=1 1033w" alt="" data-height="942" data-id="2199" data-link="https://nothans.com/?attachment_id=2199" data-url="https://nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg" data-width="1033" src="https://i2.wp.com/nothans.com/wp-content/uploads/2021/05/hans_Scharler_cleve_moler_jason_winters.jpg?ssl=1" data-amp-layout="responsive"/></figure><figure class="tiled-gallery__item"><img decoding="async" data-attachment-id="2200" data-permalink="https://nothans.com/how-i-learned-to-program/jason_winters_and_hans_scharler_at_mathworks" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?fit=1246%2C701&amp;ssl=1" data-orig-size="1246,701" data-comments-opened="0" 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="jason_winters_and_hans_scharler_at_mathworks" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?fit=750%2C422&amp;ssl=1" data-attachment-id="2200" data-permalink="https://nothans.com/how-i-learned-to-program/jason_winters_and_hans_scharler_at_mathworks" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?fit=1246%2C701&amp;ssl=1" data-orig-size="1246,701" data-comments-opened="0" 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="jason_winters_and_hans_scharler_at_mathworks" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?fit=750%2C422&amp;ssl=1" role="button" tabindex="0" aria-label="Open image 3 of 3 in full-screen"srcset="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?strip=info&#038;w=600&#038;ssl=1 600w,https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?strip=info&#038;w=900&#038;ssl=1 900w,https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?strip=info&#038;w=1200&#038;ssl=1 1200w,https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?strip=info&#038;w=1246&#038;ssl=1 1246w" alt="" data-height="701" data-id="2200" data-link="https://nothans.com/?attachment_id=2200" data-url="https://nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg" data-width="1246" src="https://i1.wp.com/nothans.com/wp-content/uploads/2021/05/jason_winters_and_hans_scharler_at_mathworks.jpeg?ssl=1" data-amp-layout="responsive"/></figure></div></div></div></div>


<h2 class="wp-block-heading" id="takeaways">Takeaways</h2>


<p>I got very lucky so far in my career. I had a knack for being in the right place at the right time&#8230; as it seems. I make sure to give back as much as possible. I spend time in online communities helping people with programming questions. I donate money to software foundations and encourage corporations to sponsor software foundations.</p>



<p>So, if you are looking for a process, I will try to summarize a few steps:</p>



<ol class="wp-block-list"><li><strong>Start copying.</strong> Find a project on GitHub. Find some code. Read through it. Re-create it. Rewrite it. You are going to learn a lot from copying.</li><li><strong>Break hard things down.</strong> If things get too hard, break down the challenge into something smaller until you can do that thing. Meaning, you are not going to make Call of Duty by yourself, but you could learn to make a mod of the game.</li><li><strong>Join online communities. </strong>Find the places on the web like <a href="https://matlabcentral.com">MATLAB Central</a>, Discord, GitHub, and others where people doing what you are doing are gathering. Ask questions as you learn. Answers questions while you are there. Find a way to give back.</li><li><strong>Connect with others who are on the same journey as you.</strong> I was fortunate to have Jason in my life. I also talked about programming and computers a lot. This attracted others that were interested or wanted to help. I used to spend a lot of time in the computer lab. This was noticed by teachers.</li><li><strong>Spend the time.</strong> It takes time. You may not think you have any time, but you most likely do have the time. One hour a day turns into 7 hours a week and 28 hours a month and 336 hours a year.</li><li><strong>Find videos on YouTube and TikTok.</strong> You can start learning by watching videos. Once you want to learn a specific language, by a class on Udemy. I still take a Udemy class once or twice a year on new frameworks. The courses cost less than $15 as they are always on sale. There are other places for low-cost training, but it is good value for your money.</li><li><strong>Be okay with failing.</strong> You have to try a lot of different things. You don&#8217;t know what part of the project that failed will carry over into future ones. Share your failures with others. Answers what could have gone better.</li><li>Give back. Share what you have learned. Donate code and money to projects that helped you build something.</li><li><strong>Acknowledge others.</strong> My dad, Ms. Archer, Mr. Gearhart, Shawn McCarl, Larry Wall, Jason Winters, Robert Blackwell, Josh Jo, Jay Huie, and Steve Struebing are all part of my journey. I didn&#8217;t do it alone.</li></ol>



<p>Let me know about your experience. Tell me how others have helped you or how you have helped others. <strong>Godspeed</strong>. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/how-i-learned-to-program/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2180</post-id>	</item>
		<item>
		<title>Internet of Things Talk at Carnegie Mellon University</title>
		<link>https://nothans.com/internet-of-things-talk-at-carnegie-mellon</link>
					<comments>https://nothans.com/internet-of-things-talk-at-carnegie-mellon#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Tue, 11 Oct 2011 22:32:00 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Talks]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[internet of things]]></category>
		<category><![CDATA[ioBridge]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PPW]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[web of things]]></category>
		<guid isPermaLink="false">http://nothans.com/internet-of-things-talk-at-carnegie-mellon</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<p>Last weekend was the <a title="Pittsburgh Perl Workshop" href="http://pghpw.org/ppw2011/" target="_blank" rel="noopener">Pittsburgh Perl Workshop</a> hosted by Carnegie Mellon University in Pittsburgh, PA. I gave a talk on the Internet of Things and building apps using the Perl programming language as the connective tissue between devices and web applications. I covered the basics on how you interface devices to the real-world. I also hosted a Hardware Hackathon to discuss hardware, connecting things, and Perl. I introduced everyone to my <a title="Everything is a Remix" href="http://www.everythingisaremix.info" target="_blank" rel="noopener">remixed</a> theory of innovation. Just get out there and copy a well-documented project, learn by transforming some part of it, and combine it with other ideas. This is the only way innovation has ever happened… Thanks for the fantastic time at PPW!</p>


<div class="wp-block-image">
<figure class="aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" width="500" height="205" data-attachment-id="890" data-permalink="https://nothans.com/internet-of-things-talk-at-carnegie-mellon/ppw2011-iot-hans" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2011/10/PPW2011-IoT-Hans.jpg?fit=500%2C205&amp;ssl=1" data-orig-size="500,205" data-comments-opened="0" 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="PPW2011 IoT Talk by Hans" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2011/10/PPW2011-IoT-Hans.jpg?fit=500%2C205&amp;ssl=1" src="https://i0.wp.com/nothans.com/wp-content/uploads/2011/10/PPW2011-IoT-Hans.jpg?resize=500%2C205" alt="PPW2011 IoT Talk by Hans" class="wp-image-890" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2011/10/PPW2011-IoT-Hans.jpg?w=500&amp;ssl=1 500w, https://i0.wp.com/nothans.com/wp-content/uploads/2011/10/PPW2011-IoT-Hans.jpg?resize=300%2C123&amp;ssl=1 300w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Hans Scharler at PPW 2011</figcaption></figure>
</div>


<p>Here are my slides from the 2011 Pittsburgh Perl Workshop:</p>


<p><iframe loading="lazy" title="Scripting Things - Creating the Internet of Things with Perl" src="https://www.slideshare.net/slideshow/embed_code/key/IqJIbAg3wEWbsa" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </p>
<div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/slideshow/scripting-things/9638095" title="Scripting Things - Creating the Internet of Things with Perl" target="_blank">Scripting Things &#8211; Creating the Internet of Things with Perl</a> </strong> from <strong><a href="https://www.slideshare.net/nothans" target="_blank">Hans Scharler</a></strong> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/internet-of-things-talk-at-carnegie-mellon/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">669</post-id>	</item>
		<item>
		<title>Automatic Thermostat Control Based on Location and Weather</title>
		<link>https://nothans.com/automatic-thermostat-control-based-on-location</link>
					<comments>https://nothans.com/automatic-thermostat-control-based-on-location#respond</comments>
		
		<dc:creator><![CDATA[Hans Scharler]]></dc:creator>
		<pubDate>Tue, 14 Sep 2010 09:56:00 +0000</pubDate>
				<category><![CDATA[Talks]]></category>
		<category><![CDATA[ThingSpeak]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[home automation]]></category>
		<category><![CDATA[internet of things]]></category>
		<category><![CDATA[ioBridge]]></category>
		<category><![CDATA[latitude]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[projects]]></category>
		<guid isPermaLink="false">http://nothans.com/automatic-thermostat-control-based-on-location</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<p>The&nbsp;<a title="Pittsburgh Perl Workshop 2010" href="http://pghpw.org/ppw2010/" target="_blank" rel="noopener noreferrer">Pittsburgh Perl Workshop</a> will be held at the Carnegie Mellon University on October 9-10, 2010. The PPW is a gathering of <a title="Perl Wiki" href="http://en.wikipedia.org/wiki/Perl" target="_blank" rel="noopener noreferrer">Perl</a> programmers from around the world (and near Pittsburgh) to learn more and discuss the future of Perl.</p>
<p>At this year’s PPW, I will be giving a talk called, “<strong><em>Connecting the Internet of Things with Perl</em></strong>“ (visit <a title="Pittsburgh Perl Conference Schedule for Internet of Things talk by Hans Scharler" href="http://pghpw.org/ppw2010/talk/3043" target="_blank" rel="noopener noreferrer">pghpw.org</a> for&nbsp;schedule&nbsp;info). I will also explain how to create an Internet of Things application using off-the-shelf&nbsp;Perl modules and web control technology by <a title="ioBridge Technology" href="http://www.iobridge.com/technology" target="_blank" rel="noopener noreferrer">ioBridge</a>.</p>
<p>As you may or may not know, Perl is a really powerful programming language that enables everything from fast&nbsp;prototyping&nbsp;of web applications to large-scale software platforms. What makes the language unique is the library of modules&nbsp;available&nbsp;to you. If you get a great new idea for a web app, you can get started quickly and find modules that others have written. In some cases, it’s literally copy-and-paste.</p>
<p>A big movement for the past few years is this concept of The Internet of Things. More things will be on the Internet than people in the next few years, so my talk is to highlight why Perl is still relevant after 20 years and needs to be apart of this emerging technology. Internet of Things applications involve connecting sensors and controllers to the web. Perl is perfect for parsing lots of data, pushing data into databases, and connecting services together, known as “mashups”.</p>
<p>My Internet of&nbsp;Things&nbsp;project, written in Perl, allows your current location&nbsp;and home weather conditions to control your home heating and cooling system.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="253" data-permalink="https://nothans.com/automatic-thermostat-control-based-on-location/google-latitude-iobridge-mashup-3" data-orig-file="https://i0.wp.com/nothans.com/wp-content/uploads/2010/09/Google-Latitude-ioBridge-Mashup2.jpg?fit=550%2C433&amp;ssl=1" data-orig-size="550,433" data-comments-opened="0" 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="Location Aware Home Automation" data-image-description="" data-image-caption="&lt;p&gt;Location Aware Home Automation&lt;/p&gt;
" data-large-file="https://i0.wp.com/nothans.com/wp-content/uploads/2010/09/Google-Latitude-ioBridge-Mashup2.jpg?fit=550%2C433&amp;ssl=1" class="aligncenter wp-image-253 size-full" src="https://i0.wp.com/nothans.com/wp-content/uploads/2010/09/Google-Latitude-ioBridge-Mashup2.jpg?resize=550%2C433" alt="Location Aware Home Automation using Google Latitude API and ioBridge API" width="550" height="433" srcset="https://i0.wp.com/nothans.com/wp-content/uploads/2010/09/Google-Latitude-ioBridge-Mashup2.jpg?w=550&amp;ssl=1 550w, https://i0.wp.com/nothans.com/wp-content/uploads/2010/09/Google-Latitude-ioBridge-Mashup2.jpg?resize=300%2C236&amp;ssl=1 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></p>
<p>I call it, &nbsp;”Location Aware Home Automation”. You don’t have to do anything to control your HVAC/Thermostat, it all happens based on where you are. If you are home, the thermostat regulates the inside temperature as normal. When you leave, systems turn off or enter power saving modes. When you get near your home, the heating/cooling system kicks back on so you have a comfortable temperature by the time you get back home. In order to pull off all of this passive and automatic functionality, I have mashed up several APIs from Google&nbsp;Latitude, WeatherBug, and ioBridge.</p>
<p>Using the API for Google&nbsp;Latitude, I track the location of my Android mobile phone. When I get near my home, I check the weather using Google Weather API, WeatherBug API, and my home&nbsp;temperature&nbsp;(via ioBridge) to see if I need to to use the air conditioner, the heater, or neither. If I do need to control the HVAC, I send the control commands using the ioBridge API that routes the commands to the IO-204 controller that’s hooked up to my thermostat.</p>
<p>This application is really just a beginning. Right after I got everything working, I started having a flood of ideas. I can see some real power here.</p>
<h2>The &#8216;How To&#8217; Portion of the Show</h2>
<h3>Google Latitude</h3>
<p>You have to enable Google Latitude on your mobile phone and get your Badge ID. This ID represents your position in the world, your latitude and longitude. Visit the <a title="Google Latitude API and Badge ID" href="http://www.google.com/latitude/apps/badge" target="_blank" rel="noopener noreferrer">Google Latitude API</a> site for more information.</p>
<p>Install the latest <a title="Google Latitude Perl Module" href="http://search.cpan.org/~mrdvt/Geo-Google-Latitude-0.06/lib/Geo/Google/Latitude.pm" target="_blank" rel="noopener noreferrer">Geo::Google::Latitude</a> Perl module from CPAN.org &#8211; this module completely abstracts the access to the Google Latitude API for you. All you have to do us pass your ID and the module returns the date, time, last known latitude and longitude (the values are in decimal degrees).</p>
<p><code>use Geo::Google::Latitude;<br />
my $gl=Geo::Google::Latitude-&gt;new;<br />
my $id="7832225593622256926";<br />
my $badge=$gl-&gt;get($id);<br />
my ($lat2, $lon2) = $badge-&gt;point-&gt;latlon;</code></p>
<h3>Calculating how far you are away &nbsp;from home</h3>
<p>You have to figure out how far you are from home, you do this by doing some math. Oh wait, there’s a Perl module for that. Install <a title="Geo::Distance Perl Module on CPAN used to calculate distance between positions" href="http://search.cpan.org/~bluefeet/Geo-Distance-0.16/lib/Geo/Distance.pm" target="_blank" rel="noopener noreferrer">Geo::Distance</a> and all you have to do is tell it what latitude and longitude to compare and it spits out the distance.</p>
<p><code>use Geo::Distance;<br />
my $geo = new Geo::Distance;<br />
### Home Location<br />
my $lon1 = "-79.76408";<br />
my $lat1 = "39.980342";<br />
### Calculated Distance<br />
my $distance = $geo-&gt;distance( 'mile', $lon1, $lat1 =&gt;; $lon2, $lat2 ); # Use 'meter' to calculate distance in meters</code></p>
<h3>Getting the Weather</h3>
<p>You can use a number of weather APIs to get weather data for your home location. All you need to know is where you live. The easiest to implement is Google Weather (<a title="Google Weather API" href="http://search.cpan.org/~possum/Weather-Google-0.05/lib/Weather/Google.pm" target="_blank" rel="noopener noreferrer">Weather::Google</a>), but the WeatherBug API has a lot more information you can use for other Internet of Things things you may do.</p>
<p><code> use Weather::Google;<br />
my $gw = new Weather::Google(15401); # Zipcode<br />
my $current_outside = $gw-&gt;current-&gt;{temp_f}; #Use temp_c for Celsius</code></p>
<h3>Connect to ioBridge</h3>
<p>All you have to do to connect with ioBridge is to send command via the <a title="ioBridge Widget API" href="http://www.iobridge.net/wiki/api/static-widget-api" target="_blank" rel="noopener noreferrer">ioBridge Widget API</a>. First you create the control widgets for your heating and cooling system. For mine, I can use relays. Others may need serial strings, which you can send as well. Once you have the widgets created, locate there widget ID’s and send them to the API.<br />
<code><br />
use LWP::Simple;<br />
my $Air_Conditioner_widgetID = "Gb2Q1FUKPmzZ"; ### Replace with your widget ID's<br />
my $Heater_widgetID = "9c3WEGHKemnzJ";<br />
my $Inside_Temp_widgetID = "D32SDghy98iOu";<br />
my $ioBridgeAPI = "";<br />
$ioBridgeAPI = "http://www.iobridge.com/widgets/static/id=" . $Inside_Temp_widgetID . "&amp;value=1&amp;format=text";<br />
my $current_inside = get($ioBridgeAPI);<br />
### Test if the heater or the air condition should be turned on<br />
if ($current_outside &gt;= 78 &amp;&amp; $current_inside &gt;= 72) {<br />
$ioBridgeAPI = "http://www.iobridge.com/widgets/static/id=" . $Air_Conditioner_widgetID . "&amp;value=1&amp;format=text";<br />
get($ioBridgeAPI);<br />
}<br />
elsif ($current_outside $ioBridgeAPI = "http://www.iobridge.com/widgets/static/id=" . $Heater_widgetID . "&amp;value=1&amp;format=text";<br />
get("$ioBridgeAPI");<br />
}</code></p>
<h3>Putting it all together</h3>
<p>Once you have the&nbsp;entire&nbsp;built all you have to do is call the app periodically using CRON Linux or Task Scheduler on Windows. Here is a <a href="http://iamshadowlord.com/LocationAwareAutomation.txt" target="_blank" rel="noopener noreferrer">TXT file</a> of the Perl application with all of the parts tied together, probably will be easier to read and understand.</p>
<p>The hardware side uses the <a title="ioBridge IO-204 Internet Monitor and Control Module" href="http://www.iobridge.com" target="_blank" rel="noopener noreferrer">ioBridge IO-204</a> connected to the control lines of a&nbsp;<a title="Remotely enabling and disabling a thermostat" href="http://www.thomaswlewis.com/?p=567" target="_blank" rel="noopener noreferrer">thermostat</a> or an HVAC control box. The lines switch at 12 volts, so I use relays trigger them. Other thermostats&nbsp;that I researched use serial lines which the IO-204 can tap into using RS-232.</p>
<p>It may seem like a lot of work, but just think about what is happening. Feeds from Google&nbsp;Latitude&nbsp;and WeatherBug are being processed and passed to your home network via the Internet. All of this is happening without your direct interaction &#8211; your things are working for you. I hope that you can see that is a start of some pretty amazing applications of technologies that will advance over time. A lot has changed in the past year, I can’t image what comes next.</p>
<p>If you get around to building a project like this, please drop me a line. I love this stuff.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nothans.com/automatic-thermostat-control-based-on-location/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">676</post-id>	</item>
	</channel>
</rss>
