<?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: Sheldon Nunes</title>
    <description>The latest articles on DEV Community by Sheldon Nunes (@sheldonnunes).</description>
    <link>https://dev.to/sheldonnunes</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%2F105243%2Fcadf7b81-5ddf-4384-b430-51107229d091.jpeg</url>
      <title>DEV Community: Sheldon Nunes</title>
      <link>https://dev.to/sheldonnunes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sheldonnunes"/>
    <language>en</language>
    <item>
      <title>Should employers provide time for learning/training?</title>
      <dc:creator>Sheldon Nunes</dc:creator>
      <pubDate>Thu, 24 Jan 2019 02:04:17 +0000</pubDate>
      <link>https://dev.to/sheldonnunes/should-employers-provide-time-for-learningtraining-2j6l</link>
      <guid>https://dev.to/sheldonnunes/should-employers-provide-time-for-learningtraining-2j6l</guid>
      <description>&lt;p&gt;An excerpt from The Clean Coder by Robert C. Martin reads:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your career is your responsibility. It is not your employer's responsibility to make sure you are marketable. It is not your employer's responsibility to train you, or send you to conferences, or buy you books ... It is also not your employer's responsibility to give you the time you need to learn. Some employers may provide that time ... they are doing you a favor, and you should be appropriately appreciative.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What do you think? Should employers provide learning time or is that something that should be done in your own time?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>Exploring the Abstract Syntax Tree</title>
      <dc:creator>Sheldon Nunes</dc:creator>
      <pubDate>Tue, 06 Nov 2018 07:20:27 +0000</pubDate>
      <link>https://dev.to/sheldonnunes/exploring-the-abstract-syntax-tree-2ce8</link>
      <guid>https://dev.to/sheldonnunes/exploring-the-abstract-syntax-tree-2ce8</guid>
      <description>&lt;h1&gt;
  
  
  Exploring the Abstract Syntax Tree
&lt;/h1&gt;

&lt;p&gt;Hacktoberfest had me get out of my comfort zone and contribute to different codebases. One of them, a &lt;a href="https://github.com/wemake-services/wemake-python-styleguide" rel="noopener noreferrer"&gt;python linter&lt;/a&gt; gave me exposure using the python Abstract Syntax Tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Abstract Syntax Tree?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;An abstract syntax tree (AST) is a way of representing the syntax of a programming language as a hierarchical tree-like structure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In essence we can take a line of code such as this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pressure&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and convert it into a tree structure:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7al1mdz0c8vi3fe4xi6v.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7al1mdz0c8vi3fe4xi6v.jpeg" alt="Tree visual representation" width="386" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wikipedia has a slightly different definition:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An AST is usually the result of the syntax analysis phase of a compiler. It often serves as an intermediate representation of the program through several stages that the compiler requires, and has a strong impact on the final output of the compiler.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the AST is one of the stages towards creating compiled code. Definitely feels like we are getting closer to what the machine understands!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftid3rkpwmdwltih9ed2u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftid3rkpwmdwltih9ed2u.gif" alt="Inside the Matrix" width="500" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What this enables us to do is to step through the structure of a program and report any issues back (similar to intellisense/linters) or even change the code that is written.&lt;/p&gt;

&lt;p&gt;Python provides a library for parsing and navigating an Abstract Syntax Tree and is aptly called ast.&lt;/p&gt;

&lt;p&gt;Using the previous example we can create an ast by using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ast&lt;/span&gt;
&lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;pressure = 3&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;tree&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simply printing the tree won’t display the structure and nodes that we want. Instead we can create a node visitor that will traverse the tree and give us details on each of the nodes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Visitor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NodeVisitor&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generic_visit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;ast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NodeVisitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generic_visit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if we create an instance of this visitor class, when we call visitor.visit(code) we will get the following output:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Module&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Assign&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Name&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Store&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Num&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For a linter this is quite useful to see if any of these node orderings are invalid. A good example of this is when you have if &lt;code&gt;True:…&lt;/code&gt; a redundant if statement since it always evaluates to the same result.&lt;/p&gt;

&lt;p&gt;When we run visit on an if True:… we get the following:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Module&lt;/em&gt;&lt;br&gt;
&lt;em&gt;If&lt;/em&gt;&lt;br&gt;
&lt;em&gt;NameConstant&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Expr&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Ellipsis&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this case the &lt;code&gt;True&lt;/code&gt; value is the &lt;code&gt;NameConstant&lt;/code&gt;. The ast visitor allows us to create specific methods that get invoked when a particular &lt;code&gt;ClassName&lt;/code&gt; is visited. This is achieved using the following syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;visit_&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;className&lt;/span&gt;&lt;span class="p"&gt;}(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case we are wanting to visit any If node and check it’s test condition to ensure that it isn’t just a &lt;code&gt;NameConstant&lt;/code&gt; (True, False or None). This is where the &lt;a href="https://docs.python.org/3.7/library/ast.html" rel="noopener noreferrer"&gt;ast documentation&lt;/a&gt; is quite useful as you can see what properties are available for each node type. We can access the node.test condition like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;statement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;If statement always evaluates to {} on line {} &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;visit_If&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NameConstant&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
      &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;statement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lineno&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
   &lt;span class="n"&gt;ast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NodeVisitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generic_visit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running this on our previous example gives us a nice detailed message:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;If statement always evaluates to True on line 1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You are not limited to only ‘visiting’ a node in the AST. Using another one of pythons classes you can use &lt;code&gt;ast.NodeTransformer&lt;/code&gt; to modify them too! This leads to really cool possibilities like inserting temporary lines of code to test code coverage of your program or even transpile to other languages&lt;/p&gt;

&lt;p&gt;I recommend checking out the following resources if you are looking to make use of ast in python:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://greentreesnakes.readthedocs.io/en/latest/index.html" rel="noopener noreferrer"&gt;Green Tree Snakes - the missing Python AST docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;^ This one even includes a live web AST visualizer which can help see the code structure quickly!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.python.org/3.7/library/ast.html" rel="noopener noreferrer"&gt;Official AST Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A copy of the code in this post can be found &lt;a href="https://github.com/SheldonNunes/AST-Example" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next thing I would like to investigate is using the NodeTransformer to potentially transpile from python over to another language like Javascript.&lt;/p&gt;

&lt;p&gt;Thanks for reading! &lt;br&gt;
Share your experience/use cases for AST in the comments below!&lt;/p&gt;

</description>
      <category>python</category>
      <category>ast</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>How board games improved my ability to explain dev concepts</title>
      <dc:creator>Sheldon Nunes</dc:creator>
      <pubDate>Fri, 26 Oct 2018 02:41:36 +0000</pubDate>
      <link>https://dev.to/sheldonnunes/how-board-games-improved-my-explanation-ability-16ab</link>
      <guid>https://dev.to/sheldonnunes/how-board-games-improved-my-explanation-ability-16ab</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sSSida4M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/z8y48k75mr1g7jelpjmo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sSSida4M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/z8y48k75mr1g7jelpjmo.jpg" alt="Settlers of Catan"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You glance at your watch anxiously; looking out the front door. “Come on guys” you mutter to yourself. The sausage rolls you took out the oven thirty minutes ago no longer hot. “Sorry we’re late” your friends say when they arrive. “No worries” you respond smiling, excited to catch-up with everyone. After a few hours of finding out the latest news and gossip you look at your watch again. ‘Time for the main event?” you propose. Mixed expressions form around the table. “Are you sure we will have enough time? I am pretty tired” someone says. “It will be fine, I have been looking forward to this all week!” you say dismissively.&lt;/p&gt;

&lt;p&gt;Reaching under the table you slowly reveal the latest and greatest board game. You lift off the lid of the box as if opening a hidden treasure. While friends distribute the pieces amongst each other you reach for the sacred scriptures (the rule book). You call everyone to pay attention as you start to explain how to play the game. Everyone is attentive at first but as time goes on you start noticing some are drifting off into the boredom dimension.&lt;/p&gt;

&lt;p&gt;“How about we start playing as it will probably make this easier to understand” you say in an effort to recover the night. Everything seems alright at first but then the questions start. “What is this?, How can I build that?”. You feel yourself explaining the same concepts again and again all the while friends look more perplexed. The group decides to finish the game early and heads home leaving you with cold sausage rolls and an incomplete board game.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/ycdVnD1sAcWkw/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/ycdVnD1sAcWkw/giphy.gif" alt="Sad"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Although board games are (usually) fun there is quite a large upfront cost we must pay to experience it. The dreaded setup and rules explanation requires everyone's attention to understand how the game works in order to play. This overhead is enough to put people off from deciding to play one in the first place. Video games differ in this regard as they are able to manage a lot of the complexity and expose only the interactive parts of the game.&lt;/p&gt;

&lt;p&gt;Being able to effectively explain the rules of a game can make or break the experience. Here are some of the techniques I have found that work out really well and have changed how I explain any concept in my day to day life:&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with theme or end goal
&lt;/h2&gt;

&lt;p&gt;Games allow us to try and solve problems in an artificially constructed environment. Being able to sell the idea of what people are trying to solve is key to engaging with them. Let’s take the game Splendor for example:&lt;/p&gt;

&lt;p&gt;Splendor board game&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wGywPdu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6vtik5q5gagqi6zf4ff0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wGywPdu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6vtik5q5gagqi6zf4ff0.jpg" alt="Splendor board game"&gt;&lt;/a&gt;&lt;br&gt;
Compare the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We are each trying to collect the most victory points by collecting the most valuable cards&lt;/p&gt;

&lt;p&gt;We are each competing gem merchants who are using our small supply of gems to build the most profitable empire.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Although these are both true descriptions of the game Splendor, the second creates an evocative theme that is immediately engaging. This leads players to ask “How do I become the most profitable empire?” which allows you to easily segue into the winning conditions. This provides the mind with a target/goal that is used to understand the relevance of the other rules or actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give players the board game pieces
&lt;/h2&gt;

&lt;p&gt;Giving players the opportunity to interact with the game pieces is an underestimated technique for engagement. It is easy to interpret someone playing with pieces as being distracted or not focused. However allowing players to interact allows them to form a connection with the game and pique their curiosity as to how a particular component is used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Players asking questions
&lt;/h2&gt;

&lt;p&gt;If you are like me you really engage well with content when being able to ask questions. My mind can get so caught up in wanting to know the answer that I don’t absorb the rest of the content.&lt;/p&gt;

&lt;p&gt;When someone asks a question during your explanation you should always acknowledge it. This may mean choosing to answer it immediately, or alternatively that you will be answering it shortly in the rest of your explanation. Choosing which one of these options is up to you but be aware that answering a question too soon (before other required terminologies are understood) may confuse not only that person but others listening.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applying this to the dev space
&lt;/h2&gt;

&lt;p&gt;I have found these concepts apply quite nicely to software development. We typically create a nicely layered architecture that is ideal for the "explain backwards technique".&lt;/p&gt;

&lt;p&gt;Setting a theme is relatively easy when aligning your work to your users. UX caught on to this idea a long time ago and create persona characters when creating designs to help establish a personality and motive for the thing they are helping create. For software development this often means we use User Stories or feature requests to help explain the “theme” of what we are trying to solve.&lt;/p&gt;

&lt;p&gt;As an example if we were teaching an already implemented feature based on the following User Story:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a florist I want to update an order to include or remove certain flowers&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By starting here we are able to make a connection to this particular theme/domain and better understand the overall goal of the story. We could very easily have just called the florist a user and that would be fine, but provides a good frame when solving this problem. At this point it would be good to leverage the finished code and run through an example update order. However if this was not implemented yet you could use other techniques such as paper prototyping to describe the workflow for the user.&lt;/p&gt;

&lt;p&gt;From this point more technical specifications can be created. This might be to update the orders record in the database. If I was explaining how this code had been implemented I would start at the database layer, move up through each layer until reaching the entry point of the application. This would allow the person learning to see the process gone through to reach the database form.&lt;/p&gt;




&lt;p&gt;Explaining is an improvable skill. I hope that some of these techniques I have described help you. I have found board games to be a pretty awesome medium to do that and highly recommend giving it a try!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/5KX9jiNXkb3xK/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/5KX9jiNXkb3xK/giphy.gif" alt="Have Fun!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  And as always curious to hear what you think? Have you had any hobbies that have influenced the way you communicate in dev?
&lt;/h3&gt;

</description>
      <category>communication</category>
      <category>boardgames</category>
      <category>learning</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Mini Quiz: Javascript Scoping</title>
      <dc:creator>Sheldon Nunes</dc:creator>
      <pubDate>Mon, 08 Oct 2018 22:13:35 +0000</pubDate>
      <link>https://dev.to/sheldonnunes/mini-quiz-javascript-scoping-5egp</link>
      <guid>https://dev.to/sheldonnunes/mini-quiz-javascript-scoping-5egp</guid>
      <description>&lt;p&gt;A quick quiz question on javascript scoping. Try and figure this out before executing in browser&lt;/p&gt;

&lt;p&gt;If you were to create this object:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dave&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;calculateBMI&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;innerFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nx"&gt;innerFunction&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;p&gt;When running &lt;code&gt;person.calculateBMI()&lt;/code&gt; what object will &lt;code&gt;this&lt;/code&gt; be mapped to when logged by the innerFunction?&lt;/p&gt;

</description>
      <category>challenge</category>
      <category>javascript</category>
      <category>scoping</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Hacktoberfest 2018 - Anyone looking for open source contributors?</title>
      <dc:creator>Sheldon Nunes</dc:creator>
      <pubDate>Sun, 30 Sep 2018 21:31:45 +0000</pubDate>
      <link>https://dev.to/sheldonnunes/hacktoberfest-2018---anyone-looking-for-open-source-contributors-6bp</link>
      <guid>https://dev.to/sheldonnunes/hacktoberfest-2018---anyone-looking-for-open-source-contributors-6bp</guid>
      <description>&lt;p&gt;I have usually only done the odd hackathon here and there and personal open source projects. This years hacktoberfest seems like a nice opportunity to start contributing back!&lt;/p&gt;

&lt;p&gt;Does anyone have any projects they are looking for open source contributors?&lt;/p&gt;

&lt;p&gt;Drop a comment below!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>discuss</category>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
