<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: pieterjoubert</title>
    <description>The latest articles on DEV Community by pieterjoubert (@pieterjoubert).</description>
    <link>https://dev.to/pieterjoubert</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F241681%2Fcab5c67c-fa83-4cba-b8af-632f2a5e3ebb.jpeg</url>
      <title>DEV Community: pieterjoubert</title>
      <link>https://dev.to/pieterjoubert</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pieterjoubert"/>
    <language>en</language>
    <item>
      <title>Arcology Roguelike Lifestream E6</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Mon, 25 Nov 2019 17:55:01 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e6-6p7</link>
      <guid>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e6-6p7</guid>
      <description>&lt;p&gt;&lt;code&gt;Scheduled for 25/11/2019 18:30 GMT&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Episode 6: Procedural Generation
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Planned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add a loading bar&lt;/li&gt;
&lt;li&gt;Try and fix the procedural generation so that doors/openings match up&lt;/li&gt;
&lt;li&gt;Add camera controls&lt;/li&gt;
&lt;li&gt;Add basic MouseClick interaction&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Link and actually completed work
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/P7lTCbVg7Uk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loading text added&lt;/li&gt;
&lt;li&gt;Spiral procedural generation implemented. Needs quite a bit of work, but it's looking much better&lt;/li&gt;
&lt;li&gt;Camera controls added&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Still to do from this session
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fix camera rotation&lt;/li&gt;
&lt;li&gt;Fix procedural generation&lt;/li&gt;
&lt;li&gt;Add MouseClick interaction&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>unity3d</category>
      <category>roguelike</category>
      <category>livestream</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Arcology Roguelike Lifestream E5</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Mon, 18 Nov 2019 19:37:59 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e5-3dk5</link>
      <guid>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e5-3dk5</guid>
      <description>&lt;h1&gt;
  
  
  Episode 5: Procedural Generation
&lt;/h1&gt;

&lt;p&gt;In this video I build on the Procedural Generation algorithm discussed in the previous video.&lt;/p&gt;

&lt;p&gt;I start with a bit of Game and Art Design, exploring the idea of the game having levels or floors that are separated from the other floors or levels in the game. To implement this visually I add a very basic "scaffold" effect.&lt;/p&gt;

&lt;p&gt;I look at ways to get better coverage of the entire level with Rooms.&lt;/p&gt;

&lt;p&gt;I also attempt a solution to prevent rooms from overlapping. The code works, but the generated levels lack play-ability. In this instance Game Mechanics trump the correctness of the algorithm.&lt;/p&gt;

&lt;p&gt;I also add some code to ensure our level always has one entrance, and finally, I add random rotations to placed Room Templates.&lt;/p&gt;

&lt;p&gt;I might not look like a major difference (if you just glance at the thumbnails) but there is major progress being made towards playable levels, which will allow for much easier testing of combat mechanics, unit balance and various other Game Design Aspects.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/_AJ1l_DNxSI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>roguelike</category>
      <category>livestream</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Arcology Roguelike Lifestream E4</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Sun, 17 Nov 2019 14:35:42 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e4-3f40</link>
      <guid>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e4-3f40</guid>
      <description>&lt;h1&gt;
  
  
  Episode 4: Procedural General
&lt;/h1&gt;

&lt;p&gt;I start out the video by fixing my error from the previous video and getting random room templates to display.&lt;/p&gt;

&lt;p&gt;I continue the video by creating a number of additional Room Templates. I then also use a basic &lt;em&gt;Context Free Grammar&lt;/em&gt; to create an algorithm for creating logic Levels.&lt;/p&gt;

&lt;p&gt;The video ends with me generating a random level, that while not &lt;em&gt;perfect&lt;/em&gt; is a pretty decent start for the Game.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/gccDhjEGXeI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>livestream</category>
      <category>gamedev</category>
      <category>unity3d</category>
      <category>roguelike</category>
    </item>
    <item>
      <title>Arcology Roguelike Lifestream E3</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Sun, 17 Nov 2019 14:28:13 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e3-21b0</link>
      <guid>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e3-21b0</guid>
      <description>&lt;h1&gt;
  
  
  Episode 3: Procedural Generation
&lt;/h1&gt;

&lt;p&gt;In this video I continue with the Procedural Generation algorithm, attempting to generate an entire level made up of randomly placed room templates. The video ends with me getting a little stuck on getting the full Procedural Generation to work! (Don't worry the next episode shows the fix...)&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/hiEcoIUmEp4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>livestream</category>
      <category>roguelike</category>
      <category>unity3d</category>
    </item>
    <item>
      <title>Arcology Roguelike Lifestream E2</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Sun, 17 Nov 2019 14:22:40 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e2-279b</link>
      <guid>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e2-279b</guid>
      <description>&lt;h1&gt;
  
  
  Episode 2: Procedural General
&lt;/h1&gt;

&lt;p&gt;In this episode I look at creating the first part of the Procedural Generation for the Levels of the game. This part includes reading in &lt;em&gt;templates&lt;/em&gt; from files for the various Rooms that will be generated in the game.&lt;/p&gt;

&lt;p&gt;I end the video of by displaying a full room template using prefabs created from basic Unity 3D shapes.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/00wKbuhFMXg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>roguelike</category>
      <category>livestream</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Arcology Roguelike Lifestream E1</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Sat, 16 Nov 2019 21:23:29 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e1-26jp</link>
      <guid>https://dev.to/pieterjoubert/arcology-roguelike-lifestream-e1-26jp</guid>
      <description>&lt;h1&gt;
  
  
  Episode 1: Planning
&lt;/h1&gt;

&lt;p&gt;Here I introduce the game I want to build, the tools I want to use and the process I'm going to follow as well as doing some basic planning. &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bdwgC2cEZf0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>unity3d</category>
      <category>roguelike</category>
      <category>livestream</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Learn to Program 04: Anatomy of a Program</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Fri, 04 Oct 2019 08:46:23 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/learn-to-program-04-anatomy-of-a-program-2jf6</link>
      <guid>https://dev.to/pieterjoubert/learn-to-program-04-anatomy-of-a-program-2jf6</guid>
      <description>&lt;p&gt;&lt;a href="https://rusthelloworld.pieterjoubert.repl.run"&gt;Rust Hello World Example&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Replace the text inside the double quotes where my name &lt;em&gt;Pieter&lt;/em&gt; was with your name. Assuming your name is &lt;em&gt;Name&lt;/em&gt; the code will look as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello Name!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






&lt;p&gt;So, what is actually happening in the small program we wrote above?&lt;/p&gt;

&lt;p&gt;We've written some &lt;em&gt;instructions&lt;/em&gt; (commonly known as &lt;em&gt;code&lt;/em&gt;) that tells the computer to perform certain actions. There's an interesting idea hidden in the use of the word &lt;em&gt;code&lt;/em&gt; to describe the instructions that we provide to the computer.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;code&lt;/em&gt;, more commonly, is some kind of encrypted message that needs to be decrypted or deciphered. This rough definition gives us the following useful insights into the properties any programming code we write will have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code is not in plain language (known as a &lt;em&gt;Natural Language&lt;/em&gt;). Instead it's written in a different language, often referred to as a &lt;em&gt;Formal Language&lt;/em&gt;. &lt;em&gt;Formal&lt;/em&gt; also refers to the fact that there are specific rules that this language needs to follow.&lt;/li&gt;
&lt;li&gt;The code needs to be &lt;em&gt;decrypted&lt;/em&gt; by something or someone. Depending on the language you are using this will either be an &lt;em&gt;interpreter&lt;/em&gt; or a &lt;em&gt;compiler&lt;/em&gt;, a piece of software that &lt;em&gt;translates&lt;/em&gt; your code into something the computer can understand.&lt;/li&gt;
&lt;li&gt;There is an intended &lt;em&gt;message&lt;/em&gt; or &lt;em&gt;purpose&lt;/em&gt; to our code. This is what we, as the programmer, are trying to achieve with our code. It is important to understand what this &lt;em&gt;purpose&lt;/em&gt; is, so that we can determine whether the computer is executing our code correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why are these properties of code important? Well they guide us in terms of what we need to do to write working and successful code. Each of these properties loosely fits into a basic coding &lt;em&gt;principle&lt;/em&gt; or &lt;em&gt;practise&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We need to understand the &lt;em&gt;rules&lt;/em&gt; of the language we are using. (We don't need to memorise them fully but we need to understand them, and understand them well enough to research any &lt;em&gt;new&lt;/em&gt; rules we come across).&lt;/li&gt;
&lt;li&gt;We need to setup our &lt;em&gt;interpreter&lt;/em&gt; or &lt;em&gt;compiler&lt;/em&gt; (and the associated tools) in such a way that maximises our efficiency in writing code.&lt;/li&gt;
&lt;li&gt;We need to follow some kind of structured approach to &lt;em&gt;determining&lt;/em&gt;, &lt;em&gt;documenting&lt;/em&gt; and &lt;em&gt;sharing&lt;/em&gt; the purpose of our code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, for Task 2: Let's look at what happens when we do &lt;strong&gt;not&lt;/strong&gt; follow the rules of the language we are using.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new &lt;em&gt;C#&lt;/em&gt; repl.it&lt;/li&gt;
&lt;li&gt;Copy over the code below
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="n"&gt;using&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;MainClass&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="n"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="nf"&gt;.WriteLine&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Carefully look at the results of running this code.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Link to &lt;a href="https://dev.to/pieterjoubert/learning-to-program-02-the-what-4n2g"&gt;Main Content Post&lt;/a&gt;. If you are confused about this post start here.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Learn to Program 03: The How</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Thu, 03 Oct 2019 11:55:42 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/learn-to-program-03-the-how-3ad8</link>
      <guid>https://dev.to/pieterjoubert/learn-to-program-03-the-how-3ad8</guid>
      <description>&lt;p&gt;Finally we get to the &lt;em&gt;how&lt;/em&gt;. &lt;em&gt;How&lt;/em&gt; exactly will this series be structured to help you (the reader) learn programming? &lt;em&gt;How&lt;/em&gt; will you be able to measure your progress? &lt;em&gt;How&lt;/em&gt; exactly will this work?&lt;/p&gt;

&lt;p&gt;The first answer concerns structure. The series will be structured as short posts (typically less than 5min to read) that cover a &lt;em&gt;single&lt;/em&gt; topic, concept etc. Attached to these posts will be small programs, where appropriate, where you can see and test the concept in question. &lt;/p&gt;

&lt;p&gt;My advice would be to use a site like &lt;a href="https://repl.it/"&gt;Repl.it&lt;/a&gt; in which to run and practise the programs provided. The examples will not be written in one language only. Different languages have different strengths and will be used in this way to showcase various aspects of programming. This is not a series in which you will learn &lt;em&gt;python&lt;/em&gt;, or &lt;em&gt;rust&lt;/em&gt; or any specific language.&lt;/p&gt;

&lt;p&gt;(As an aside a &lt;em&gt;proper&lt;/em&gt; Computer Science professor like &lt;a href="https://en.wikipedia.org/wiki/Donald_Knuth"&gt;Donald Knuth&lt;/a&gt; writes a whole new language just to teach programming. I am not anywhere close to that level so my readers will need to be content with existing language!).&lt;/p&gt;

&lt;p&gt;The idea is for bite sized pieces of content that you can read while standing in line at your local coffee joint. In the same way programmers will often tell you to keep your &lt;em&gt;methods&lt;/em&gt; to a size that fits on one computer screen, so too will I try and fit each post unto one screen (one screen while writing it, your reading experience might differ).&lt;/p&gt;

&lt;p&gt;Finally, the entire process will follow (loosely), the &lt;em&gt;Socratic&lt;/em&gt; method. In other words each post will tend to end with a question or task, and the following post will start with a possible answer to that question or task.&lt;/p&gt;

&lt;p&gt;This nicely leads to Task 1: Update the &lt;em&gt;rust&lt;/em&gt; example below to display your own name instead of mine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello Pieter!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






&lt;p&gt;Link to &lt;a href="https://dev.to/pieterjoubert/learning-to-program-02-the-what-4n2g"&gt;Main Content Post&lt;/a&gt;. If you are confused about this post start here.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Learning to Program 02: The What</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Thu, 03 Oct 2019 11:26:47 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/learning-to-program-02-the-what-4n2g</link>
      <guid>https://dev.to/pieterjoubert/learning-to-program-02-the-what-4n2g</guid>
      <description>&lt;p&gt;We've looked at a basic background and prologue to this series, just to contextualise the purpose of this series. We've also looked a little at the &lt;em&gt;why&lt;/em&gt;, and hopefully you have an idea of why you want to learn to program. This is not something to be taken lightly as it will help guide you on your journey. The &lt;em&gt;why&lt;/em&gt; is your ultimate goal that you are aiming for.&lt;/p&gt;

&lt;p&gt;But let's take a break from these vague generalities and get into the &lt;em&gt;what&lt;/em&gt;. &lt;em&gt;What&lt;/em&gt; exactly will this series cover?&lt;/p&gt;

&lt;p&gt;My intention is not for this series to be a linear progression, from your first program, to intermediate topics, to advanced topics. There are many excellent resources (tutorials, video series, bootcamps, books, degrees etc.) that follow this approach. My intention is for this series to be more of a undirected journey, that slowly builds up layer upon layer, brick upon brick, until we have constructed an overview and had a discussion about the most important topics, concepts and approaches in programming.&lt;/p&gt;

&lt;p&gt;Even though this will be a somewhat meandering journey there is still a need for some kind of golden thread or focus, and some way to follow that thread. That is the purpose of this post, to be a continually updated repository of all the other posts in the series (with some sneaky &lt;em&gt;recursion&lt;/em&gt; just for fun). I will update this post whenever I add a new post to the series so make sure you keep checking back here for updates:&lt;/p&gt;

&lt;h1&gt;
  
  
  Contents
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/pieterjoubert/learning-to-program-prologue-12d0"&gt;Learning to Program 00: Prologue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pieterjoubert/learning-to-program-hello-programmer-46if"&gt;Learning to Program 01: Hello Programmer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pieterjoubert/learning-to-program-02-the-what-4n2g"&gt;Learning to Program 02: The What&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pieterjoubert/learn-to-program-03-the-how-3ad8"&gt;Learning to Program 03: The How&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pieterjoubert/learn-to-program-04-anatomy-of-a-program-2jf6"&gt;Learning to Program 04: Anatomy of a Program&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Learning to Program 00: Prologue</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Thu, 03 Oct 2019 08:51:40 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/learning-to-program-prologue-12d0</link>
      <guid>https://dev.to/pieterjoubert/learning-to-program-prologue-12d0</guid>
      <description>&lt;p&gt;Just like any good novel, where the prologue hints at a massive world filled with mystery, interesting characters and looming threats, I wanted to start this series with some background and some hint of where it's going to go.&lt;/p&gt;

&lt;p&gt;I teach programming for a living. And I've been teaching programming in some capacity (either professionally or incidentally) for almost 20 years know. It's my one great passion in life, helping &lt;em&gt;anyone&lt;/em&gt; understand how to program. I've used tools and languages such as &lt;em&gt;Visual Basic&lt;/em&gt;, &lt;em&gt;python&lt;/em&gt;, &lt;em&gt;Scratch&lt;/em&gt;, &lt;em&gt;C#&lt;/em&gt;, &lt;em&gt;Unity&lt;/em&gt;, &lt;em&gt;HTML + CSS + JavaScript&lt;/em&gt; on top of a full &lt;em&gt;PHP&lt;/em&gt; and &lt;em&gt;MySQL&lt;/em&gt; stack and even &lt;em&gt;Lego Mindstorms&lt;/em&gt;, to teach a range of people from 10 year old school children, to working adults how to program.&lt;/p&gt;

&lt;p&gt;The purpose of that previous paragraph was not to brag about all the languages I know (and the fetishization of languages is a topic I'll probably cover later on), but to bring up an important point: learning programming is &lt;em&gt;not&lt;/em&gt; learning a language.&lt;/p&gt;

&lt;p&gt;You will learn a language along the way, but that's almost incidental. I say &lt;em&gt;almost&lt;/em&gt; as the choice of language will have some impact on how and what you learn.&lt;/p&gt;

&lt;p&gt;The background has been set, at least one character has been introduced (whether he is interesting or not is up to the reader to decide), all that's left is the looming threat.&lt;/p&gt;

&lt;p&gt;In the prologue to Game of Thrones, the reader is given the briefest hint of the &lt;em&gt;White Walkers&lt;/em&gt; and the possible threat they might pose to our protagonists. In our journey what then is the looming threat, the hinted at horror that well be revealed piece by piece?&lt;/p&gt;

&lt;p&gt;It's simply &lt;em&gt;time&lt;/em&gt;. Programming is not something you learn over a weekend, or over a 6 week bootcamp, or even really over a 4 year degree. It's a continuous process, that, everyday in some small way you need to push forward on. Programming is one field where it is literally true that if you aren't moving forward you are moving back ward.&lt;/p&gt;

&lt;p&gt;Let's start with that first small step right now: &lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/pieterjoubert" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F241681%2Fcab5c67c-fa83-4cba-b8af-632f2a5e3ebb.jpeg" alt="pieterjoubert"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/pieterjoubert/learning-to-program-hello-programmer-46if" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Learning to Program 01: Hello Programmer&lt;/h2&gt;
      &lt;h3&gt;pieterjoubert ・ Oct 3 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#learning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Learning to Program 01: Hello Programmer</title>
      <dc:creator>pieterjoubert</dc:creator>
      <pubDate>Thu, 03 Oct 2019 08:50:11 +0000</pubDate>
      <link>https://dev.to/pieterjoubert/learning-to-program-hello-programmer-46if</link>
      <guid>https://dev.to/pieterjoubert/learning-to-program-hello-programmer-46if</guid>
      <description>&lt;p&gt;Most programming textbooks, tutorials etc. start out with the classic, the sometimes maligned and the universally known &lt;em&gt;Hello World&lt;/em&gt; program. Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Those examples are &lt;em&gt;python&lt;/em&gt;, &lt;em&gt;C#&lt;/em&gt; and &lt;em&gt;rust&lt;/em&gt; incidentally. Three of the languages I enjoy working with and am most comfortable with.&lt;/p&gt;

&lt;p&gt;The idea behind this small little program is quite simple I think. You, as the budding novice programming, are standing up and saying &lt;em&gt;Hello&lt;/em&gt; to the big scary world of programming.&lt;/p&gt;

&lt;p&gt;But the title of this post is &lt;em&gt;Hello Programmer&lt;/em&gt;, and I'd like to focus more on &lt;em&gt;you&lt;/em&gt; as the programmer, rather than the &lt;em&gt;World&lt;/em&gt; into which you will be programming (more on that later!).&lt;/p&gt;

&lt;p&gt;So, what &lt;em&gt;is&lt;/em&gt; a programmer? There are many definitions and debates about this but here is mine that I'm going to be working off for the rest of this series:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A programmer is some who is &lt;em&gt;unapologetically stubborn&lt;/em&gt; about solving problems, always &lt;em&gt;willing to learn&lt;/em&gt; and has an &lt;em&gt;insatiable passion&lt;/em&gt; to build things.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That doesn't described you? Don't worry, these traits can be learned, and most programmers don't start out this way. You slowly build up to &lt;em&gt;being&lt;/em&gt; this kind of person. A programmer is something you &lt;em&gt;are&lt;/em&gt; not something you &lt;em&gt;do&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Maybe all you are interested in is earning a good salary. Or perhaps you want to expand your skillset to keep up with changes in your, non-programming, industry. Or perhaps you just want to build a Mod for your favourite game and you have no idea where to start.&lt;/p&gt;

&lt;p&gt;That's all fine, for a start. The &lt;em&gt;why&lt;/em&gt; is less important for the beginner programmer, but it does become important to keep your interest alive.&lt;/p&gt;

&lt;p&gt;So instead of saying &lt;em&gt;Hello World&lt;/em&gt; first, take a moment to say (insert your own name):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello Pieter"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;and ask yourself &lt;em&gt;why&lt;/em&gt; are you doing this.&lt;/p&gt;




&lt;p&gt;Link to &lt;a href="https://dev.to/pieterjoubert/learning-to-program-02-the-what-4n2g"&gt;Main Content Post&lt;/a&gt;. If you are confused about this post start here.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
