tag:blogger.com,1999:blog-46555066564173483572024-02-19T11:27:31.806-05:00Crystal TennCrystal Tenn - Software EngineerCrystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comBlogger115125tag:blogger.com,1999:blog-4655506656417348357.post-82750378849231508412021-08-28T19:20:00.004-04:002021-08-28T19:20:57.825-04:00Learn C# from Scratch Guide (Zero to Dev with linked tutorials and comprehensive code projects!)I wanted to create a way for anyone to pickup C#, .NET development, and Visual Studio on their own (or with help of a mentor) for free and see below for the GitHub repository with full projects with solutions, homework, and pre-requisites to get started on your own with videos you can follow along. There are also bonus content linked to learn Agile, Scrum, Git, and more! See below:
<br /><br />
<a href="https://github.com/KetchupOnMyKetchup/LearnCSharpBase" target="_blank">https://github.com/KetchupOnMyKetchup/LearnCSharpBase</a>Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-49002818659441736262020-04-25T20:33:00.007-04:002020-06-09T16:47:36.457-04:00Binary Trees Traversal Recursive vs. Iterative<br />
<br />
<img alt="Binary tree - Computer Science Wiki" height="425" src="https://computersciencewiki.org/images/7/7c/Binary_tree_traversal.png" width="640" /><br />
<i>Photo reference: <a href="https://computersciencewiki.org/index.php/Binary_tree">https://computersciencewiki.org/index.php/Binary_tree</a></i><br />
<br />
This neat little trick above saved me a lot of pain and is much quicker to get the traversals. Just think preorder = left, inorder = center, postorder = right. Then weave the string from the top left, to the bottom, to the center, and around until you get to the top right. Wherever the string would 'hook' into a line, write down that number as the next one in that type of traversal.<br />
<br />
<a href="https://leetcode.com/problems/binary-tree-inorder-traversal/" target="_blank">Given a binary tree, return the inorder traversal of its nodes' values.</a><br />
<br />
Every recursive problem can be done iteratively using a stack. Recursive calls are simply utilizing the call stack that is an inherent part of the programming language. Don't forget to take into account the space the stack/recursive calls take up when doing the O notation for space!
<br /><br />
Recursive solution:
<pre class="prettyprint">
public IList<int> InorderTraversal(TreeNode root)
{
List<int> result = new List<int>();
Helper(root, result);
return result;
}
public void Helper(TreeNode root, List<int> result)
{
if (root == null) return;
Helper(root.left, result);
result.Add(root.val);
Helper(root.right, result);
}
</pre>
Time: O(n)
<br />Space: O(log n) on average. O(n) worst case if tree is one giant linked list going in one direction.
<br /><br />
Iterative solution using a stack:
<pre class="prettyprint">
public IList<int> InorderTraversal(TreeNode root)
{
List<int> result = new List<int>();
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode curr = root;
while(curr != null || stack.Count != 0)
{
while(curr != null)
{
stack.Push(curr);
curr = curr.left;
}
curr = stack.Pop();
result.Add(curr.val);
curr = curr.right;
}
return result;
}
</pre>
Time: O(n)
<br />Space: O(n)Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-84961328497150498282020-03-12T23:38:00.002-04:002020-04-07T14:15:08.332-04:00Learn C# from Scratch Comprehensive Topic List / How much do I need to know to be a Junior C# Web Dev?<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDuqRRXN0QabnIXkr9ds06Ai5duyhHj77kUNC8BWLSSnX0ghXeRfJkFgaMn5nm7b1wQXypZGMdvMTW12VgPltNzqMu0SDNK3E_S4CoJySSCjzeZe2FW_AUSrcqFbVMFO42uE0GECXHCqUU/s1600/tp9QsNeN.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="853" data-original-width="853" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDuqRRXN0QabnIXkr9ds06Ai5duyhHj77kUNC8BWLSSnX0ghXeRfJkFgaMn5nm7b1wQXypZGMdvMTW12VgPltNzqMu0SDNK3E_S4CoJySSCjzeZe2FW_AUSrcqFbVMFO42uE0GECXHCqUU/s320/tp9QsNeN.jpeg" width="320" /></a></div>
<br />
I created a syllabus with a list of what I think a great C# .NET web Junior Developer should know and in what order to study. I wrote this based on <b>someone with no computer science knowledge, background, training, or schooling </b>and how to get them to go from zero knowledge to a working entry level developer. The list is written in a<b> "checklist format" so you can print this if you like and check-off how much progress you have made and how much is left to go!</b><br />
<br />
I wrote this checklist to help out my mentee with being able to see the "light at the end of the tunnel" and know the scope of what it takes to be a developer. <b>It can be very difficult to know where to start, how much progress you've made, and the logical next step and this list should assist with that as well as letting you know "how much is enough". </b><br />
<br />
This list is <b>mainly focused on C# and hits on what topics you should learn for SQL, HTML, CSS, and JavaScript but the details of those are less fleshed out</b> and you should seek out courses online (I listed at those areas to do so).<br />
<br />
<b>I believe that if you can learn 60-70% of this list well you could land a C# web developer job. </b>I made the list more comprehensive because leaving off a random 30-40% doesn't make sense to me and some topics are more/less important to certain types of jobs depending on their technology stack.<br />
<br />
<b>How I made the syllabus: </b>I broke down C# into Basics Part 1 and Part 2. Part 1 is basic syntax and everything before classes. Part 2 is utilizing classes, object oriented programming, and more intermediate C#. Afterwards I think its good to learn APIs and back-end projects. Logically next is SQL, databases, and ORMs. Then front-end technologies.<br />
<br />
In the future, I will have a GitHub codebase with projects that go along with this list and in the order of the list, but that is currently in progress and about halfway done. If you would like to follow along, my code is posted here: <a href="https://github.com/catenn/LearnCSharp" target="_blank">https://github.com/catenn/LearnCSharp</a><br />
<br />
<br />
<h3>
C# Basics Part 1</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
Git skills<br />
<ul>
<li>Cloning down a new repository using Git Bash</li>
<li>Differences between Git Pull, Git Fetch, and Git Push and
being able to run these commands in Git Bash</li>
</ul>
Visual Studio Skills<br />
<ul>
<li>Using the Solution Explorer</li>
<li>Creating a brand new solution/project</li>
<li>Opening an existing solution/project</li>
<li>Using Git in Team Explorer</li>
<li>Understanding what the Git Sync button does</li>
<li>Handling merge conflicts</li>
<li>Creating a new class file easily</li>
<li>Adding new projects to an existing solution</li>
<li>Debugging code</li>
<li>Be comfortable using Intellisense</li>
<li>Be comfortable reading Intellisense notes and method
signatures</li>
</ul>
Visual Studio Basic shortcuts:<br />
<ul>
<li>Ctrl + X to delete a line</li>
<li>F5 to run a project</li>
<li>F10 to step over to the next line</li>
<li>F11 to step into a method</li>
<li>Highlighting a selection of code and dragging it to another
location</li>
<li>Shift + Alt + F to fix formatting</li>
<li>Ctrl + R + R to rename a variable</li>
<li>Alt-selecting the same thing in multiple rows</li>
<li>Ctrl + Z to undo (and you can keep hitting this to keep undoing). Ctrl + Y to redo something you undid (as long as you didn't type more)</li>
</ul>
C# Types, variables + initialization<br />
<ul>
<li>Understand numbers: int, decimal, double, long, ulong,
short, uint, byte, etc..</li>
<li>Understand booleans, boolean logic, using operators like
'&&' and '||'</li>
<li>Understand char</li>
<li>Understand strings, string interpolation, and string
concatenation</li>
<li>Understand char vs string and single vs double quotes</li>
<li>Understand what the term "immutable" means and how
that relates to a string type</li>
<li>Learn what a StringBuilder is</li>
<li>Learn when to use string vs. StringBuilder</li>
<li>Understand what the keyword "new" does and when to
use it</li>
<li>Define the difference between a reference type and value
type</li>
<li>Understand what 'var' is</li>
<li>Understand variable initialization</li>
<li>Understand the scope of a variable based on whether the
variable is in a class, method, loop, etc (not talking about access modifiers yet, just understand if a variable is in a class its available anywhere in the class, if its in a method you can use it anywhere in that method after its declared, if its declared in a loop you can only use it there, you may want to initialize something outside of a loop to use in a loop + use it after..).</li>
<li>Understand when to make local variables and when they are
redundant. Understand that you can assign a local variable with the return value of a method. Example var a = TestMethod();</li>
</ul>
<o:p> C# </o:p>Methods and parameters<br />
<ul>
<li>Understand all parts of a method signature</li>
<li>Understand what a return type is</li>
<li>Know what it means to return void</li>
<li>Understand what static is and when to use it</li>
<li>Understand the difference between arguments and parameters. You can push an argument into a method as a parameter.</li>
<li>Understand that when you push a variable into a method, that when the method receives it, it does not have to be called the same name on the other side. However, naming convention wise it is common to call it the same name. </li>
<li>Be able to set a local variable equal to the return value of
a method. For example: int result = Add(1 , 2);</li>
</ul>
if/else and case/switch logic<br />
<ul>
<li>Understand if/else if/else logic</li>
<li>Understand case/switch logic</li>
<li>Understand inverting if statement, and not having redundant/extra statement</li>
<li>Understand "!" syntax for "not"</li>
<li>Understand shorthand syntaxes</li>
</ul>
Collections: Lists, arrays<br />
<ul>
<li>Understand arrays and how they work with types and capacity</li>
<li>Be comfortable working with lists</li>
<li>Be comfortable working with a list of lists</li>
<li>Understand how indexes work with arrays and lists + that
they are zero indexed</li>
<li>Understand when to use an array vs. list and the benefits of
each</li>
</ul>
Loops: for, while, foreach, do<br />
<ul>
<li>For loops</li>
<li>While loops</li>
<li>Foreach loops</li>
<li>Do while loops</li>
</ul>
Basic utility/extension methods<br />
<ul>
<li>ToString()</li>
<li>ToCharArray()</li>
<li>Trim()</li>
<li>ToUpper() and ToLower()</li>
<li>Substring()</li>
<li>Split()</li>
<li>ToList() </li>
</ul>
Refactoring code practice<br />
<o:p></o:p><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<h3>
<b>C# Basics Part 2</b></h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
Basics of Classes, properties, methods in classes<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Understand what a class is</li>
<li>Understand how to use and access properties under a class</li>
<li>Understand basic {get;set;}</li>
<li>Understand how to customize {get;set;}</li>
<li>Basic Inheritance between classes</li>
<li>Enums</li>
</ul>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
Intermediate C#, Nulls, Regex, and Casting</div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Basic uses of LINQ</li>
<li>Regex</li>
<li>Dealing with null and checking for null</li>
<li>Understand what a nullable type is</li>
<li>Understand how to make something that isn't normally
nullable into nullable</li>
<li>Using Dictionaries (collection type)</li>
<li>Tuples</li>
<li>Casting</li>
<li>Boxing</li>
<li>Unboxing</li>
<li>Implicit vs explicit cast</li>
</ul>
<div class="MsoNormal">
Separating large projects into multiple classes, namespaces,
access modifiers<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Understand what a namespace is and how to use them</li>
<li>Understand what an access modifier is</li>
<li>Public</li>
<li>Private</li>
<li>Internal</li>
<li>Protected</li>
<li>Protected Internal</li>
<li>Private protected</li>
<li>Sealed</li>
<li>Understand what the default access modifier is if one isn't
listed</li>
<li>Understand read-only and const</li>
<li>Understand how access modifiers are related to namespaces</li>
<li>Understand how access modifiers affect Intellisense</li>
<li>Understand when/how to use each access modifiers</li>
</ul>
<div class="MsoNormal">
Class constructors<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>What is a constructor?</li>
<li>What does a constructor do?</li>
<li>Know that there are different type of constructors available
and be able to define them: default, parameterized, copy, static, private</li>
<li>Class inheritance, interfaces .. Object oriented programming</li>
</ul>
<div class="MsoNormal">
More complex inheritance between multiple classes / multiple
levels of inheritance and base classes</div>
<div class="MsoNormal">
</div>
<ul>
<li>Interfaces</li>
<li>Abstract classes</li>
<li>Interfaces vs. abstract classes</li>
<li>Inheritance of abstract classes and interfaces</li>
<li>Overriding inherited methods</li>
<li>Method overloading</li>
<li>Method overriding</li>
<li>Understand what an extension method is, for example the LINQ
methods</li>
<li>Optional parameters</li>
</ul>
<div class="MsoNormal">
Be able to define the 4 principles of OOP</div>
<div class="MsoNormal">
</div>
<ul>
<li>Encapsulation</li>
<li>Inheritance</li>
<li>Abstracton</li>
<li>Polymorphism</li>
</ul>
Design Patterns<br />
<div class="MsoNormal">
<ul>
<li>Be able to define SOLID</li>
<li>Understand that Gang of Four exists / what that is</li>
</ul>
</div>
<div class="MsoNormal">
Unit testing<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Naming convention for project, class files, and method names</li>
<li>AAA - Arrange, Act, Assert</li>
<li>Writing a basic unit test for a method</li>
<li>Writing unit tests to cover a class</li>
<li>Test attributes</li>
<li>Running unit tests</li>
<li>Debugging unit tests</li>
<li>Code coverage</li>
<li>Test Driven Development (TDD) and red/green/blue</li>
<li>What is mocking?</li>
<li>What is Moq?</li>
<li>Know there are different frameworks like Nunit, Xunit, and
MSTest.</li>
</ul>
<div class="MsoNormal">
<b><u>Debugging practice, fix broken code!</u></b></div>
<div class="MsoNormal">
<b><u><br /></u></b>
<b><u><br /></u></b></div>
<h3>
Creating a backend API App:</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>APIs - what are they, how are they used, etc.</li>
<li>Get</li>
<li>Put</li>
<li>Post</li>
<li>Patch</li>
<li>Delete</li>
<li>How an API project can be accessed by a front end</li>
<li>How an API project can reach into other layers of logic and
get data to a database</li>
<li>How dev teams can be split into back-end and front end and
work out of sync + where the split is in work</li>
<li>How an API project can be published to Azure and be a live
site</li>
<li>Basic error codes, 404, 500, 200, etc.</li>
</ul>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
API Tools:<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Swagger - know how to use this to test out APIs with the localhost/swagger URL</li>
<li>Postman - know how to use this to test out APIs</li>
<li>Fiddler - install this tool, understand how it works</li>
</ul>
<div class="MsoNormal">
Learn what dependency injection is<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Basic dependency injection and what it is</li>
<li>Names of frameworks like Unity, Castle Windsor, Autofaq</li>
</ul>
<div class="MsoNormal">
Debugging practice with tools and full back-end solution<br />
<br /></div>
<h3>
SQL -</h3>
<ul>
<li>What is a database? What is SQL?<span style="mso-spacerun: yes;"> </span></li>
<li>Go through: https://sqlzoo.net/<span style="mso-spacerun: yes;"> </span></li>
<li>What is a database?</li>
<li>What is SQL?</li>
<li>What is NoSQL</li>
<li>SQL vs NoSQL</li>
<li>Learn what MongoDB, CosmosDB, Cassandra are and be able to
define them only</li>
<li>Understand basic table structures and how data is broken up
into different tables</li>
<li>Be able to query easily (CRUD operations) SELECT, INSERT, UPDATE, DELETE, etc.</li>
<li>T-SQL</li>
<li>Stored Procedures</li>
<li>Joins</li>
<li>Keys</li>
<li>Foreign Keys</li>
<li>Triggers</li>
<li>Know what ACID is</li>
</ul>
<div class="MsoNormal">
SQL Server Management Studio (SSMS) basics<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Be able to login to a local SQL Server</li>
<li>Be able to login to an Azure SQL Server</li>
<li>Be able to find databases, tables easily</li>
<li>Be able to edit tables manually in SSMS</li>
<li>Feel comfortable using SSMS as a tool</li>
<li>Understand difference between SSMS and the DB itself</li>
<li>Understand the difference between local vs. Azure IaaS vs.
Azure PaaS SQL</li>
<li>How to connect web app to SQL, ORMs</li>
</ul>
<div class="MsoNormal">
What is an ORM?</div>
<div class="MsoNormal">
</div>
<ul>
<li>What does an ORM do?</li>
<li>ADO.NET</li>
<li>Dapper - learn what this is and what is can do</li>
<li>Entity Framework - learn what this is and what is can do</li>
</ul>
<h3>
Javascript - </h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Basic JavaScript syntax and logic</li>
<li>Take online course on JS like CodeSchool.com or CodeAcademy.com</li>
<li>Know what jQuery is and what it is for</li>
<li>Know what AJAX is and what it is for</li>
<li>Know what React JS and Angular JS are and very basics of
these / compare and contrast these two frameworks</li>
<li>Know what Vue.JS is</li>
<li>Browser debugger</li>
<li>Be comfortable using the debuggers in each browser: Chrome,
Firefox, and Edge</li>
</ul>
<h3>
HTML/CSS</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Take a HTML and CSS online course</li>
<li>Know how to make a basic HTML5 page with divs or tables</li>
<li>Know all basic HTML elements</li>
<li>New HTML5 elements</li>
<li>Good practices with CSS and how to use periods and spaces to
chain CSS</li>
<li>When to and not to use "important" css styling
with "!"</li>
<li>Twitter Bootstrap framework and use of it</li>
<li>SASS</li>
<li>Know what bundling is</li>
</ul>
<h3>
End to End - Debugging</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Reading and understanding stacktraces</li>
<li>How to use try/catch, setup exceptions</li>
<li>Exceptions</li>
<li>Error checking</li>
<li>Throw/Catch errors</li>
<li><b>How to determine if bug is in front end, backend, or DB issue. Be able to explain this on an interview.</b></li>
</ul>
<h3>
Agile/Scrum/Devops Basics</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Understand how requirements can be broken into Epics/Features/User Stories</li>
<li>Understand what a User Story / Product Backlog Item is</li>
<li>Be able to read a business requirement and break it into technical steps that you can estimate in hours.</li>
<li>Understand how to estimate your work in hours (always over-estimate!)</li>
<li>Know what Agile is</li>
<li>Know what a Kanban workflow is</li>
<li>Know what a Sprint is.. understand sprint planning, stand-up, sprint review, sprint retrospective meetings and their purposes</li>
<li>Understand what the following roles do: Product Owner, Business Analyst, Scrum Master, Quality Assurance, and how you work with these roles at work. </li>
</ul>
<h3>
Advanced topics / Optional / Nice to know topics</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Understand what the cloud is and what Azure, AWS, and Google Cloud are. Understand the difference between cloud and on-premise offerings. Understand the terms SaaS, IaaS, and PaaS in relation to cloud services. </li>
<li>UML Diagrams</li>
<li>Recursive functions / recursion</li>
<li>C# Dynamics</li>
<li>Binary operators</li>
<li>Knowing binary</li>
<li>Compile time vs Runtime</li>
<li>Structs</li>
<li>Delegates</li>
<li>DevOps CI/CD</li>
<li>Git Branching, switch branches, branching strategies,
overall release strategy</li>
<li>Angular / React JS</li>
<li>Design Patterns/Architecture</li>
<li>Stack/Heap</li>
<li>Runtime, JIT, etc</li>
<li>Pointers</li>
<li>Basic Networking</li>
</ul>
<br />Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-10419577385019078422019-04-28T20:50:00.002-04:002020-06-09T17:00:24.033-04:00Algorithms: Union-Find in C#<b>Union-Find Algorithm</b>:
Imagine if you have 100 computers in a room not networked to one another. You could use a Union(computer1, computer2) method to join 2 computers together in a network. From there, you could continue joining computers together randomly and you would want to have a method that returns a bool called Connected(computer1, computer2) that determines if they are already connected, so you don't have to do the work if they're already in the same network.
<pre class="prettyprint">
/// <summary>
/// Initialize: N
/// Union: N
/// Find: 1
/// Accesses: takes N^2 accesses to process sequence of N union commands on N objects
/// Summary: Union is too expensive. Too slow for huge problems. Quick union will be a little faster.
/// </summary>
public class QuickFindUF
{
private int[] id;
public QuickFindUF(int N)
{
id = new int[N];
for (int i = 0; i < N; i++) id[i] = i;
}
public bool Connected(int p, int q) // Find
{
return id[p] == id[q];
}
public void Union(int p, int q)
{
int pid = id[p];
int qid = id[q];
for (int i = 0; i < id.Length; i++)
{
if (id[i] == pid) id[i] = qid;
}
}
}
</pre>
Now, if we wanted to be a little more efficient, we could setup the connections to be in a tree format. Each computer will reference it's parent's number as an ID. The root computers will reference themselves as their ID, so you can check for that to tell if a computer is a root of a tree.
<pre class="prettyprint">
/// <summary>
/// Faster than QuickFindUF, but still too slow.
/// Too expensive because trees can get too tall or too flat (extremes).
/// </summary>
public class QuickUnionUF
{
private int[] id;
public QuickUnionUF(int N)
{
id = new int[N];
for (int i = 0; i < N; i++) id[i] = i;
}
private int Root(int i)
{
// Chase parent ID until reach the root (depth of i array accesses)
while (i != id[i]) i = id[i];
return i;
}
public bool Connected(int p, int q) // Find
{
return Root(p) == Root(q);
}
public void Union(int p, int q)
{
int i = Root(p);
int j = Root(q);
id[i] = j;
}
}
</pre>
Lastly, we could have balanced trees to ensure we have no extremely tall trees. A component is how many groups of computers that we have a component could be 1 computer by itself, or it could be all of the computers in a component if every computer has been networked together at some point with the Union() method. We should keep track of the size of each component and how many total components we have in our data set.
<pre class="prettyprint">
/// <summary>
/// Keep track of tree size and take steps to avoid having tall trees.
/// Smaller tree will connect to the root of the larger tree.
/// Java implementation on p. 228
/// Depth of any node x is at most lg N (lg = base-2 logarithms)
/// If N is 1,000 its 10 (2^10 = 1000)
/// If N is 1,000,000 its 20 (2^20)
/// If N is 1,000,000,000 its 30 (2^30)
/// Can also add path compression: just after computing root of p,
/// set the id of each examined node to point to that root
/// </summary>
public class QuickUnionUF2 // Weighted Quick Union
{
private int[] id;
private int[] sz;
private int count; // number of components
public QuickUnionUF2(int N)
{
id = new int[N];
for (int i = 0; i < N; i++) id[i] = i;
sz = new int[N];
for (int i = 0; i < N; i++) sz[i] = 1;
}
public int Count() { return count; }
private int Root(int i)
{
// Chase parent ID until reach the root (depth of i array accesses)
while (i != id[i])
{
// Halves path length. No reason not to, keeps tree almost completely flat.
id[i] = id[id[i]]; // Only 1 extra line of code to do path compression improvement!
i = id[i];
}
return i;
}
public bool Connected(int p, int q) // Find
{
return Root(p) == Root(q);
}
public void Union(int p, int q)
{
int i = Root(p);
int j = Root(q);
if (i == j) return;
// Make smaller root point to the larger root.
if (sz[i] < sz[j]) // if i is smaller than j
{
id[i] = j; // point i to new root j
sz[j] += sz[i]; // add the count of the smaller array to the count of the larger array
}
else // if j is smaller than i
{
id[j] = i;
sz[i] += sz[j];
}
count--; // if we combine components, the count of components goes down by 1
}
}
</pre>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-12123312591935216502019-03-04T11:11:00.001-05:002020-06-09T16:59:23.132-04:00Side Gigs while Transitioning Careers (or in general)I've gotten this question a lot lately, so decided to just make a post about it: <b>"What are side gigs I can do to earn money while transitioning careers?"</b> I will list out all the ideas I can think of here and more details for the ones I know about.<br />
<br />
Why do I know about these? I needed some of these when I switched from medicine to software and did some on the side on night/weekends. I have friends with flexible work. I traveled a lot for work and talked to people around me. Sometimes I was on the customer side. And, reading <a href="https://www.thepennyhoarder.com/" target="_blank">PennyHoarder </a>for kicks.<br />
<br />
The list below will be mostly applicable to US residents. Some of this is available in other countries/regions, but I live in the US and can provide a list that is useful for where I live. If you are a good writer, don't mind driving, or are bilingual, you will have lots of options!<br />
<br />
<b>Remote:</b><br />
Google Ads Rater - look at google search queries and see if the results are good, see if ads graphics are related to the text topic, see if queries for videos bring back a good result video, etc. To do this, basically apply for a spot within one of the below companies, wait for them to select you, you start taking exams from them based on material they send you (usually a large-ish PDF manual), pass tests, start doing work. It can be a bit brain numbing but easy money around $13/hour that you can do while watching Netflix. It's not very intensive or hard as long as you are good at absorbing the rating requirements that were taught in the training manuals. Note historically there were 4 companies when I did this 5 years ago, it looks like in 2019 it is down to 2.<br />
<ul>
<ul>
<li>LionBridge - <a href="https://www.lionbridge.com/join-our-team/?utm_source=Google&utm_medium=paidsearch&gclid=Cj0KCQiAtvPjBRDPARIsAJfZz0qvOitecKSuAGl7gc2lZWJ-8gGRlNFwsofb4VWZUp2_oTRX47PjfH0aAkLaEALw_wcB" target="_blank">Current Job Openings</a> (click on testers, raters, and curators for Google Ads rater jobs, if you are bilingual you can investigate the translator or interpreter options).</li>
<li>Appen Butler - <a href="https://appen.com/careers/" target="_blank">Current Job Openings</a> (click raters for google ads, or if interested checkout language jobs or micro tasks).</li>
<li>Leapforce has been acquired by Appen.</li>
<li>ZeroChaos <-- I believe was dropped from Google in 2017 due to this <a href="https://www.wired.com/story/google-drops-zerochaos-for-youtube-videos/" target="_blank">article</a>.</li>
</ul>
</ul>
<a href="https://www.vipkidteachers.com/" target="_blank">VIPKID Teachers</a> - teaching English via online conference call to children in China. Need to be very enthusiastic and require a Bachelor's degree in any field and to be in the US or Canada.<br /><ul>
<ul>
<li>Requirements here - <a href="http://www.vipkidreview.com/requirements/" target="_blank">http://www.vipkidreview.com/requirements/</a></li>
</ul>
</ul>
<a href="https://www.mturk.com/" target="_blank">Amazon Turk</a> - basically random tasks people need a person, not a robot to do. It could be literally anything manual, reading/writing/recording audio, analyzing, testing things out, checking grammar, translating, making subtitles, you name it. You can screw up and make like $1 an hour picking low paying tasks, or as much as $20ish an hour. I believe most folk average around $10 an hour. Do your research based on the links below and do your own research before embarking on this one so you know how to earn a decent hourly wage.<br /><ul>
<ul>
<li>Things you should know - <a href="https://www.reddit.com/r/mturk/comments/1z4sma/new_to_mturk_heres_what_you_should_know/" target="_blank">https://www.reddit.com/r/mturk/comments/1z4sma/new_to_mturk_heres_what_you_should_know/</a></li>
<li>Tips and trips - <a href="https://toughnickel.com/self-employment/-Top-Ten-Tips-For-Making-Money-From-Amazon-Mechanical-Turk" target="_blank">https://toughnickel.com/self-employment/-Top-Ten-Tips-For-Making-Money-From-Amazon-Mechanical-Turk</a></li>
<li>Tips + Similar Websites to this - <a href="https://theworkathomewife.com/mturk-earnings/" target="_blank">https://theworkathomewife.com/mturk-earnings/</a></li>
</ul>
</ul>
<a href="https://www.italki.com/home" target="_blank">iTalki </a>- If you can speak a foreign language and want to teach the foreign language, or teach English to those who know the same foreign language as you, this is a top notch website. I used this site as a learner to learn a foreign language and its a reliable and well put-together process. You sign up as a tutor, put up your schedule, and people sign up for lessons with you. You do lessons via Skype video typically, unless you and the student agree on a different video conferencing program. You can teach in any way you choose, come up with your own materials and plan based on the student.<br /><ul>
</ul>
<ul>
<li>Freelance Writing - I don't know much about this area but just giving this as an idea.</li>
</ul>
<ul>
<li>Translator - I don't know much about this area but just giving this as an idea.</li>
</ul>
Local In-Person Flexible Jobs:<br />
<br />
<ul>
<li>Bartending - find a local bartending job at a hotel or restaurant. The more expensive the joint, the better the tips will be.</li>
</ul>
<ul>
<li>Mystery Shopping - You get paid to pretend to be a shopper and make sure employees are doing what they are supposed to (coffee at the right temperature, introductions, talk about some sales/rewards program, checking IDs for alcohol, etc.). Typically you get reimbursed for whatever item you buy and a payment for your time for doing the task and writing up a report. You need to have decent grammar/writing/spelling skills and do a good job on the report. If you mess up the report, you won't get paid or reimbursed, so be careful, but most people who are very meticulous will have no issues with this. Typically you pay for items with your credit card and are reimbursed, so you need a credit card and have to be ok with a reimbursement coming 7-90 days later.</li>
<ul>
<li><a href="http://www.a-closer-look.com/" target="_blank">A Closer Look</a> (restaurants, fitness.), <a href="https://www.second-to-none.com/" target="_blank">Second-to-None</a> (donuts, blood, urine tests), <a href="https://mercsystems.com/" target="_blank">Mercentile Systems</a>, and <a href="http://www.northforkresearch.com/" target="_blank">North Fork</a> are reputable companies. There are a lot of scam companies out there, so be careful and do your research before you start doing this.</li>
</ul>
</ul>
<ul>
<li>Pet Sitting - you either visit/stay at someone else's place or take in their pet to your home. There are websites that are local to your area and more national reach ones, search for pet sitter on google and you can checkout options for your area.</li>
<ul>
<li><a href="https://www.rover.com/" target="_blank">Rover</a> - large customer/sitter base nationwide</li>
</ul>
</ul>
<ul>
<li>Dog Walker - walk dogs! Google this and find out what you have locally, etc.</li>
<ul>
<li><a href="https://www.rover.com/" target="_blank">Rover</a> - large customer/sitter base nationwide</li>
</ul>
</ul>
<ul>
<li>Donating Blood Plasma - you can donate 2x a week (~$20-50 per visit), the payment varies by location. You can google based on your location for locations to donate plasma.</li>
<ul>
<li>CSL Plasma - <a href="https://www.cslplasma.com/locations/search-results-zipcode" target="_blank">Locations by Zip Code</a></li>
<li>More info here - <a href="https://wallethacks.com/how-to-donate-plasma/" target="_blank">https://wallethacks.com/how-to-donate-plasma/</a></li>
</ul>
</ul>
<ul>
<li>Focus Groups - Usually target some specific demographic, if you are in it, apply! Mostly one and done, you apply, if you get in, you do some task, easy money, and they pay you right after.</li>
<ul>
<li><a href="https://findfocusgroups.com/" target="_blank">https://findfocusgroups.com/</a></li>
</ul>
</ul>
<ul>
<li>Tutoring - tutor adults and kids in some topic! Could be elementary school math, SAT, MCAT, languages, anything! Do some research online for other options, the one I used was below:</li>
<ul>
<li><a href="http://wyzant.com/">wyzant.com</a></li>
</ul>
</ul>
<ul>
<li>Research Studies / Medical Research Trials - just an idea</li>
</ul>
<br />
Local In-Person Flexible Jobs Related to Driving and Food:<br />
<br />
<ul>
<li>Uber - rideshare option, drive folk around on your own schedule. Most people join both Uber and Lyft to make sure they get rides from both. There are a lot of strategies to get the most rides, rush hour, weekend nights, and hovering around the airport are all good ideas. You do often wait in a queue if you are in an airport or busy location like that. Stick to downtown areas for weekend nights if you want the bar scene, also wrap up your car with plastic wrap in the back and provide doggy bags in case of sick folk who drank too much if you do this. </li>
<ul>
<li>Driver requirements - <a href="https://www.uber.com/drive/requirements/" target="_blank">https://www.uber.com/drive/requirements/</a></li>
<li>Lease a car from Uber to drive for Uber - <a href="https://www.uber.com/drive/vehicle-solutions/" target="_blank">https://www.uber.com/drive/vehicle-solutions/</a></li>
</ul>
</ul>
<ul>
<li>Lyft - rideshare option, drive folk around on your own schedule. Same advice as above for Lyft as Uber.</li>
<ul>
<li>Driver requirements - <a href="https://help.lyft.com/hc/en-us/articles/115012925687-Driver-requirements" target="_blank">https://help.lyft.com/hc/en-us/articles/115012925687-Driver-requirements</a></li>
<li>Rent a car from Lyft for driving for Lyft - <a href="https://www.lyft.com/expressdrive" target="_blank">https://www.lyft.com/expressdrive</a></li>
</ul>
</ul>
<ul>
<li><a href="https://careers.instacart.com/" target="_blank">InstaCart</a> - food delivery or in-store shopper, sometimes the same person does both, but usually these are two separate jobs.</li>
</ul>
<ul>
<li>PrimeNow Shopper - work in Whole Foods and assemble orders</li>
</ul>
<ul>
<li>UberEats - food delivery</li>
</ul>
<ul>
<li>DoorDash - food delivery</li>
</ul>
<ul>
<li>GrubHub - food delivery</li>
</ul>
<ul>
<li>BiteSquad - food delivery</li>
</ul>
<ul>
<li>Postmates - food delivery</li>
</ul>
One last note, a pretty good website to come through for more ideas is <a href="https://www.thepennyhoarder.com/make-money/side-gigs/?aff_sub2=homepage" target="_blank">The Penny Hoarder</a>.Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-41530506326111817212019-01-17T17:38:00.004-05:002020-06-09T16:58:17.326-04:00How to Become a Business Analyst<img alt="Image result for business analyst" src="http://res.cloudinary.com/techcanvass/image/upload/h_439,w_780/v1525513377/Business-Analyst-Role_z3blkx.jpg" height="360" width="640" /><br />
<br />
I created some<a href="https://github.com/catenn/IIBA/wiki"> training material</a> for the IIBA (International Institute of Business Analysis) local Tampa chapter and it is open for anyone to utilize. I have am working with them to help with training in using Azure DevOps (formerly VSTS/TFS) and for new folk to the field.<br />
<br />
How to get into the field:<br />
<ul>
<li>I would recommend getting the <b>Scrum.org</b> and the <b>ECBA certification from the IIBA</b>. The best way to go for the ECBA certification is to pay for the membership for the IIBA which will give you lots of training materials and an exam discount (about the price of the membership so it's like free materials!).</li>
<li>Go to local meetups and search for IIBA in your area and find some nice folk to ask about the field and what the job is like!</li>
<li>When searching for jobs make sure to search for a generic "Analyst" as there are many, many names for Business Analysts. Also add in keywords for "entry level" or "junior" and don't be afraid of the requirements or years of experience they ask for in the posting, that is simply a wish list of an ideal candidate, not a real person that they actually plan on finding (especially for junior roles). </li>
<li>Write a cover letter explaining why you are interested in the Business Analyst role, why you are a good fit, what you have done to prepare yourself, what skills you have, and why you are interested in the particular company you are applying for.</li>
<li>On the top of your resume, list skills that are relevant to the IT field and the Business Analyst role. Members of local meetups or industry Analysts can help you out!</li>
<li>Learn about Agile, Scrum, SDLC, Epics/Features/User Stories, and more by searching online. Also... see below on this point:</li>
</ul>
I have some training on how to write Epics/Features/User Stories and examples of how to break things down. I also have hands on labs on how to utilize Azure DevOps as a tool in the Business Analyst role. Azure DevOps is completely free to use for up to 5 people (so for 1 person learning, it's a great tool). The labs and info is all free and I just hope it helps someone out!<br />
<br />
Please click here to see it: <a href="https://github.com/catenn/IIBA/wiki">https://github.com/catenn/IIBA/wiki</a><br />
<br />
<i><span style="font-size: xx-small;">Note: I am not a Business Analyst, I am a developer who has partnered up with Business Analysts to make this training. I do work at Microsoft and I do train Business Analysts on how to utilize Azure DevOps as a tool, but I do not train Business Analysts on how to do their role.</span></i>Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-4472426306204246392019-01-15T19:26:00.000-05:002020-02-03T23:05:56.105-05:00Networking Part VI: Azure Networking - VMs, IP Addresses, and Load BalancingThis is part 6 of a series of networking posts:<br />
<ul>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-i-binary.html">Part 1: Binary</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-ii-hexadecimal.html">Part 2: Hexadecimal</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iii-networking-101.html">Part 3: Networking 101 (IP addresses, subnets, etc.)</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iv-scenario-based.html">Part 4: Scenario based understanding of the 7 layers of the OSI Model</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-v-azure-networking.html">Part 5: Azure Networking Foundations - VNet, Subnet, Security, and Connectivity</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-vi-azure-networking-vms.html">Part 6: Azure Networking - VMs, IP Addresses, and Load Balancing</a></li>
</ul>
<span style="font-size: large;"><b>Azure VM Networking</b></span><br />
<ul>
<li>A NIC on a VM can connect to your VNet for example. Properties of a NIC that are normally set in the OS are able to be configured in Azure for your Azure VMs. </li>
<ul>
<li>Note: VMs (and all other resources) need to be deployed to the same region as your VNet. So you need a VNet for each region that you have resources.</li>
</ul>
<li>A NIC on a VM can also be attached to a load balancer (for highly available applications). </li>
<li>Up to 250 IPs can be assigned per NIC, and these can be public or private IP addresses. </li>
<ul>
<li>You can add/edit IPs by going to your VM resource > Network interface > Settings > IP Configurations > Add. If you select an existing IP address, you can go into another menu where you are able to enable it as Public/Private or assign it as Dynamic/Static. You can also change the actual IP address value for Static IPs. Changing to a new IP address will cause the VM to reboot.</li>
</ul>
<li>You can add more NICs to the VM if you need more IPs from a Microsoft block of reserved IP addresses (you cannot port in your own IP address ranges that you are using on prem or otherwise).</li>
<li>The underlying Azure platform handles connections to/from the machine, you should not RDP into your VM and setup a static IP address for you IPv4 (you will lose access to your machine, it is an unsupported action for an Azure VM and well documented). </li>
<li>You also should not install a DHCP service on your VM (unsupported as well). You can do dynamic or static IP addresses for your VM.</li>
<ul>
<li>Dynamic Host Configuration Protocol (DHCP) is a client/server protocol that automatically provides an Internet Protocol (IP) host with its IP address and other related configuration information such as the subnet mask and default gateway.</li>
</ul>
<li>MAC address persistence: by default we guarantee that the MAC address will not change for a VM or NIC provided the VM is not deleted, redeployed from disks, or redeployed using the redeploy feature that rebuilds the virtual hardware.</li>
<li>When you create a new VM you can add it to an existing VNet and subnet. If you want it publicly available, you can add Public IP, or if you don't then select None for the Public IP address (and it will automatically get assigned only a private IP address). You should create a new NSG for it (default option).</li>
</ul>
<br />
<span style="font-size: large;"><b>IP addresses</b></span><br />
<ul>
<li>IP addresses are treated as a separate resource in Azure, which allows you to move it from one resource to another.</li>
<li>Not all resources in Azure support a static (reserved) IP. For example, a VPN Gateway or Application Gateway do not support a static address because they are Microsoft managed resources. The dynamic IP will not change unless you delete or redeploy that resource, however. </li>
<li>Static (reserved) Public IPs - retain the IP address. The IPs can be moved between services easily and within seconds. </li>
<li>Public IPv4 resources are a finite resource. You can have 5 public static IP addresses as part of your Azure subscription for no cost, but any additional ones will start becoming a billable resource. Dynamic IPs can help you with cost savings as they are cheaper than static IPs.</li>
</ul>
<div>
<div>
<span style="font-size: large;"><b>Load Balancing</b></span></div>
<div>
Azure has 4 different options for traffic distribution:<br />
<br />
1. Traffic Manager - DNS based<br />
<img alt="An illustration showing Azure Traffic Manager routing a user request to the nearest data center. " src="https://docs.microsoft.com/en-us/learn/azure/intro-to-azure-networking/media/4-traffic-manager.png" /><br />
<br />
2. Azure Load Balancer - Layer 4 of OSI model (TCP/UDP)<br />
<img alt="An illustration showing the web tier of a three-tier architecture. The web tier has multiple virtual machines to service user requests. There is a load balancer that distributes user requests among the virtual machines." src="https://docs.microsoft.com/en-us/learn/azure/intro-to-azure-networking/media/3-load-balancer.png" /><br />
<br />
3. Application Gateway - Layer 7 of OSI model (HTTP/HTTPS), can start to add in some Web Application Firewall (WAF), SSL Termination and Cookie based affinity<br />
4. 3rd Party Virtual Appliances - Layer 3-7 of OSI model. <u>Network Virtual Appliances (NVAs) are simply custom IaaS VMs</u> that can provide network functions such as firewall, app firewalls, IDS/IPS, load balancer, and VPN terminators. Azures IP forwarding and UDRs can help send packets to these VMs or override default routing behavior. Many NVAs are available in the Azure Marketplace. Some common vendors are:<br />
<br />
<ul>
<li>Cisco</li>
<li>Citrix</li>
<li>F5</li>
<li>Infoblox</li>
<li>Check Pint</li>
<li>Fortinet</li>
</ul>
</div>
</div>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-31092108920715453582019-01-15T19:22:00.003-05:002020-02-03T23:05:51.298-05:00Networking Part V: Azure Networking Foundations - VNet, Subnet, Security, and ConnectivityThis is part 5 of a series of networking posts:<br />
<ul>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-i-binary.html">Part 1: Binary</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-ii-hexadecimal.html">Part 2: Hexadecimal</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iii-networking-101.html">Part 3: Networking 101 (IP addresses, subnets, etc.)</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iv-scenario-based.html">Part 4: Scenario based understanding of the 7 layers of the OSI Model</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-v-azure-networking.html">Part 5: Azure Networking Foundations - VNet, Subnet, Security, and Connectivity</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-vi-azure-networking-vms.html">Part 6: Azure Networking - VMs, IP Addresses, and Load Balancing</a></li>
</ul>
<div>
<span style="font-size: large;"><b>Azure Networking Overview</b></span></div>
<div>
Azure data centers manage the physical hardware for you. You configure virtual networks through software, which enables you to treat a virtual network just like your own network. For example, you can choose which other networks your virtual network can reach, whether that's the public internet or other networks in the private IP address space.</div>
<div>
<br /></div>
<div>
<span style="font-size: large;"><b>Azure Foundation Networking</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-left: 1em; margin-right: 1em;">
<img alt="Image result for vnet subnet diagram" height="640" src="https://docs.microsoft.com/en-us/azure/includes/media/virtual-machines-common-network-overview/vnetoverview.png" width="557" /></div>
<br />
<div>
<ul>
<li><b>Virtual Network</b>: logically isolated network on Azure that enables the flow of communication between different resources/subnets/VMs, other VNets, or to on-premises (depending on how you set it up). This is the foundation of Azure Networking and it is a Layer-3 overlay. Virtual networks are segmented into one or more subnets. Limitation of VNets: VNets cannot span regions or subscriptions. VNet Peering, ExpressRoute, or VNet-to-VNet can connect regions or subscriptions together, however.</li>
<li><b>Address Space:</b> usable IP addresses within your virtual network. Mainly an IPv4 environment. Public and private available.</li>
<ul>
<ul>
<li>VNets are isolated by default. If you deploy two or more VNets in the same address space, it is fine as long as you do not intend to ever try to connect them. </li>
<li>If you need to add multiple address spaces, go to your VNet resource > Settings > Address Space and add more. As you add more, you can make subnets from all added address spaces.</li>
<li>Azure Reserved Addresses are needed for Azure core connectivity. /29 is the smallest and /9 is the largest you can use in Azure. Typically x.0.0.4 will be the first usable address space. </li>
</ul>
<li><b>Subnet</b>: Subnets can help you organize and secure your resources.</li>
<ul>
<li>In the Portal when you create a VNet it has you define your first subnet, you can add more later or delete/modify the one you created initially.</li>
<li><b>Network Security Group</b>: controls ingress and egress traffic (allows or denies) to your Azure resources such as a NIC or subnet. Think of a network security group as a cloud-level firewall for your network. Prioritized set of rules based on a 5-tuple rule-set: source + destination IP, source + destination port, and protocol. Can expose only certain ports of a subnet or NIC to the Internet as well as secure the flow of traffic between subnets/NICs on the same subnet. Stateful rules and will keep track of your requests.</li>
<li><b>Route Tables: </b>A route table contains a set of rules, called routes, that specifies how packets should be routed in a virtual network. Route tables are associated to subnets, and each packet leaving a subnet is handled based on the associated route table. Each route table can be associated to multiple subnets, but a subnet can only be associated to a single route table.</li>
</ul>
<li><b>DNS Servers</b>: References to DNS servers that will be assigned to the VMs or cloud server instances in the VNet. DNS resolution service is provided by default out of the box with your VNet in Azure. </li>
<ul>
<li>You can specify a custom DNS service</li>
</ul>
<li><b>User Defined Routes (UDR):</b> control traffic to a much finer degree. </li>
<ul>
<li>Send traffic to/from IPS or IDS for monitoring/auditing.</li>
</ul>
</ul>
</ul>
</div>
<div>
<span style="font-size: large;"><b>Security</b></span><br />
1. Policies - Azure Policies can be setup for general security to ensure that your company/team follows rules that you setup. Below are some good practices for networking specific policies:<br />
<br />
<ul>
<li>Keep resources within a specific region</li>
<li>Prevent resources from being provision with Public IPs</li>
<li>Force resources location to match their resource group</li>
<li>Force certain users/prefixes to be deployed only to certain subnets (like dev/qa/prod networks)</li>
<li>Constrain the Azure regions that is allowed to be deployed to (whitelisting)</li>
</ul>
<br />
2. Setup RBAC for user access.<br />
3. Setup a User Defined Route (UDR).<br />
4. Setup a Network Security Group (NSG).<br />
<br />
<span style="font-size: large;"><b>IPSec Tunnels</b></span><br />
Internet Protocol Security (IPsec) is a secure network protocol suite that authenticates and encrypts the packets of data sent over an internet protocol network. It is used in virtual private networks (VPNs). In tunnel mode, the entire IP packet is encrypted and authenticated. It is then encapsulated into a new IP packet with a new IP header. Tunnel mode is used to create virtual private networks for network-to-network communications (e.g. between routers to link sites), host-to-network communications (e.g. remote user access) and host-to-host communications (e.g. private chat). - <a href="https://en.wikipedia.org/wiki/IPsec#Tunnel_mode">https://en.wikipedia.org/wiki/IPsec#Tunnel_mode</a><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;"><b>Connectivity Within Azure Options</b></span><br />
<ol>
<li>VNet Peering within Region - Connects two VNets in the same region via the backend network in Azure. No extra overhead with this and almost no latency. </li>
<li>Global VNet peering - connecting VNets across Azure regions</li>
<li>VNet to VNet via VPN Gateway - Leverages the Azure VPN gateway in each VNet to make the IPSec tunnel across regions or within the same region. Can also span to other customers or subscriptions easily.</li>
<li>VNet to VNet via ExpressRoute - Associate multiple VNets to the same circuit. Behind the scenes, Azure will enable routing between these VNets and their different regions to all connect to each other easily. Could cause security concerns with default behavior, but can be controlled. </li>
</ol>
<span style="font-size: large;"><b>Hybrid Connectivity from On Premises to Azure Options</b></span><br />
<ol>
<li>Internet Connectivity - resources are public facing directly to Internet and you can connect from anywhere. While possible, not usually preferred by companies. </li>
<li>Secure point-to-site connectivity - IPSec based tunnel that based from a client machine. Really good for individuals traveling and outside of the corp network and need to access private resources. Individual developers can use this.</li>
<li>Secure site-to-site VPN connectivity - Most enterprises start here, simple IPSec tunnel over public Internet connectivity from your on-premises gateway and Azure. Connect to private IaaS and PaaS resources seamlessly, should just feel like an extension from your network. </li>
<li>ExpressRoute private connectivity - Enterprise solution geared towards customer who need high throughput (~10GB range) / low latency connections. Dedicated direct connection from your datacenter to Azure (pretend there's a big cable going from your datacenter to Azure datacenter). Backed by SLA.</li>
</ol>
<div>
<br /></div>
</div>
<div>
Azure VNet FAQ: <a href="https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-faq">https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-faq</a></div>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-46799937109390100432019-01-07T16:39:00.000-05:002019-01-07T16:40:38.047-05:00Azure Containers Offerings ComparisonUpdates: <b>This was last updated 1/7/2019</b>. Azure Containers offerings are constantly changing and services are moving from PREVIEW to GA all the time.
<ul>
<li><b>*GA</b> = Generally Available, backed by SLAs and guaranteed up-time. Meant for production workloads</li>
<li><b>*PREVIEW </b>= available for beta use/early access use, but not backed by SLA or guaranteed up-time, not meant for production workloads yet</li>
<li><b>*SLA</b> = Service Level Agreement</li>
</ul>
Note: Price estimates are for average workloads on the service and could be less than or exceed the estimate depending on how you utilize the service.
<br><br>
<table>
<tr>
<th width="100px">Service</th>
<th width="160px">Ease of Use / Cost / OS Support</th>
<th>Scalability</th>
<th>General Use Case</th>
</tr>
<tr>
<td>Azure Container Instances (PaaS)</td>
<td>Easiest and quickest Container solution to setup. <br><br>Very cheap price for most workloads ($0-10, or under $100 per month on average for most workloads). <a href="https://azure.microsoft.com/en-us/pricing/details/container-instances/">More on pricing here.</a><br><br>Windows and Linux in GA</td>
<td>It is not possible to vertically scale a specific ACI instance to have more CPU/Memory, you would need to redeploy that container in order to get more. You can horizontally scale by adding more containers, however, ACI does not support load balancing so you would need to manage it yourself.</td>
<td>Azure Container Instances offers the fastest and simplest way to run a container in Azure, without having to provision any virtual machines or learning new tools—it's just your application, in a container, running in the cloud. With Azure Container Instances, you can easily run containers with a single command. Wide spectrum of scenarios including batch processing, continuous integration, and event-driven computing. We hear consistently from customers that ACI is uniquely suited to handle their burst workloads. ACI supports quick, cleanly packaged burst compute that removes the overhead of managing cluster machines. Some of our largest customers are also using ACI for data processing where source data is ingested, processed, and placed in a durable store such as Azure Blob Storage. By processing the data with ACI rather than statically provisioned virtual machines, you can achieve significant cost savings due to ACI’s granular per-second billing.<br><br>Can also be used in conjunction with AKS to elastically burst from your Azure Kubernetes Service (AKS) cluster into ACI.</td>
</tr>
<tr>
<td>App Services: Containers (PaaS)</td>
<td>Free option available for test workloads. Moderate price for most workloads (10's to 100's per month on average for most workloads. 1000's for Isolated Service Plan Tiers). <a href="https://azure.microsoft.com/en-us/pricing/details/app-service/windows/">More on pricing here.</a><br><br> Linux fully supported in GA. Windows supported in PREVIEW mode.</td>
<td>Built-in auto-scaling (vertically and horizontally) and load balancing available.</td>
<td>Just pull container images from Docker Hub or a private Azure Container Registry, and Web App for Containers will deploy the containerized app with your preferred dependencies to production in seconds. The platform automatically takes care of OS patching, capacity provisioning, and load balancing. Can be used for simple Web Apps that require scaling, do not require orchestration, and have great cost savings.</td>
</tr>
<tr>
<td>Azure Container Service (ACS) (IaaS)</td>
<td>To be depreciated in 2020 - Do not create new applications on ACS anymore. <a href="https://azure.microsoft.com/en-us/updates/azure-container-service-will-retire-on-january-31-2020/">Azure Container Service Will Retire on January 31, 2020
</a></td>
<td>--</td>
<td>--</td>
</tr>
<tr>
<td>Azure Kubernetes Service (AKS) (PaaS)</td>
<td>Difficult. Need to learn to use Docker and command line, Kubernetes architecture and kubectl command line, and most likely Azure command line. <a href="https://azure.microsoft.com/en-us/pricing/calculator/?service=kubernetes-service">More on pricing here.</a><br><br> AKS the service has no cost. AKS master nodes also have no cost. Cost is from the VMs utilized for the worker/minion nodes. Expensive for most workloads (100's to 1000's per month on average).<br><br> Linux fully supported in GA. Windows supported in PREVIEW mode.</td>
<td>The<a href="https://docs.microsoft.com/en-us/azure/aks/autoscaler"><b> cluster autoscaler (CA) (PREVIEW 01/2019)</b></a> can scale your agent nodes based on pending pods. It scans the cluster periodically to check for pending pods or empty nodes and increases the size if possible. By default, the CA scans for pending pods every 10 seconds and removes a node if it's unneeded for more than 10 minutes. When used with the horizontal pod autoscaler (HPA), the HPA will update pod replicas and resources as per demand. If there aren't enough nodes or unneeded nodes following this pod scaling, the CA will respond and schedule the pods on the new set of nodes.<br><br>Currently you can setup autoscale on Kubernetes itself on AKS without worry about the PREVIEW mode cluster autoscaler (CA).</td>
<td>Best suited for: large enterprise micro-service architectures that need to be able to be scaled on demand quickly and need as close to 100% up-time as possible and want to be able to have rolling updates with no downtime. Usually front-facing customer applications. At the moment, best for .NET Core (cross platform) on Linux containers or other general Linux container workloads.</td>
</tr>
</table>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhrP8H27vEGxfH1NosrnLk6n7O95dhVax5CJdLASxzsh45otTnnlFY_os-4wr2w2HBPoC288iVh7ePf1KAUBrGIa7vRci4OtWxDW9ACKpk94vytW3QuPA43Ip9Kwh8Qvkw6FmhOX8hD00f/s1600/containers.PNG" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhrP8H27vEGxfH1NosrnLk6n7O95dhVax5CJdLASxzsh45otTnnlFY_os-4wr2w2HBPoC288iVh7ePf1KAUBrGIa7vRci4OtWxDW9ACKpk94vytW3QuPA43Ip9Kwh8Qvkw6FmhOX8hD00f/s1600/containers.PNG" data-original-width="1313" data-original-height="514" /></a>
<i>Reference: <a href="https://azure.microsoft.com/en-us/overview/containers/">https://azure.microsoft.com/en-us/overview/containers/</a></i>
<br><br>
<b>Additional Notes and Resources</b>
<ul>
<li><a href="https://azure.microsoft.com/mediahandler/files/resourcefiles/container-security-in-microsoft-azure/Open%20Container%20Security%20in%20Microsoft%20Azure.pdf">Container Security in Microsoft Azure - August 2018</a></li>
<li><a href="https://docs.microsoft.com/en-us/azure/aks/faq">AKS FAQ</a></li>
<li>Azure automatically applies security patches to the nodes in your AKS cluster on a nightly schedule. However, you are responsible for ensuring that nodes are rebooted as required.</li>
<li>You can connect AKS to ACI, and use Kubernetes to handle orchestration and scale.</li>
<li>Docker Swarm and DC/OS will no longer supported as orchestrators on Azure and will be depreciated in Jan 2020.</li>
</ul>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-9162894570347630672018-12-31T13:08:00.002-05:002020-02-03T23:05:08.907-05:00Networking Part IV: Scenario based understanding of the 7 layers of the OSI ModelThis is part 4 of a series of networking posts:<br />
<ul>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-i-binary.html">Part 1: Binary</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-ii-hexadecimal.html">Part 2: Hexadecimal</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iii-networking-101.html">Part 3: Networking 101 (IP addresses, subnets, etc.)</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iv-scenario-based.html">Part 4: Scenario based understanding of the 7 layers of the OSI Model</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-v-azure-networking.html">Part 5: Azure Networking Foundations - VNet, Subnet, Security, and Connectivity</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-vi-azure-networking-vms.html">Part 6: Azure Networking - VMs, IP Addresses, and Load Balancing</a></li>
</ul>
<b><span style="font-size: large;">What is the OSI model?</span></b><br />
OSI stands for Open Systems Interconnection and it was developed in 1974 by the International Organization of Standardization (ISO). It is a 7 layer architecture with each layer having specific functionality to perform in order to transmit data from one server to another.<br />
<br />
<b><span style="font-size: large;">What does it look like?</span></b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU7t9jSglwTEcuu7-B_spaPHA7P9Rdqd1C7mg-SvqjkRP20w1jkbX7qAWGhFAHVQtyeCNxy3VhUndzEPDrsVkPFFA_pmNNTjpnksKQQhx9PzSzcK5lo9murbaObHdY5E32jnzc5EaGNgcb/s1600/computer-network-osi-model-layers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="638" data-original-width="781" height="521" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU7t9jSglwTEcuu7-B_spaPHA7P9Rdqd1C7mg-SvqjkRP20w1jkbX7qAWGhFAHVQtyeCNxy3VhUndzEPDrsVkPFFA_pmNNTjpnksKQQhx9PzSzcK5lo9murbaObHdY5E32jnzc5EaGNgcb/s640/computer-network-osi-model-layers.png" width="640" /></a></div>
<span style="font-size: x-small;"><i>Image Reference: https://www.geeksforgeeks.org/layers-osi-model/</i></span><br />
<br />
<b><span style="font-size: large;">tl;dr Google Request Scenario</span></b><br />
<b>Part 1 (on your local laptop): </b>When you request Google from a browser: The browser creates a GET request. The Presentation layer encodes it to HTTP/S. Session layer opens a connection from you and the server. The GET request gets put into a TCP packet. Then the Network layer figures out the next IP it needs to send it to, in this case your router. The Data link (my computer's Network Interface Card = NIC) converts it to electrical signals. The Physical layer transmits the TCP packet over the air from my computer to the router over WiFi (or to your router via a physical wire if you set that up).<br />
<br />
<b>Part 2 (on your router):</b>When the router receives the TCP packet, it's over the WiFi Physical layer (<i>most routers today have WiFi built it, however it used to be a separate box</i>). Then it has to translate this Physical layer from electrical signals (Physical) into bits (Network) with the router's NIC. Then the Network layer (router) figures out based on the destination IP address where to send it to next. It transfers the data back into electrical signals and sends it out the physical cable to your cable company and onwards.<br />
<br />
<br />
<b><span style="font-size: large;">Long Explanation of Scenario and Layers:</span></b><br />
There are apps an end-user can utilize that will work at the <b>Application layer</b>. As an end-user you only see the interface Edge. The app itself, such as Edge, can utilize for example .NET Framework's HttpClient in order to work with the networking <b>Application layer</b>. (other browsers and things have other development frameworks that can work with the Application layer).<br />
<br />
I want to access https://www.google.com from Edge so this sends a GET request. All GET/PUT/POST/PATCH/DELETE requests are at the <b>Application layer </b>and are HTTP protocols. <br />
<br />
You need to download the HTML for the page google.com, so Edge opens a <b>Session </b>and requests and start downloading the HTML page in chunks.<br />
<br />
Presentation layer converts chunks of data from a network format to an application format, and vice versa. The <b>Presentation</b> layer takes care of encryption/decryption of the file, and combining chunks of the file as it comes through.<br />
<br />
There are multiple cycles of going through the <b>software layers</b>.<br />
<br />
The <b>Transport</b> <b>layer </b>is a connection between two servers, so in this case, your computer to Google's servers. <b>Transport layer</b> protocols are Transmission Control Protocol (TCP), User Datagram Protocol (UDP). TCP provides apps a way to deliver (and receive) an ordered and error-checked stream of information packets over the network. TCP is slower due to its error checking and needed if you want to ensure things (like files) are delivered without issues/errors. The User Datagram Protocol (UDP) is used by apps to deliver a faster stream of information by doing away with error-checking. This is used more often for video streaming or gaming where you need faster speed/performance and can handle a little bit of errors.<br />
<br />
The <b>Network</b> <b>layer</b> is IP and handles routing packet. A packet is a chunk of data. It will route data based on logical addressing. Routers are part of the <b>Network layer </b>because when you send something, there are multiple hops it must make, so the network layer handles determining which path the data should take (which hops to do) based on network conditions, service priority, and more. if there are traffic issues it can also handle switching and re-routing packets.<br />
<br />
The <b>Data Link layer </b>will translate the <b>Physical to the Network layer </b>(Network layer = electrical representation of data like bit patterns, encoding, and tokens). The Network Interface Card (NIC) works at this layer.<br />
<br />
The <b>Physical Layer</b> is entirely hardware over a physical medium and connects computers via a physical link. It defines how a cable can attach to a Network Interface Card (NIC) by determining the number of pins a connector will have and the functionality. This can either be wired or wireless (Wi-Fi).Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-44181735745538197942018-12-10T22:45:00.001-05:002020-02-03T23:05:04.297-05:00Networking Part III: Networking 101This is part 3 of a series of networking posts:<br />
<ul>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-i-binary.html">Part 1: Binary</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-ii-hexadecimal.html">Part 2: Hexadecimal</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iii-networking-101.html">Part 3: Networking 101 (IP addresses, subnets, etc.)</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iv-scenario-based.html">Part 4: Scenario based understanding of the 7 layers of the OSI Model</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-v-azure-networking.html">Part 5: Azure Networking Foundations - VNet, Subnet, Security, and Connectivity</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-vi-azure-networking-vms.html">Part 6: Azure Networking - VMs, IP Addresses, and Load Balancing</a></li>
</ul>
If you know nothing or very little about networking, here are the basics! I am coming from a developer background and needed to learn this, so wanted to share from my perspective a 101 level breakdown of networking.<br />
<b><br /></b>
<b>What is a computer network?</b><br />
A computer network is 2 or more computers that communicate with each other via some medium-- this medium can be anything (radio waves, wires, infrared, optical fibers, or others!).<br />
<b><br /></b>
<i>A network interface card (NIC) allows you to connect to a computer network.</i><br />
<b><br /></b>
<b>What is a Network Interface Card (NIC)?</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.cozlink.com/image//article_img/nic-card-network-interface-card.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="501" data-original-width="692" height="231" src="https://www.cozlink.com/image//article_img/nic-card-network-interface-card.png" width="320" /></a></div>
<br />
A NIC is a piece of hardware that connects to a motherboard, and will connect the computer to a network. The CPU will hand it data. The NIC takes the data from the computer, translates the CPU's parallel data into a linear form that can be sent via cables, and vice versa from data coming from the cables into the CPU. A NICs can connect to several different networks at the same time and manage which data goes to which network.<br />
<br />
Network Interface Cards have a lot of other names, but they are are describing the same piece of hardware:<br />
<br />
<ul>
<li>Network Interface Controller (NIC)</li>
<li>Network Card</li>
<li>Network Adapter</li>
<li>Network Adapter Card (NAC)</li>
<li>LAN Card</li>
<li>LAN Adapter</li>
<li>Physical Network Interface</li>
</ul>
<i>Each Network Interface Card (NIC) gets an IP addressed assigned to it, which is the identifier of that device.</i><br />
<div>
<br /></div>
<b>What is an IP Address (IPv4)?</b><br />
4 numbers (each between 0-255), separated by periods. The lowest IP address is 0.0.0.0 and the highest is 255.255.255.255.<br />
<br />
<b>What does binary have to do with IP addresses </b><b>(IPv4)</b><b>?</b><br />
Each of these decimal numbers is called an octet (127, 16, 254, and 1 as shown below). There are 4 octets in an IP address. Each octet contains 8 bits and can be represented in binary. Take note that there are 32 bits, as we will talk about this more in subnetting.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSkRMtOz9fFt8Am-_1mRnXMMyHBb-JHjPFnIARrG8rLstNl7IXBR-xo1MAsFOLYtleVSbZ4SI4pd-uTkEWiZMnCFpv4-FvoMqvCRnkACrOQOgqhVGAWL9B9gnb4ehjOktypLPJSI0pFR8s/s1600/2018-12-10_19-23-50.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="419" data-original-width="919" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSkRMtOz9fFt8Am-_1mRnXMMyHBb-JHjPFnIARrG8rLstNl7IXBR-xo1MAsFOLYtleVSbZ4SI4pd-uTkEWiZMnCFpv4-FvoMqvCRnkACrOQOgqhVGAWL9B9gnb4ehjOktypLPJSI0pFR8s/s400/2018-12-10_19-23-50.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
There is a <b>network portion</b> and a<b> host portion</b> of an IP address. There are different options for how much of a network/host ratio that you would like which depends on how many IP addresses you need to have available, we will talk more on this later.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJJ_XuHkY41wiSZbON-tL8jY6kgBqrbjoGuSh15QmiIUNtMH7NP3waPyeB55Pz7iWTOqEMn4IGuMBMel-o9Udjxpf1xm3rIOi4Nzdc7EVvrI6yC-wXiy2MDuEOBXtPxUjj70aV-XfSwtwC/s1600/2018-12-10_19-11-46.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="317" data-original-width="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJJ_XuHkY41wiSZbON-tL8jY6kgBqrbjoGuSh15QmiIUNtMH7NP3waPyeB55Pz7iWTOqEMn4IGuMBMel-o9Udjxpf1xm3rIOi4Nzdc7EVvrI6yC-wXiy2MDuEOBXtPxUjj70aV-XfSwtwC/s1600/2018-12-10_19-11-46.jpg" /></a></div>
<br />
The network portion identifies a group of devices. The host portion is the individual device on that specific network.<br />
<br />
<ul>
<li>You can have a zipcode 11111 and address 345 Cave Stone Road, you have identified one specific house. If you go to another zip code 22222, there may be another yet different specific house at 345 Cave Stone Road. <i>The zip code is the network portion of an IP address. The actual house's address is the host portion of an IP address.</i></li>
</ul>
<i>The amount of the IP address that is network or host portion depends on the subnet mask...</i><br />
<i><br /></i>
<b>What is a subnet mask (netmask)?</b><br />
The subnet mask separates the <b>network</b> and <b>host portions</b> of an IP address an determines how many total addresses we have internally to use (# of host addresses).<br />
<br />
<b>Subnet mask (netmask) shorthand:</b><br />
<br />
<ol>
<li>We have an IP address of 201.0.10.10 (or any other IP address, the value of this is irrelevant and just used as an example)</li>
<li>Let's say our subnet mask is 255.255.255.0</li>
<li>In binary, this would be converted to <b>11111111 11111111 11111111</b> 00000000</li>
<li>In all IP addresses, we have 32 bits that could be changed, because there are 4 sets of 8 bits, as seen above. </li>
<li>Wherever there is a 1 in our subnet mask in binary, this is our network portion.</li>
<li>This means that the network portion is the first <b>24 bits</b>. </li>
<li>Using CIDR (Classless Inter-Domain Routing), we could say this is a <b>/24</b> length of the network prefix. </li>
<li>We can now write this IP address and subnet mask as <b>201.0.10.10/24</b></li>
</ol>
<div>
If we were to look at the photo below where the IP address is 16.1.1.1, let's solve for the CIDR subnet value. Remember that in 255 in decimal is 11111111 in binary and 0 is 0. If we have 255.0.0.0 as our subnet, this converts to <b>11111111 </b>00000000 00000000 00000000. The network portion is 8 bits. So it would be /8. What are the other two IP addresses CIDR values? See below the photo for the solution. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_zxLX3384Q_up1c1Pb-1XqR1ycvVUUqIcrQcvy_07oOYAOECWIb5lsTATEa3yHkJFvfnklIyYYPYmGL6Il-i-TI3xnjzUBTASUwhvR7wC52wBcNhi-wWiBXv-8ic6WPeGRfWhi3isdBRF/s1600/2018-12-10_19-12-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="311" data-original-width="432" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_zxLX3384Q_up1c1Pb-1XqR1ycvVUUqIcrQcvy_07oOYAOECWIb5lsTATEa3yHkJFvfnklIyYYPYmGL6Il-i-TI3xnjzUBTASUwhvR7wC52wBcNhi-wWiBXv-8ic6WPeGRfWhi3isdBRF/s320/2018-12-10_19-12-04.jpg" width="320" /></a></div>
<div>
<ul>
<li>For the IP address 16.1.1.1, our subnet is /8</li>
<li>For the IP address 132.147.1.1, our subnet is /16</li>
<li>For the IP address 221.138.62.1, our subnet is /24</li>
</ul>
</div>
<b>How does this relate to how many IP addresses I get?</b><br />
Let's go through a scenario where my network is 210.10.10.0/24<br />
<br />
<ol>
<li>If my subnet is /24, then I have 24 bits as my network portion and 8 bits that are my host portion. </li>
<li>8 bits can hold 2^8 values. </li>
<li>There are 256 total addresses in my network. </li>
<li>To get the total usable addresses you subtract 2 because there are 2 "special" addresses that cannot be used. To be specific in this example: 210.10.10.0 cannot be used because it is the zero address and 210.10.10.255 cannot be used because it is the broadcast address. </li>
<ol>
<li><i>The zero address cannot be used because it is used to specify a network without specifying a host. The broadcast address is to s used to broadcast a message to every host on a network.</i></li>
</ol>
<li>For a subnet of /24, the total usable addresses now becomes 254.</li>
</ol>
Let's go through a scenario where my network is 210.10.10.0/8<br />
<ol>
<li>If my subnet is /8, then I have 8 bits as my network portion and 24 bits that are my host portion. </li>
<li>24 bits can hold 2^24 values. </li>
<li>There are 16,777,216 total addresses in my network. </li>
<li>To get the total usable addresses you subtract 2 because there are 2 "special" addresses that cannot be used. To be specific in this example: 210.0.0.0 cannot be used because it is the zero address and 210.255.255.255 cannot be used because it is the broadcast address. </li>
<ol>
<li><i>The zero address cannot be used because it is used to specify a network without specifying a host. The broadcast address is to s used to broadcast a message to every host on a network.</i></li>
</ol>
<li>For a subnet of /8, the total usable addresses now becomes 16,777,214.</li>
</ol>
The higher the number for your subnet, the less IP addresses you get. A /24 will have much less IP addresses than a /8, as seen above.<br />
<br />
<div>
<b>What if the subnet isn't a nice number like 255 or 0?</b></div>
<div>
If you network IP address is: 210.10.10.0/23. </div>
<div>
<br /></div>
<div>
We have 23 bits in the network and 9 bits in the host. </div>
<div>
<div>
/23 in binary is (twenty-three 1's):</div>
<div>
<span style="background-color: #cc0000;">11111111 11111111 1111111</span><span style="background-color: yellow;">0 00000000</span></div>
<div>
<br /></div>
<div>
/23 in decimal is:</div>
<div>
255.255.254.0</div>
</div>
<div>
<br /></div>
<div>
<ol>
<li>If my subnet is /23, then I have 23 bits as my network portion and 9 bits that are my host portion. </li>
<li>9 bits can hold 2^9 values. </li>
<li>There are 512 total addresses in my network, minus the 2 "special" addresses you get 510 as the total usable addresses. </li>
<li>To get the values of the usable addresses, see below:</li>
</ol>
<ul><ul>
<li><div>
<div>
210.10.10.0 converted to binary is below. The first 23 digits (due to /23 subnet) are the network and the last 9 are the network:</div>
<div>
<span style="background-color: #cc0000;">11010010 00001010 0000101</span><span style="background-color: yellow;">0 00000000</span></div>
</div>
<div>
<span style="background-color: #cc0000;">network portion</span> <span style="background-color: yellow;">host portion</span></div>
<div>
<span style="background-color: #cc0000;"><i></i></span></div>
<div>
<span style="background-color: white;"><i>"The unusable zero address is where the host portion (yellow highlight) is all 0's. The unusable broadcast address is where the host portion (yellow highlight) is all 1's."</i></span></div>
<div>
<span style="background-color: #cc0000;"><br /></span></div>
<div>
<span style="background-color: #cc0000;">11010010 00001010 0000101</span><span style="background-color: yellow;">0 00000000</span> = host address = 210.10.10.0</div>
<div>
<span style="background-color: #cc0000;">11010010 00001010 0000101</span><span style="background-color: yellow;">1 11111111</span> =broadcast address = 210.10.11.255</div>
</li>
<li>To be specific in this example: 210.10.10.0 cannot be used because it is the zero address and 210.10.11.255 cannot be used because it is the broadcast address. </li>
</ul>
</ul>
</div>
<div>
<div>
<br /></div>
</div>
<div>
Here are some more subnets and examples:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXuH3Np1EBuLm-KsI-5ZAkuxgDjpED95IIwVS0rR93Wp9_DdC9cyUnRHJf4DSejO_Qofi-4gnzhJnR67aqfm9y9MB87Q1DKQ4iIJG2W2nRgOMxk2uuOtfclLU3wCaKZrsDQypg_gFR5Lsn/s320/ips.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="320" data-original-width="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXuH3Np1EBuLm-KsI-5ZAkuxgDjpED95IIwVS0rR93Wp9_DdC9cyUnRHJf4DSejO_Qofi-4gnzhJnR67aqfm9y9MB87Q1DKQ4iIJG2W2nRgOMxk2uuOtfclLU3wCaKZrsDQypg_gFR5Lsn/s320/ips.bmp" /></a></div>
<div>
<br /></div>
<b>Big Picture: What is IPv4 vs. IPv6?</b><br />
IPv4 stands for Internet Protocol version 4 and what we have been talking about above in this article (everything above related to IPv4 only). IPv4 uses 32 bits for its Internet addresses (which we mentioned), and can allow for 2^32 IP addresses total (4.29 billion). However, all of these 4.29 billion are assigned and we have run out. IPv6 is the sixth revision to the Internet Protocol and the successor to IPv4, and it is 128-bit addresses so 2^128 addresses (a lot more than 4.29 billion). IPv6 is based on the hexadecimal system.<br />
<br />
<b>Why don't we all just go do IPv6 now?</b><br />
Only a small fraction of the web has switched over to the new protocol, Azure and other cloud providers are still mostly utilizing IPv4. Also, exchanging data between IPv4 and IPv6 requires special gateways which makes it hard to support only partially moving over to the new protocol, and most companies have legacy systems, software, and networking-- so it could be awhile.<br />
<br />
Checkout these news articles to see the progress so far:<br />
<br />
<ul>
<li><a href="https://arstechnica.com/information-technology/2016/01/ipv6-celebrates-its-20th-birthday-by-reaching-10-percent-deployment/">IPv6 celebrates its 20th birthday by reaching 10 percent deployment - Jan 3, 2016</a></li>
<li><a href="https://www.networkworld.com/article/3278256/internet/isoc-ipv6-usage-still-growing-after-six-years-on-the-march.html">6 years on, IPv4 still dominates IPv6 - June 6, 2018</a></li>
</ul>
<br />
<b>What is a reserved IP address?</b><br />
There are some IP addresses that you cannot use because they are not allowed to be used by the Internet Engineering Task Force (IETF) and the Internet Assigned Numbers Authority (IANA). See a list of reserved IP addresses and what they are each set is reserved for on <a href="https://en.wikipedia.org/wiki/Reserved_IP_addresses">Wikipedia here</a>.<br />
<br />
<b>Recommended Networking PluralSight Course:</b><br />
If you do happen to own a PluralSight subscription about 6 hours, this course is very in depth and well made:<br />
<ul>
<li>Part 1: <a href="https://app.pluralsight.com/library/courses/networking-cisco-ccna-200-125-100-105/table-of-contents">Introduction to Networking</a></li>
<li>Part 2: <a href="https://app.pluralsight.com/library/courses/network-layer-addressing-cisco-ccna-200-125-100-105/table-of-contents">Network Layer Addressing and Operation</a></li>
</ul>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-25043154184058045102018-12-10T15:31:00.004-05:002020-02-03T23:04:59.962-05:00Networking Part II: HexadecimalThis is part 2 of a series of networking posts:<br />
<ul>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-i-binary.html">Part 1: Binary</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-ii-hexadecimal.html">Part 2: Hexadecimal</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iii-networking-101.html">Part 3: Networking 101 (IP addresses, subnets, etc.)</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iv-scenario-based.html">Part 4: Scenario based understanding of the 7 layers of the OSI Model</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-v-azure-networking.html">Part 5: Azure Networking Foundations - VNet, Subnet, Security, and Connectivity</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-vi-azure-networking-vms.html">Part 6: Azure Networking - VMs, IP Addresses, and Load Balancing</a></li>
</ul>
<br />
Binary is base 2, where base 2 means that and can only hold the values of 0 or 1 for a digit.<br />
<br />
Hexadecimal is base 16. Base 16 means that up to 16 different values in any given placeholder. The values 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F are the potential values for a digit in hexadecimal. Notice the pattern below between binary, decimal, and hexadecimal.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://slideplayer.com/slide/5870246/19/images/24/Binary+Decimal.+Hexadecimal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="480" src="https://slideplayer.com/slide/5870246/19/images/24/Binary+Decimal.+Hexadecimal.jpg" width="640" /></a></div>
<i>Reference: https://slideplayer.com/slide/5870246/19/images/24/Binary+Decimal.+Hexadecimal.jpg</i><br />
<br />
The benefit of hexadecimal is that 4 binary bits can always be expressed in 1 hexadecimal value. Hexadecimal makes it easier to read and write large binary numbers.<br />
<br />
Where is hexadecimal used?<br />
<br />
<ul>
<li>MAC addresses (on your router!)</li>
<li>Error codes on Windows blue screens in the older days (STOP codes specifically)</li>
<li>HTML color codes (#33CCFF)</li>
</ul>
Fun fact: Four bits is called a <i>nibble.</i><br />
<i><br /></i>
If you want to see a cool article I like a lot that has more info, go <a href="https://medium.com/@savas/why-do-we-use-hexadecimal-d6d80b56f026">here</a>!Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-75927110588627237252018-12-04T00:00:00.001-05:002020-02-03T23:04:36.956-05:00Networking Part I: BinaryThis is part 1 of a series of networking posts:<br />
<ul>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-i-binary.html">Part 1: Binary</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-ii-hexadecimal.html">Part 2: Hexadecimal</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iii-networking-101.html">Part 3: Networking 101 (IP addresses, subnets, etc.)</a></li>
<li><a href="http://www.crystaltenn.com/2018/12/networking-part-iv-scenario-based.html">Part 4: Scenario based understanding of the 7 layers of the OSI Model</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-v-azure-networking.html">Part 5: Azure Networking Foundations - VNet, Subnet, Security, and Connectivity</a></li>
<li><a href="http://www.crystaltenn.com/2019/01/networking-part-vi-azure-networking-vms.html">Part 6: Azure Networking - VMs, IP Addresses, and Load Balancing</a></li>
</ul>
This is a diagram to explain binary in as quick and efficient of a way as I could think of:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDhi6OXlITFFOkgum-B-CuEtw0AAz-OA36lbskjRs6JbWGD5W0hP3Ea-WrZjjJ_N1ocp7VVSSFUNFa-y050d2cuOHe1kO0l77FtqujQR7HaG8Po4d8s926U8t9pSueIUD8tD9DY5g3WN-y/s1600/Binary2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="586" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDhi6OXlITFFOkgum-B-CuEtw0AAz-OA36lbskjRs6JbWGD5W0hP3Ea-WrZjjJ_N1ocp7VVSSFUNFa-y050d2cuOHe1kO0l77FtqujQR7HaG8Po4d8s926U8t9pSueIUD8tD9DY5g3WN-y/s1600/Binary2.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Networking 101 coming up next!Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-40357822054396962018-04-25T14:08:00.000-04:002018-04-25T14:08:00.336-04:00A year at Microsoft & what I've been up to & travel tipsI crossed my one-year mark at Microsoft a couple of months ago, and it's been a fun time! <br />
<br />
I work as a Premier Developer Consultant, so we typically take on short-term work where we help a customer out with something small like a proof of concept, code review, or workshop on specific technologies we choose to specialize in. We can choose any technology to specialize in (keeping in mind, certain technologies are more in demand than others and we do have to spend a certain amount of hours a year working with customers). I ended up choosing Blockchain, Containers, Azure App Services, and VSTS/DevOps as my main areas.<br />
<br />
I swear I haven't disappeared, I have been doing some posts to MSDN and you can see my blog posts here: <a href="https://blogs.msdn.microsoft.com/premier_developer/tag/crystal-tenn/">https://blogs.msdn.microsoft.com/premier_developer/tag/crystal-tenn/</a> (some of these are replicated on my blog, some are not!)<br />
<br />
I created on a<b> full tutorial for Azure App Services</b>. This is a step by step, with screenshots, tutorial of how to create a Web App, API App, and Azure SQL DB in Azure and to deploy each piece.. plus how to do the CI/CD (Build and Release) from VSTS to your Azure resources (full blog post on this to come soon): <a href="https://github.com/catenn/ToDoList">https://github.com/catenn/ToDoList</a><br />
<br />
Also really cool, Michael Crump helped bring some folk to the ToDoList tutorial by posting on his blog Azure Tips and Tricks: <a href="https://www.michaelcrump.net/azure-tips-and-tricks101/">https://www.michaelcrump.net/azure-tips-and-tricks101/</a> Thanks Michael!!!<br />
<br />
And lastly, I worked on a Blockchain project with my colleague here, if you want to see a full s<b>tep by step on setting up a Blockchain app</b> that keeps track of Wikipedia changes go here: <a href="https://github.com/razi-rais/eth-wikipedia-changetracker">https://github.com/razi-rais/eth-wikipedia-changetracker</a><br />
<br />
<b>Now, talking about travel: </b>I've been to so many places as a traveling Consultant, and eaten as much food as I could get my grubby hands on in each city. This year, for onsite work visits I have been to: Alpharetta, Las Colinas, Minneapolis, Philly, Phoenix, Seattle, Burbank, NYC, DC, Ottawa, Miami, Austin, Orlando, Lake Mary, and Portland. <br />
<br />
<h3>
Travel tips:</h3>
<br />
<ul>
<li>If you hate cold, buy an electrically heated jacket! Mine is called: "Ororo Heated Jacket" and it was from Amazon, they have it for both men and women. TSA is okay with it as long as you tell them ahead of time what it is or can explain it if they ask about it.. wired jackets, I'm sure, look a little scary under the scanner. </li>
<li>If you hate dealing with luggage, buy an Underseater. I bought this one, it fits under every seat (aisle, middle, window) on Southwest, United, Delta, and American Airlines as long as you only pack it 80% full. I can get 2 laptops (MSI gaming + surface), tablet, 4 days of clothes, and all toiletries into this: <a href="http://a.co/3BYqnmH">http://a.co/3BYqnmH</a> </li>
<li>Airline rewards are a joke. You'll be lucky if you can take 20 trips and get 1 free one for vacation out of it, buying airline tickets from work are severely discounted (half what you pay for personal flights), and don't add up to much. Better seats are kinda worth it, maybe, if you need to bring luggage. If you get an "underseater" bag like mentioned above, you never need to worry about overhead space anyways. You are probably better off taking different airlines to get non-stop flights than trying to get rewards out of one airline taking you a long roundabout way. I think my time is worth more than their terrible rewards points that net very little. </li>
<li>Renting a car is a pain, it takes 30 minutes sometimes to take a tram/walk from the airport gate to the rental car center. Take uber/lyft/cabs to save time. </li>
<li>Hotel rewards are baller, and my goodness you can rack up points fast. If you get the credit card too, oh my gosh, hello free hotels for every vacation!</li>
<li>Hotel points go on sale and you can catch them on Slickdeals sometimes. These are worth buying when you can get them 30% off. You can also use hotel points to get hotels that are priced at a premium due to an event because while the $ amount goes up, the points value always stays the same. </li>
<li>Marriott has the best Wi-Fi speeds, period, hands down. I've gotten so many Marriotts (ranged from low budget to nicer ones) with 10-80mb/s down and up speeds and played DOTA 2 on it happily <b>on the free Wi-Fi, not even paying for the "good" Wi-Fi</b>. Hyatt's Wi-Fi sucks, forget playing games online you usually get .1-2mb/s up and down. Crowne Plaza Wi-Fi ain't bad. I don't know about Hilton, never really stay there, but I think that is the only chain that allows pets. </li>
<li>Airport food sucks 95% of the time. Same for the food in hotels. Local food tastes the best. Chain food is the safest and least likely to mess up your stomach. </li>
</ul>
<br />
<br />
<br />Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-69513769567026721602017-08-04T17:22:00.001-04:002017-08-04T17:22:25.691-04:0070-534 Azure Certification Study Guide + Tips<div style="border-width: 100%; direction: ltr;">
<div style="direction: ltr; margin-left: 0in; margin-top: 0in; width: 8.6416in;">
<div style="direction: ltr; margin-left: 0in; margin-top: 0in; width: 8.6416in;">
<div style="border-width: 100%; direction: ltr;">
<div style="direction: ltr; margin-left: 0in; margin-top: 0in; width: 5.3125in;">
<div style="direction: ltr; margin-left: 0in; margin-top: 0in; width: 5.3125in;">
<div style="border-width: 100%; direction: ltr;">
<div style="direction: ltr; margin-left: 0in; margin-top: 0in; width: 6.4333in;">
<div style="direction: ltr; margin-left: 0in; margin-top: 0in; width: 6.4333in;">
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
Hi there!</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<span style="font-size: 14.6667px;">I just passed my Azure cert 70-534 and wanted to share my study guide. </span><span style="font-size: 14.6667px;">Please <a href="https://drive.google.com/file/d/0B9woJn6O0dPXQmtKSXl0bExFMzg/view?usp=sharing"><b>click here </b></a>to see my guide. It is a 35 page long PDF. I basically took the outlined points from the official Azure exam outline and added in notes between them. Most of the notes are copy pastes of relevant information from the Azure documentation. The notes from the Azure documentation and outline from the Azure exam are current as of August 2017 -- so take note that if you are reading this a year out that some of the exam has probably changed. </span></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<span style="font-size: 14.6667px;"> Please also utilize the Measure Up 70-534 practice exam along with studying </span><span style="font-size: 14.6667px;">+ doing things on Azure</span><span style="font-size: 14.6667px;">.</span></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<br /></div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
Notes after taking
exam, I think that you should… </div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know the difference between
page and block blobs.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know when to use A series, D
series, DS series, G series, GS series VMs and approximate size/RAM</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know ARM templates very well
and the pieces in it</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know a lot of Azure AD stuff</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know security stuff for DBs,
VMs, other Azure resources etc.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know on-premises &
communicating with Azure</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know Traffic manager and CDNs
very well</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know Federated Stuff</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know Azure Batch.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Know what Chef or Data Lakes
or all these other technologies do at a basic level. </span></li>
</ul>
<div>
<span style="font-family: Calibri;"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div>
<span style="font-family: Calibri;"><span style="font-size: 14.6667px;">General Exam Observations</span></span></div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">I had about 2 hours and 45
mins (I think, it was definitely between 2.5-3 hours) for the exam, 50-60
questions total</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">I had 4 cases + the rest were
multiple choice (31 multiple choice)</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">There are a lot of stupid
multi-part questions, usually if it's a 3 part answer each part is scored
individually.</span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">There are a good amount of
"order the steps to do such task" with 3-5 steps in it, no idea
how this is scored. </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Small amount of Azure CLI /
Portal / Powershell / C# specific questions, I think about 5 total. </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">I had about 1.5 hour to spare
at the end, after obsessively slowly double checking everything. Might be
unfair though, was a med student so I take exams extremely, extremely
quickly. I did not feel any time rush at all. </span></li>
</ul>
<div>
<span style="font-family: Calibri;"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div>
<br /></div>
</div>
</div>
</div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</div>
</div>
</div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
</div>
</div>
</div>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-1734040809475427222017-07-17T02:56:00.003-04:002021-10-20T10:57:56.102-04:00What do I do, how do I start? Guide to being a C# web developer.<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKjk3Sz77wq2gBPb6EtgshlxmTDDbT1_90K7IkEDpfOSAe9qig9aLDTKlj2CDOgTWWTE9-wd_sj0tVZnnn1xVZxT71Oly1_iV76pEpsxl2367C0fNysO9VXstRbOxPxj2IrMtXkZoFcmOj/s1600/goals-you-gotta-start-somewhere-17783858.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="464" data-original-width="500" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKjk3Sz77wq2gBPb6EtgshlxmTDDbT1_90K7IkEDpfOSAe9qig9aLDTKlj2CDOgTWWTE9-wd_sj0tVZnnn1xVZxT71Oly1_iV76pEpsxl2367C0fNysO9VXstRbOxPxj2IrMtXkZoFcmOj/s320/goals-you-gotta-start-somewhere-17783858.png" width="320" /></a></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Welcome to the “</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">What do I do, how do I start?”</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> relatively all encompassing guide to becoming a C# web developer.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These are very solid step by step directions. Use it as you wish and feel free to sub out whatever. I figured it is easier for someone in the industry to give advice having done it than for someone to try to guess what they need to do. This kinda pairs up with my C# study guide in another blog post. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Completing the entire guide will cost you $30 for a month subscription on one JavaScript website.. And everything else on here is all free applications and materials to learn. You can sub out that JavaScript section for free materials too if you really want to do it all for free, but that site is just awesome and interactive and worth it. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Preview/Notice/Disclaimer/Stuff: </span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 8pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 8pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Everything without “optional” you really, really need to know to be a web developer. Note there are obviously other tracks you could do like Java etc., this is just a specific set of steps to get to a specific job as a “C# full stack web developer”. I went in the order you should do everything, top down. A lot of getting an interview depends on on how well your resume is written, how well your cover letter is written, and what kinda of GPA/job experience (did you hold jobs for a long time? Did you have gaps between your jobs? etc.) you have and how consistent it is… also if you have a well written nice looking blog and if you have a GitHub with projects on it. Boring generic resumes and cover letters get thrown in the trash. You NEED to have a very powerful set of both. A lot of getting a job will be your people skills, communication skills, ability to show your understanding, breadth & depth in certain topics, and how well you know all the technologies they listed on the posting. I believe getting a job is more dependent on your competition and not you individually. </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 8pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 8pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I am biased in this guide and picked one option for technology / blog choice / IDEs. It is just easier this way and I don’t want to explain all of the options out there, this is a quick start guide. Also if I get questions from you, I can answer them because these are all things I have used / use currently. Yes, you can use Wordpress or Java etc. instead.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 8pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 8pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Yes you can do Mobile, Machine Learning, Desktop, or whatever else instead. I just am not one of those developers and cannot write you a guide for that. I have no idea what you need to know to get those kinds of jobs. Just writing about the area I know about. </span></div>
</li>
</ul>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open up accounts</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open a Blogger account</span></div>
</li>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Install SyntaxHighlighter to your Blogger http://alexgorbatchev.com/SyntaxHighlighter/integration.html</span></div>
</li>
</ol>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download software</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download Notepad++</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn HTML:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go to the following: http://www.htmldog.com/guides/html/</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Complete all of the Beginner tutorial section</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: blue; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">HW/Project</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: Create a sample website using Notepad++ about a Nintendo hero. Save it as a .HTML page. When you are viewing the file on your Windows Explorer, right click to see in a Browser to view as HTML and right click to Edit/View in Notepad++ to edit the HTML code. As you change HTML code in Edit mode you can hit save, then refresh your Browser viewing the HTML page to see the changes. </span></div>
</li>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Include a photo of the Nintendo hero, the name in bold, then a link from the hero’s name to any Nintendo hero guide, 3 paragraphs with random text, and a bulleted list of your favorite items/powerups/whatever to get on this hero. </span></div>
</li>
</ol>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Complete all of the Intermediate tutorial section</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: blue; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">HW/Project</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: From your previous HTML page, put your paragraphs inside of div tags and give them an ID or a class name. Make a short blog post about something you learned about in HTML, a screenshot of your HTML page, and use the syntax highlighter to post your HTML code online. </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Complete all of the Advanced tutorial section</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: blue; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">HW/Project</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: Make a blog post about how to target HTML to different versions of a browser and a few examples of when/why this would be very useful. </span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn CSS:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go to the following: </span><a href="http://www.htmldog.com/guides/css/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.htmldog.com/guides/css/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Complete all of the Beginner tutorial section</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: blue; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">HW/Project</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: Take that same HTML page you were working on before. Add style tags “<style>” inside of your “<head>” tag and add some global CSS to change the background color of the page. Add some inline CSS to change the colors of each paragraph to be different. </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Complete all of the Intermediate tutorial section</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: blue; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">HW/Project</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: Add the same class selector to each div holding a paragraph. Also give each div a unique ID. Add a background image of some pattern you can find on Google images. </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Complete all of the Advanced tutorial section (these are not as commonly used but you need to know the extent of what CSS can do so make sure you read through all of it and try a few things out in your sample html page)</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn Twitter Bootstrap:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go to the following: </span><a href="http://getbootstrap.com/2.3.2/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://getbootstrap.com/2.3.2/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Use this as a reference: </span><a href="https://www.w3schools.com/bootstrap/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.w3schools.com/bootstrap/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Read through these pages: </span><a href="https://www.tutorialspoint.com/bootstrap/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.tutorialspoint.com/bootstrap/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn about Responsive Web design: </span><a href="https://www.w3schools.com/html/html_responsive.asp" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.w3schools.com/html/html_responsive.asp</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build yourself a responsive webpage using Bootstrap, with just HTML and CSS. You should be able to shrink down your page to mobile size and it still looks decent.</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download software</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download Visual Studio Code. This is an IDE: </span><a href="http://searchsoftwarequality.techtarget.com/definition/integrated-development-environment" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://searchsoftwarequality.techtarget.com/definition/integrated-development-environment</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This is for front end code only (HTML, CSS, and JavaScript) AKA client side. You would use this for making front end only projects or if you were to break your project up into a front or back end portion. Code is a much more lightweight program and often more liked that the full Visual Studio, it is much quicker. </span></div>
</li>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Read about server side vs client side code: </span><a href="https://softwareengineering.stackexchange.com/questions/171203/what-are-the-differences-between-server-side-and-client-side-programming" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://softwareengineering.stackexchange.com/questions/171203/what-are-the-differences-between-server-side-and-client-side-programming</span></a></div>
</li>
</ol>
</ol>
<b style="font-weight: normal;"><br /></b><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn JavaScript:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go to the following: </span><a href="https://www.codeschool.com/learn/javascript" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.codeschool.com/learn/javascript</span></a></div>
</li>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: lower-alpha; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It used to be free long ago but it’s killer good site, it’s put out by PluralSight. It is $30 for a month. I would recommend paying this once and completing the full JavaScript course in a month. It is worthwhile and the only thing on my guide that will cost any money. Complete the </span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">5 JavaScript language </span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">courses and the </span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2 jQuery </span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">courses in one month and cancel your subscription. </span></div>
</li>
</ol>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">How to use Google Debugger</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Understand HTML and CSS in the Chrome Debugger: http://blog.teamtreehouse.com/tips-debugging-html-css</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">More HTML and CSS Chrome Debugger stuff: https://developer.chrome.com/devtools/docs/elements-styles</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go through this tutorial: https://developers.google.com/web/tools/chrome-devtools/javascript/</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download software</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download Visual Studio Community 2017. This can hold all of your code front and back end (HTML, CSS, JavaScript, C#, additonal frameworks, unit tests, connections to databases, config files, everything..). </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download Fiddler</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open up accounts</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open a Github account</span></div>
</li>
</ol>
<ol start="2" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open a Stackoverflow account</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn C#:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Start here: </span><a href="https://www.microsoft.com/net/tutorials/csharp/getting-started" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.microsoft.com/net/tutorials/csharp/getting-started</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go to the following: </span><a href="http://www.learncs.org/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.learncs.org/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go through all the exercises.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go to the following, you </span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">need</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to know all of these topics in order to do well long term with programming. It will be hard to fully understand until you start working, but conceptionally get as strong of a grasp as you can, then come back to this site and go over it again and again in your first year of dev. This site is very crucial and everything on it is important: </span><a href="https://www.tutorialspoint.com/csharp/index.htm" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.tutorialspoint.com/csharp/index.htm</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Try the Fizz Buzz problem:</span><a href="http://www.codekatas.org/casts/code-kata-fizzbuzz-csharp" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.codekatas.org/casts/code-kata-fizzbuzz-csharp</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go through other problems on this site:</span><a href="http://www.codekatas.org/casts/tagged/csharp" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.codekatas.org/casts/tagged/csharp</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Try these problems and understand how they work: </span><a href="http://www.c-sharpcorner.com/UploadFile/9582c9/basic-C-Sharp-programming-problem-and-solutions-part1/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.c-sharpcorner.com/UploadFile/9582c9/basic-C-Sharp-programming-problem-and-solutions-part1/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Optional, take a free Coursera course: </span><a href="https://www.coursera.org/learn/game-programming" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.coursera.org/learn/game-programming</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build a simple calculator with addition / subtraction / divison / multiplication and no order of operations. Then try it with order of operations.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Do the first 10 problems on Project Euler: </span><a href="https://projecteuler.net/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://projecteuler.net/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build yourself a small app that takes in multiple inputs from a user, utilizes a list internally, then will read off to the user from the list what numbers they entered. </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build a simple 2 player tic tac toe program. UI can just be console printing out ASCII characters. For ex. </span><a href="http://mmnaviwala.com/images/ttt_5.PNG" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://mmnaviwala.com/images/ttt_5.PNG</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Try to build an unbeatable tic tac toe program (1 player).</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn REST APIs: </span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn how to use Fiddler: </span><a href="http://www.asjava.com/tools/fiddler-tutorial-how-to-use-fiddler/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.asjava.com/tools/fiddler-tutorial-how-to-use-fiddler/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Read through this: </span><a href="https://www.tutorialspoint.com/restful/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.tutorialspoint.com/restful/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go through this site and video: </span><a href="http://www.restapitutorial.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.restapitutorial.com/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build something! Go through this tutorial: </span><a href="https://docs.microsoft.com/en-us/aspnet/web-api/overview/older-versions/build-restful-apis-with-aspnet-web-api" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://docs.microsoft.com/en-us/aspnet/web-api/overview/older-versions/build-restful-apis-with-aspnet-web-api</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build something! Go through this tutorial: </span><a href="https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn LINQ:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://www.tutorialspoint.com/linq/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.tutorialspoint.com/linq/</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn Unit Testing:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Just go through the basics: </span><a href="https://www.rhyous.com/programming-development/csharp-unit-test-tutorial/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.rhyous.com/programming-development/csharp-unit-test-tutorial/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://www.codementor.io/wbsimms/unit-testing-foundations-programming-beginners-du107q81d" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.codementor.io/wbsimms/unit-testing-foundations-programming-beginners-du107q81d</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Design Patterns:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn SOLID Principles:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://medium.com/@cramirez92/s-o-l-i-d-the-first-5-priciples-of-object-oriented-design-with-javascript-790f6ac9b9fa" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://medium.com/@cramirez92/s-o-l-i-d-the-first-5-priciples-of-object-oriented-design-with-javascript-790f6ac9b9fa</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">MVC: </span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://msdn.microsoft.com/en-us/library/dd381412(v=vs.108).aspx" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://msdn.microsoft.com/en-us/library/dd381412(v=vs.108).aspx</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn Gang of Four</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> (super optional, nice to have)</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: </span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; margin-left: 36pt; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">http://www.blackwasp.co.uk/gofpatterns.aspx</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn SQL:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Do this course: </span><a href="https://www.codecademy.com/learn/learn-sql" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.codecademy.com/learn/learn-sql</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Know these charts (this always comes up in interview + is important to understand): </span><a href="https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go through this website: </span><a href="https://www.w3schools.com/SQL/deFault.asp" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.w3schools.com/SQL/deFault.asp</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn Agile:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Look at this page, read all of the sections.. The links are in blue on the right side of the page: http://www.agilenutshell.com/</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn SDLC (Software Development Lifecycle):</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Watch this video: https://www.youtube.com/watch?v=kQPTB0ygYfY</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Learn how software is made: https://www.tutorialspoint.com/sdlc/sdlc_overview.htm</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Interview Practice Questions</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Study ALL of these. If you don’t know anything about any of the questions, go study all of it until you really understand it. Not joking, most of these will show up in an actual interview. Do not just memorize stuff, use it as your guide to learn all about these languages. </span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://a4academics.com/interview-questions/52-dot-net-interview-questions/417-c-oops-interview-questions-and-answers" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://a4academics.com/interview-questions/52-dot-net-interview-questions/417-c-oops-interview-questions-and-answers</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://www.tutorialspoint.com/csharp/csharp_interview_questions.htm" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.tutorialspoint.com/csharp/csharp_interview_questions.htm</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.c-sharpcorner.com/UploadFile/8ef97c/C-Sharp-net-interview-questions-and-answers/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.c-sharpcorner.com/UploadFile/8ef97c/C-Sharp-net-interview-questions-and-answers/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://career.guru99.com/top-50-c-sharp-interview-questions-answers/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://career.guru99.com/top-50-c-sharp-interview-questions-answers/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://career.guru99.com/top-50-sql-question-answers/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://career.guru99.com/top-50-sql-question-answers/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://www.toptal.com/sql/interview-questions" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://www.toptal.com/sql/interview-questions</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://career.guru99.com/top-50-csscascading-style-sheet-interview-questions/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://career.guru99.com/top-50-csscascading-style-sheet-interview-questions/</span></a></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://career.guru99.com/top-85-javascript-interview-questions/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://career.guru99.com/top-85-javascript-interview-questions/</span></a></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Read about the following so you know what they are </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">By this I mean spend 1-2 hours and summarize 3-4 sentences about each topics so you can at least intelligently speak about it if you hear it in an interview, on the job, talking with other developers, etc.. and so you have a background of what is upcoming and what development was like before. </span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">If any of these technologies are listed on the job description then definitely dig into it much more!!! </span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">General/new stuff</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">: ASP Core, Test driven development, Azure (web/worker roles, general technology offerings, how the cloud works), version-control like VSTS (Visual Studio Team Services) and TFS (Team Foundation Server), Node JS, Angular JS, React JS, Entity Framework Content Management System (CMS, like SiteFinity or SiteCore), Dependency Injection, Automated Testing, Performance Testing, know all the roles in a software team (Business Analyst, Quality Assurance Analyst, Project Manager, Database Administrator, Test Engineer)</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Legacy / “old” stuff:</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> WebForms, Access (the database), VB, VB.NET, F#, </span></div>
</li>
</ul>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">THESE MATTER!!! This will determine whether or not you get an interview. If you are applying to small places and not getting an interview, then work on making these better. </span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build a strong resume</span></div>
</li>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Explain on every job what the company does and what your role was as the first sentence</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Explain why your role was important and what you brought to the table</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Highlight your accomplishments</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Explain specific technologies / etc what you worked with (very industry specific and varies a lot depending on what kind of job it was)</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Do not make the text eensy weensy</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Get a good structure/format for your resume</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Put the months and years for everything</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Do not add colors or crazy designs. Clean, simple, black text, white backgrounds. People print resumes. People don’t want to run out of ink printing resumes. </span></div>
</li>
</ul>
</ul>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build a strong cover letter</span></div>
</li>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Write about why you care about working at this company at this position</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Write about why pick you</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Write about solid things and steps you have taken to be competent</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Write about your passion</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Thank them for their time and be very passionaite and positive about the whole process</span></div>
</li>
</ul>
</ul>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Practice Interview Skills</span></div>
<br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Confidence</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It’s good to say you don’t know and be honest when you don’t</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Questions are open ended, if you don’t know the answer then talk about what you do know about the technology</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Never interrupt the interviewer</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Explain things with a summary first, then dive deeper into what you know. Don’t go off on tangents. Learn to be able to explain anything well to a 5 year old.. If you can’t do that you aren’t explaining it well enough. You should always be able to tell a non-technical person what you are doing at a high level so they understand what is going on</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Always ask questions at the end about things that were said during the interview</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Always ask questions about the job in general so you understand exactly what you will be getting into and what it will be like to work for a certain company</span></div>
</li>
</ul>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-67646016505391252102017-07-15T15:22:00.001-04:002017-07-15T15:23:18.216-04:00Azure CLI 2.0 Reference Guide<div class="separator" style="clear: both; text-align: center;">
<a href="https://docs.microsoft.com/en-us/azure/storage/media/storage-azure-cli/azure_command.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="591" data-original-width="647" height="292" src="https://docs.microsoft.com/en-us/azure/storage/media/storage-azure-cli/azure_command.png" width="320" /></a></div>
<br />
<br />
Azure CLI 2.0 cheatsheet for Login, Resources, VMs, Resource groups, Storage, Batch, and Containers.<br />
<br />
---------------------------------------------------------------------------------<br />
LOGGING IN<br />
---------------------------------------------------------------------------------<br />
# Login with web<br />
az login<br />
<br />
# Login in CLI<br />
az login -u myemail@address.com<br />
<br />
<br />
---------------------------------------------------------------------------------<br />
LISTING LOCATIONS AND RESOURCES / GENERAL<br />
---------------------------------------------------------------------------------<br />
# List all locations<br />
az account list-locations<br />
<br />
# List all my resource groups<br />
az resource list<br />
<br />
# Get what version of the CLI you have<br />
azure --version<br />
<br />
# Get help<br />
azure help<br />
<br />
---------------------------------------------------------------------------------<br />
CREATING BASIC VM / RESOURCE GROUP / STORAGE ACCOUNT<br />
---------------------------------------------------------------------------------<br />
# Get all available VM sizes<span style="white-space: pre;"> </span><br />
az vm list-sizes --location eastus<br />
<br />
# Get all available VM images for Windows and Linux<br />
az vm image list --output table<br />
<br />
# Create a Linux VM<br />
az vm create --resource-group myResourceGroup --name myVM --image ubuntults<br />
<br />
# Create a Windows VM<br />
az vm create --resource-group myResourceGroup --name myVM --image win2016datacenter<br />
<br />
# Create a Resource group<br />
az group create --name myresourcegroup --location eastus<br />
<br />
# Create a Storage account.<br />
az storage account create -g myresourcegroup -n mystorageaccount -l eastus --sku Standard_LRS<br />
<br />
---------------------------------------------------------------------------------<br />
DELETING A RESOURCE GROUP<br />
---------------------------------------------------------------------------------<br />
# Permanetly deletes a resource group<br />
az group delete --name myResourceGroup<br />
<br />
<br />
---------------------------------------------------------------------------------<br />
MANAGING VM'S<br />
---------------------------------------------------------------------------------<br />
# List your VMs<span style="white-space: pre;"> </span><br />
az vm list<br />
<br />
# Start a VM<span style="white-space: pre;"> </span><br />
az vm start --resource-group myResourceGroup --name myVM<br />
<br />
# Stop a VM<span style="white-space: pre;"> </span><br />
az vm stop --resource-group myResourceGroup --name myVM<br />
<br />
# Deallocate a VM<span style="white-space: pre;"> </span><br />
az vm deallocate --resource-group myResourceGroup --name myVM<br />
<br />
# Restart a VM<span style="white-space: pre;"> </span><br />
az vm restart --resource-group myResourceGroup --name myVM<br />
<br />
# Redeploy a VM<span style="white-space: pre;"> </span><br />
az vm redeploy --resource-group myResourceGroup --name myVM<br />
<br />
# Delete a VM<span style="white-space: pre;"> </span><br />
az vm delete --resource-group myResourceGroup --name myVM<br />
<br />
# Create image of a VM<span style="white-space: pre;"> </span><br />
az image create --resource-group myResourceGroup --source myVM --name myImage<br />
<br />
# Create VM from image<span style="white-space: pre;"> </span><br />
az vm create --resource-group myResourceGroup --name myNewVM --image myImage<br />
<br />
<br />
---------------------------------------------------------------------------------<br />
MANAGING BATCH ACCOUNT<br />
---------------------------------------------------------------------------------<br />
# Create a Batch account.<br />
az batch account create -g myresourcegroup -n mybatchaccount -l eastus<br />
<br />
# Create a Storage account.<br />
az storage account create -g myresourcegroup -n mystorageaccount -l eastus --sku Standard_LRS<br />
<br />
# Associate Batch with storage account.<br />
az batch account set -g myresourcegroup -n mybatchaccount --storage-account mystorageaccount<br />
<br />
# We can now authenticate directly against the account for further CLI interaction.<br />
az batch account login -g myresourcegroup -n mybatchaccount<br />
<br />
# Display the details of our created account.<br />
az batch account show -g myresourcegroup -n mybatchaccount<br />
<br />
# Create a new application.<br />
az batch application create --resource-group myresourcegroup --name mybatchaccount --application-id myapp --display-name "My Application"<br />
<br />
# Add zip files to application<br />
az batch application package create --resource-group myresourcegroup --name mybatchaccount --application-id myapp --package-file my-application-exe.zip --version 1.0<br />
<br />
# Assign the application package as the default version.<br />
az batch application set --resource-group myresourcegroup --name mybatchaccount --application-id myapp --default-version 1.0<br />
<br />
# Retrieve a list of available images and node agent SKUs.<br />
az batch pool node-agent-skus list<br />
<br />
# Create new Linux pool with VM config<br />
az batch pool create \<br />
--id mypool-linux \<br />
--vm-size Standard_A1 \<br />
--image canonical:ubuntuserver:16.04.0-LTS \<br />
--node-agent-sku-id “batch.node.ubuntu 16.04”<br />
<br />
# Now let's resize the pool to start up some VMs.<br />
az batch pool resize --pool-id mypool-linux --target-dedicated 5<br />
<br />
# We can check the status of the pool to see when it has finished resizing.<br />
az batch pool show --pool-id mypool-linux<br />
<br />
# List the compute nodes running in a pool.<br />
az batch node list --pool-id mypool-linux<br />
<br />
# If a particular node in the pool is having issues, it can be rebooted or reimaged.<br />
# A typical node ID will be in the format 'tvm-xxxxxxxxxx_1-<timestamp>'.<br />
az batch node reboot --pool-id mypool-linux --node-id tvm-123_1-20170316t000000z<br />
<br />
# Re-allocate work to another node.<br />
az batch node delete \<br />
--pool-id mypool-linux \<br />
--node-list tvm-123_1-20170316t000000z tvm-123_2-20170316t000000z \<br />
--node-deallocation-option requeue<br />
<br />
# Create a new job to encapsulate the tasks that we want to add.<br />
az batch job create --id myjob --pool-id mypool<br />
<br />
# Add tasks to the job.<br />
# …where <shell> is your preferred shell for execution (/bin/sh, /bin/bash, /bin/ksh etc.),<br />
# and /path/to/script.sh is, of course, the full path of the shell script you’re invoking to<br />
# get things started.<br />
az batch task create --job-id myjob --task-id task1 --application-package-references myapp#1.0 --command-line "/bin/<shell> -c /path/to/script.sh"<br />
<br />
# Add many tasks at once<br />
az batch task create --job-id myjob --json-file tasks.json<br />
<br />
# Now that all the tasks are added - we can update the job so that it will automatically<br />
# be marked as completed once all the tasks are finished.<br />
az batch job set --job-id myjob --on-all-tasks-complete terminateJob<br />
<br />
# Monitor the status of the job.<br />
az batch job show --job-id myjob<br />
<br />
# Monitor the status of a task.<br />
az batch task show --job-id myjob --task-id task1<br />
<br />
# Delete a job<br />
az batch job delete --job-id myjob<br />
<br />
<br />
---------------------------------------------------------------------------------<br />
MANAGING CONTAINERS<br />
---------------------------------------------------------------------------------<br />
# If you HAVE AN SSH run this to create an Azure Container Service Cluster (~10 mins)<br />
az acs create -n acs-cluster -g acsrg1 -d applink789<br />
<br />
# If you DO NOT HAVE AN SSH run this to create an Azure Container Service Cluster (~10 mins)<br />
az acs create -n acs-cluster -g acsrg1 -d applink789 --generate-ssh-keys<br />
<br />
# List clusters under your whole subscription<br />
az acs list --output table<br />
<br />
# List clusters in a resource group<br />
az acs list -g acsrg1 --output table<br />
<br />
# Display details of a container service cluster<br />
az acs show -g acsrg1 -n acs-cluster --output list<br />
<br />
# Scale using ACS<br />
az acs scale -g acsrg1 -n acs-cluster --new-agent-count 4<br />
<br />
# Delete a cluster<br />
az acs delete -g acsrg1 -n acs-cluster<br />
<br />
<br />Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-69482482700309400182017-05-04T13:33:00.000-04:002017-05-04T13:33:44.078-04:00Practical Git Commands Kickstart<div align="center" class="MsoNormal" style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_nisgB26NiPJIxwUibnS5g3OkTVhvK1Wc1o30_d2Hu70a3th2uWv0ekuNMIz9qX_NxM6cCohRVL4DBBBOs6bkBsv4lN65KXsPfYcixy95AjA3j0dgvb5EqSqxF1e2qjNwMK9l2AdFV-n9/s1600/67732604.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_nisgB26NiPJIxwUibnS5g3OkTVhvK1Wc1o30_d2Hu70a3th2uWv0ekuNMIz9qX_NxM6cCohRVL4DBBBOs6bkBsv4lN65KXsPfYcixy95AjA3j0dgvb5EqSqxF1e2qjNwMK9l2AdFV-n9/s1600/67732604.jpg" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
Git command line is extremely useful for managing your resources
– it is the only way to utilize all Git commands possible as most GUI’s only
have a set of available commands. Although
many guides exist to explain Git command line, many are brief introductions or
extremely comprehensive. I will share a
practical guide of commands I needed to use to get through my day, no more, no
less as part of a kick start to get you going with Git. I will list commands by group in tables and
will give an explanation below each table in italics for why/when you need
these commands if you are new to Git. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoListParagraph">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184; width: 624px;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Project/Directory Setup Commands<o:p></o:p></b></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 3.25in;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Use/Explanation<o:p></o:p></b></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git init</span><b><span style="font-size: 9.0pt;"><o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 3.25in;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
New repository from current directory<o:p></o:p></div>
</td>
</tr>
<tr style="height: 13.9pt; mso-yfti-irow: 2;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 13.9pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git init
<directory></span><span style="font-size: 9.0pt;"><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 13.9pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 3.25in;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
New repository to a specific directory<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git clone
/path/to/repository<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 3.25in;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Connecting to an existing local repository<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git clone username@host:/path/to/repository<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 3.25in;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Connecting to an existing remote repository<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;">You need initialize a local file directory
to be a Git repository for a new project (your local file directory will be associated
with a certain online repository). Initializing
will create a .git folder in the directory and this is where Git will record
different versions of the project and the .git folder will contain all of the
metadata and changes to the project (rest of the project will not be altered
while you are working).</span></i><span style="font-size: 9.0pt; line-height: 107%;"> <o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Adding/Staging/Unstaging Files
Commands</b><b><span style="font-family: Consolas; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></b></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Use/Explanation<o:p></o:p></b></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git add filename.txt<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stages a specific file to commit<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git add -A<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stages all<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git add .</span><span style="font-size: 9.0pt;"><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stages new and modified, without deleted. <b><i>*This add command is most
commonly used</i></b><o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git add -u</span><span style="font-size: 9.0pt;"><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stages modified and deleted, without new<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git add *</span><span style="font-size: 9.0pt;"><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stages all files in current directory except files whose name begin
with a dot. Wildcard interpreted as part of git.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git reset -- filename.txt<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Unstages a file by name, the changes are still there that you made
but it will not be committed until you add it back<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git reset<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Unstages all files (again changes are still there and now nothing is
committed until you add it in)<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git status<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Checking file status (see which files are staged/unstaged for the
commit)<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;">Staging and unstaging do not affect
the changes of the files or delete and files, they are for adding/removing files
to track for a commit or stash. You push
your commits to make a change. In Git,
you stage(add) the files you want to commit and unstage (reset) files you do
not want to commit. Note ‘--’ in a command specifies we are talking about a
file, not a branch (in case some file names are the same as a branch name).</span></i><span style="font-size: 9.0pt; line-height: 107%;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i><br /></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Commit/Reset Commands<o:p></o:p></b></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Use/Explanation<o:p></o:p></b></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git commit -m “Your
message here to describe what you are committing to your branch.”</span><span style="font-family: Consolas; font-size: 9.0pt;"><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Commit changes with a message<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git checkout
<file><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Abandon/Undo changes to one file<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git reset --hard
HEAD~1<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<br /></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Removing the most recent one commit (HEAD~1 means the commit before
the head)<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git log<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Find a commit id<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git reset --hard
<sha1-commit-id><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Removing a very specific commit id<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git reset --hard<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Removing all commits/changes and reset back to original branch pulled<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;">Committing is not permanent, do not be
afraid to commit. You don’t have to push your commit. You can roll back this
commit easily if you want to erase all of it and go back to the original code
in the branch. You must commit or stash everything before you can change
branches, pull new commits in, etc (see final table for stashing info).</span></i><span style="font-size: 9.0pt; line-height: 107%;">
<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Push/Pull Commands<o:p></o:p></b></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Use/Explanation</b><o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git push<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Pushing changes from current branch to the same current branch<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git
push originally-cloned-branch new-branch<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Pushing changes from an originally cloned branch to a new branch<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git fetch<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Fetching commits and remote branch changes, does not put new changes
into your code until you pull though<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git pull<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Pulls all the latest commits to your current branch from the server<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;">You must run a </span></i><b><i><span style="font-size: 9.0pt; line-height: 107%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-fareast-font-family: "Times New Roman";">git fetch</span></i></b><i><span style="font-size: 9.0pt; line-height: 107%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"> to see new
commits or any new branches added to your repository. <b>Git pull</b> does a <b>git fetch +
git merge</b>. You can <b>git fetch</b>
anytime to update remote tracking branches or see any latest commits from
others. If you already pushed a commit and need to revert it, you can do a
force push to get rid of it but honestly it is safer for you to create a new
branch and fix your changes as others are working in the same code (pushing is
a little permanent, make sure you test everything out before you push your
changes to the server where other developers will see your work).</span></i><span style="font-size: 9.0pt; line-height: 107%; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"> <o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i><br /></i></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Switching/Creating Branches<o:p></o:p></b></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Use/Explanation</b><o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git
checkout -b my-new-branch-name<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<br /></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Create a new branch based on your current branch, and switch to the
new branch. <i>Note the -b means that you
need to create a new branch</i><o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git
checkout -b new-branch existing-branch<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Create a new branch based on a specific branch<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman";">git checkout existing-branch-name<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Switching to another existing branch<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;">Make sure you commit or stash your
changes before trying to change branches.
Note: you are able to swap between different branches with one code same
base—all of the changes that appear are applied based on the contents of the
.git folder on top of the original files.
<o:p></o:p></span></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i><br /></i></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Merging Branches Commands<o:p></o:p></b></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Use/Explanation</b><o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git merge branchname<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Merges <i>branchname</i> into your
current branch. Make sure to pull latest into both your current branch and
the branch to merge in<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git reset --merge .<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Abandon a merge with merge conflicts, goes back to state you were in
before you attempted to merge. Can use this command if Git v1.6.1+<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git reset --hard
HEAD<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
If Git version is less than 1.6.1 then use this to abandon a merge<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;">You merge one branch into another one,
for example if you are working in a feature branch and want to put your work
into develop.. or if you want to merge stable develop changes into QA. Careful with merge conflicts and to test after
fixing all of them before committing and finally pushing to the server.<o:p></o:p></span></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<o:p><br /></o:p></div>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Dealing with Stashes Commands<o:p></o:p></b></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<b>Use/Explanation</b><o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stash all tracked files without a message/description to index 0<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash save “my
description here”<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stash all tracked files that have not yet been committed<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash save -u “my
description here”<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Stash all files that have not yet been committed <i>including</i> untracked files<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash pop<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">-or-<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash apply<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
All changes to stashed files will be applied to the current workspace
(unstashing). You can reapply to same branch or apply changes to a new
branch. By default gets <span style="font-family: Consolas; font-size: 9.0pt;">stash@{0}.
</span><b><u>Important: </u></b><b>git stash pop throws away the stash after
applying it, whereas git stash apply leaves it in the stash list for possible
later reuse.</b><o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash pop
stash@{2} <br />
-or- <br />
git stash apply stash@{2}<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Specifies which index to apply/unstash to your current workspace<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash list<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
List the current stashes, you can see the index of each one to delete
a certain one<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash clear <o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Clear/Delete all the current stashes<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
<span style="font-family: Consolas; font-size: 9.0pt;">git stash drop stash@{0}<o:p></o:p></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 233.75pt;" valign="top" width="312">
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in;">
Replace {0} with the index of the stash you want to drop<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<br />
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;">Use git add/reset to determine which
files you want to stash. You can stash changes as a “save-state” so you can do
work in another branch, all changes will be saved in your local Git repo and
nothing from the stash will go to the server.
You can easily unstash your
changes onto the same or another branch.
You can apply one stash to multiple other branches. Sometimes you may make a feature branch and
make a lot of foundational domain changes.. then suddenly you realize another
developer needs your changes to work.
You can stash your changes and unstash them on top of the other branch
so you are both working in the same branch with shared foundational code. New
git stashes by default are always created to stash@{0}, and older ones’ will have
the index pushed to higher index numbers.<o:p></o:p></span></i></div>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;"><br /></span></i></div>
<div class="MsoNormal">
<i><span style="font-size: 9.0pt; line-height: 107%;"><br /></span></i></div>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-15536342213668496022017-04-26T17:17:00.001-04:002017-04-26T17:17:45.630-04:00Use of AoP in Cross Cutting Aspect of Error Handling<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb2OF4avJKISKxC6d3Gq3fw8daEXMPBNNj7RM1UUxNMvNICeXHz-mWkqB4bUHCW3Ut25AQ-EvDTy8aBiuVZfCANFZXZEuDBMgTOvLK5T1zDXjBZSaH0FZ_0QkA-Iz1ZfsWJE8sPjZLg5bs/s1600/postsharp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb2OF4avJKISKxC6d3Gq3fw8daEXMPBNNj7RM1UUxNMvNICeXHz-mWkqB4bUHCW3Ut25AQ-EvDTy8aBiuVZfCANFZXZEuDBMgTOvLK5T1zDXjBZSaH0FZ_0QkA-Iz1ZfsWJE8sPjZLg5bs/s320/postsharp.png" width="320" /></a></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b><br /></b></div>
<div class="MsoNormal">
<b>Cross Cutting Concerns</b>
are global concerns that span across methods, classes, applications—and can be
concerns widely affecting a whole company or industry. Think of patient records or a financial
history, and things always needed in those industries and how it affects each
method of code! There are all kinds of required security for each step and any
errors need to be carefully logged. In
other words, integral parts of an application that have to be performed across
the layers. Examples are Logging, Exception/Error
Handling, Data Validation, Business Rules, Caching, Security, Communication,
and others. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Aspect Oriented Programming
(AOP) </b>= program it once in its own section, and apply it as needed
throughout the application. You should
only add something to this section if it is to be reused often. If it is only a couple of times, try to
implement it directly in your code to cut down on abstracting away too
much. On the good, and bad, side.. anything
implemented here with a bug is easily fixed in one place, but can wreck havoc
globally.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Java supports AOP, whereas C# only partially supports it (hence
PostSharp and other 3<sup>rd</sup> party extensions). An application with strong architecture tends
to have separate layers so different concerns don’t interact more than necessary,
which is better for maintainability and for changes over time. AOP separates general code form code that is
globally reusable code present throughout the layers; this is addressing the
crosscutting concern. <o:p></o:p></div>
<div class="MsoNormal">
So now our code, for example could be separated into:</div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo1; text-indent: -.25in;">
</div>
<ul>
<li>·<span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">
</span><span style="text-indent: -0.25in;">Presentation layer</span></li>
<li>·<span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">
</span><span style="text-indent: -0.25in;">Domain logic layer</span></li>
<li>·<span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">
</span><span style="text-indent: -0.25in;">Data storage layer</span></li>
<li>·<span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">
</span><span style="text-indent: -0.25in;">General globally needed </span><i style="text-indent: -0.25in;">stuff</i><span style="text-indent: -0.25in;"> layer (like Exceptions and Logging!)</span></li>
</ul>
<br />
<div class="MsoNormal">
You can standardize exception handling using AOP and reduce
the amount of code written for exception handling. Most commonly in .NET, you will see
post-processing (PostSharp) and code interception (dependency injection). As a
sample for how to use AoP to address the cross cutting aspect of Error handling,
we will talk about PostSharp.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Using PostSharp for post-processing, you can handle all of
the exceptions in one system though a single function. Using PostSharp, you add
an attribute [ExceptionAspect] to a method and PostSharp will wrap the method
in a try/catch block for you. This cuts
down on code added and allows you to reuse the same try/catch logic over and
over again easily. You can customize
your exception handling logic with PostSharp
Please see here for detailed instructions on how to download and
implement PostSharp: <a href="https://michaelllucas.wordpress.com/2014/11/05/exception-handling-using-postsharp-c/">https://michaelllucas.wordpress.com/2014/11/05/exception-handling-using-postsharp-c/</a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Sample scenario: You have a win forms project with an in-memory
data store. You search for a name that isn’t
in the list and get an error that is cryptic and shows too much sensitive
info. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Below is a normal try/catch:<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX1ifRvlTBueZriFNdXFd7tCzIQIC85rdO4v5HhF4Wy-JTv8uHo9RcwOE5oqtseLqAqtxWkKQnkV5Up7_qsLl8GGsYgAsaX3TxELNuK-bUvp9Xaz_6-jFU_s0Y7ilKUs9cL5Nd1yyCsRaG/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX1ifRvlTBueZriFNdXFd7tCzIQIC85rdO4v5HhF4Wy-JTv8uHo9RcwOE5oqtseLqAqtxWkKQnkV5Up7_qsLl8GGsYgAsaX3TxELNuK-bUvp9Xaz_6-jFU_s0Y7ilKUs9cL5Nd1yyCsRaG/s1600/1.JPG" /></a></div>
<br />
<div class="MsoNormal">
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_2" o:spid="_x0000_i1028" type="#_x0000_t75"
style='width:468.75pt;height:234.4pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:/Users/crtenn/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Below is a custom exception wrapper using PostSharp (this is
our Aspect class):<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX7ET_hLiWeCmS87nv0aPsCbsu-J_MDQ_ADHEUGGfkOCJ7cVrUMqjK5ILYuYJapGWBGXdTdtloOxJKsmcek4mVzvOOBSPGu_HmriD33sRVIaWUSPpxSmH2pynff5IkJzBmgSIcklVvveAz/s1600/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX7ET_hLiWeCmS87nv0aPsCbsu-J_MDQ_ADHEUGGfkOCJ7cVrUMqjK5ILYuYJapGWBGXdTdtloOxJKsmcek4mVzvOOBSPGu_HmriD33sRVIaWUSPpxSmH2pynff5IkJzBmgSIcklVvveAz/s1600/2.JPG" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<!--[if gte vml 1]><v:shape
id="Picture_x0020_3" o:spid="_x0000_i1027" type="#_x0000_t75" style='width:468pt;
height:161.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:/Users/crtenn/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p></div>
<div class="MsoNormal">
You can handle the issue in the data layer by creating the <b>Database Exception Wrapper</b> and
customizing the logic for showing a useful and non-sensitive message. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Below is a try catch using PostSharp:<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvS10fOEcolR4yGwxOnPgT-A2FOgcQY63kSPihWszBknuqChrRB2RIklQ_rrmKDOOg6PVSCYrwwVaqAqzWXEYYOrBTg1wP22wJ6jfwJ8OHePJ1UtTT5HrbBjBsYgBZ8WlmfsjRcc_myEZT/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvS10fOEcolR4yGwxOnPgT-A2FOgcQY63kSPihWszBknuqChrRB2RIklQ_rrmKDOOg6PVSCYrwwVaqAqzWXEYYOrBTg1wP22wJ6jfwJ8OHePJ1UtTT5HrbBjBsYgBZ8WlmfsjRcc_myEZT/s1600/3.JPG" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<!--[if gte vml 1]><v:shape
id="Picture_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:468pt;
height:160.9pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:/Users/crtenn/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p></div>
<div class="MsoNormal">
Notice the attribute at the top using the [<b>DatabaseExceptionWrapper</b>], now the entire
function that was wrapped before is considered wrapped in the custom try catch
wrapper just made. <o:p></o:p></div>
<div class="MsoNormal">
“The way OnExceptionAspect works is by wrapping the method
in a try/catch block and catching exceptions of type Exception. But there will
be cases when you want to handle a specific type of error.” You can specify in
the aspect class (in our case the DatabaseExceptionWrapper class) what type of
error you want to catch so you aren’t catching all general errors. </div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Below it
specifies to only catch the InvalidOperationException.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghDBmjRt-OXtYvoh3yGh_U1JeAXZVkACq0Z8ypEaNYwCYe0Q67Cy39kCq88bZRMZS1-rZTTzu7Q8izM5axkgwm7HmcGkQLTB8ATOa0USSDWrtIoYJCGOsnh9DUdXrVevxG-3dhHMegn1oQ/s1600/4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghDBmjRt-OXtYvoh3yGh_U1JeAXZVkACq0Z8ypEaNYwCYe0Q67Cy39kCq88bZRMZS1-rZTTzu7Q8izM5axkgwm7HmcGkQLTB8ATOa0USSDWrtIoYJCGOsnh9DUdXrVevxG-3dhHMegn1oQ/s1600/4.JPG" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<!--[if gte vml 1]><v:shape
id="Picture_x0020_4" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:468.4pt;
height:61.9pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:/Users/crtenn/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p></div>
<div class="MsoNormal">
<i>*Note screenshots and
sample are from: <a href="http://www.postsharp.net/blog/post/Day-1-e28093-OnExceptionAspect">http://www.postsharp.net/blog/post/Day-1-e28093-OnExceptionAspect</a>
(I just distilled it down to summarize it here).<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Potential cons of PostSharp:<span style="font-size: xx-small;"> </span><span style="text-indent: -0.25in;">Increased build times. May need to exclude from
local build. </span><span style="text-indent: -0.25in;"> Most say advantages
outweigh increased build time (</span><span style="text-indent: -0.25in;">http://stackoverflow.com/questions/417163/anyone-with-postsharp-experience-in-production).</span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo2; text-indent: -.25in;">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
References: <o:p></o:p></div>
<div class="MsoNormal">
<a href="https://msdn.microsoft.com/en-us/magazine/dn574804.aspx">https://msdn.microsoft.com/en-us/magazine/dn574804.aspx</a><o:p></o:p></div>
<div class="MsoNormal">
<a href="http://www.cshandler.com/2015/10/managing-cross-cutting-concerns-logging.html#.WQDbuojyvZs">http://www.cshandler.com/2015/10/managing-cross-cutting-concerns-logging.html#.WQDbuojyvZs</a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Extra reading: <o:p></o:p></div>
<div class="MsoNormal">
<a href="https://skilldrill.org/2012/10/22/postsharp-exception-handling/">https://skilldrill.org/2012/10/22/postsharp-exception-handling/</a><o:p></o:p></div>
<div class="MsoNormal">
<a href="http://stackoverflow.com/questions/1602739/would-aspect-oriented-programming-be-a-positive-addition-to-the-c-sharp-language">http://stackoverflow.com/questions/1602739/would-aspect-oriented-programming-be-a-positive-addition-to-the-c-sharp-language</a><o:p></o:p></div>
<div class="MsoNormal">
<a href="https://www.codeproject.com/articles/1118339/yet-another-aop-in-net">https://www.codeproject.com/articles/1118339/yet-another-aop-in-net</a><o:p></o:p></div>
<br />
<div class="MsoNormal">
<br /></div>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-14213357415929488162017-04-26T14:42:00.000-04:002017-04-26T14:42:40.331-04:00Xamarin Test Cloud Best Practices<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDkGlCR0hCSl95LrJDErNOPCTUqVASJPHYehNrlrsc8GrP6eB-mSP3j4FkWVgbBXXe81fapLbt0rq7XO_NHT45cy4-WhjOOJ_Bx4m5xH0-J4UGX9APV9b2UVZ129br3oaT818tU4Kx9Uad/s1600/screenshot-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDkGlCR0hCSl95LrJDErNOPCTUqVASJPHYehNrlrsc8GrP6eB-mSP3j4FkWVgbBXXe81fapLbt0rq7XO_NHT45cy4-WhjOOJ_Bx4m5xH0-J4UGX9APV9b2UVZ129br3oaT818tU4Kx9Uad/s640/screenshot-1.png" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Do’s:</b><o:p></o:p></div>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Get test cases from QA.
One great reason for Test Cloud is to be able to complete a base set of
smoke tests or comprehensive testing so that QA can do exploratory testing
for new issues / rare cases. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Take a lot of
screenshots using ‘app.Screenshot()’ and use a very descriptive name /
sentence to describe the step occurring. The only views you will see on
Test Cloud will be these screenshots. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Name your elements the
same between iOS and Android, otherwise you will have a lot of nasty
if/else statements in your code.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Repeat code as much as
possible. If you have 10 tests for buying an item.. take a separate
reusable method that logs you in, and call this method many times. The
make another method that will add something to your cart, and call this
method many times. In case the ‘login’ button name changes, you <i>do not
want</i> to be changing your hardcoded app.Tap(“element_name”) in 50
locations, you want to have to only change this is one place if possible. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Naming conventions: Try
to keep really good naming conventions like large_button_text_on_button or
icon_close so that it is easy to identify or even identifiable without
going through REPL. The less time you have to search for elements in
REPL, the quicker it will be to complete development.<o:p></o:p></li>
<ul style="margin-top: 0in;" type="circle">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level2 lfo1;">*Make sure you do have
a label of some kind to hook onto. If there is no class/id/other name,
add one!!! Otherwise you end up doing a hackish thing where you hook
something onto the 5<sup>th</sup> element on the page that is a button or
something, and it’s not pretty. <o:p></o:p></li>
</ul>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Tests can run on average
30 s – 6 minutes or so depending on the app. Try to break down your test
scenarios into smaller pieces—as everything is hardcoded, the longer the
test the higher probability it can break with any new changes / updates to
the app. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">If you are debugging
your app, add app.Repl(); right before it breaks so you can debug and
figure out what is going on.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Get really good at
app.Query();, you will probably use these a lot to find elements. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l2 level1 lfo1;">Try to automate when a
build goes out, so does a script to test cloud to run smoke/full sets of
tests. <o:p></o:p></li>
</ul>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Do Not’s:</b><o:p></o:p></div>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l3 level1 lfo2;">Map anything to x/y
coordinates. This changes a lot based on the device you use. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l3 level1 lfo2;">For whatever element you
choose to wire your test cloud to.. make sure you do not name multiple
things on the page the same thing whether it’s a class/id, etc.. <o:p></o:p></li>
</ul>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Notes:</b><o:p></o:p></div>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level1 lfo3;">There is an option for a
live recording of your phones on Test Cloud. It is a setting when you
submit your tests to the cloud to run. You can choose to send a subset of
tests or all of the tests. Subsets are defined using an attribute
above the test name. You can add more than one category to a test, for ex.
If it is part of a smoke test, part of a login screen test, etc.<o:p></o:p></li>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3xxi-r8fYUjEgB34buNkavmeInYYeqx5rF-rXhyphenhyphenPL33dCpkfVDdwY_7DUsxBaOOJxULy2m0K1P2Qg0-xBLpl7AovrdTVaAs_thpwuhnzSq7F-kKl_xpPo4ii0PFiZI74yxve4k7SY2bkW/s1600/derp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3xxi-r8fYUjEgB34buNkavmeInYYeqx5rF-rXhyphenhyphenPL33dCpkfVDdwY_7DUsxBaOOJxULy2m0K1P2Qg0-xBLpl7AovrdTVaAs_thpwuhnzSq7F-kKl_xpPo4ii0PFiZI74yxve4k7SY2bkW/s320/derp.jpg" width="320" /></a></div>
<ul style="margin-top: 0in;" type="circle">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level2 lfo3;"><o:p></o:p></li>
<li>Adding a category looks
like this: [Category("Smoke Tests")]</li>
<li><a href="https://developer.xamarin.com/guides/testcloud/uitest/working-with/nunit-categories/">https://developer.xamarin.com/guides/testcloud/uitest/working-with/nunit-categories/</a></li>
<br />
</ul>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level1 lfo3;">You probably are not
going to get 100% of tests working all the time, phones on Test Cloud will<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level1 lfo3;">It seems safe to run
about 6-10ish types of varied devices per run to conserve hours to get a
good idea of if your app is working across most devices. You can run
more if you are not concerned about saving on hours. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level1 lfo3;">You can plug in a
physical device also to your computer and run test cloud on that. Make
sure you enable debugging on your device. This is a good way to test on
iOS if you are only using a Windows computer. <o:p></o:p></li>
<ul style="margin-top: 0in;" type="circle">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level2 lfo3;">Android device: <a href="https://developer.xamarin.com/guides/android/getting_started/installation/set_up_device_for_development/">https://developer.xamarin.com/guides/android/getting_started/installation/set_up_device_for_development/</a><o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level2 lfo3;">iOS device: <a href="https://developer.xamarin.com/guides/ios/getting_started/installation/device_provisioning/">https://developer.xamarin.com/guides/ios/getting_started/installation/device_provisioning/</a><o:p></o:p></li>
</ul>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level1 lfo3;">You are probably going
to have to use some platform specific if statements, for ex. Typing text
into an input may not work with .Tap() and you need .Enter(). Make sure
you always inject the platform into your classes using DI
everywhere. It happens, sometimes things just don’t work in both
platforms the same. <o:p></o:p></li>
<ul style="margin-top: 0in;" type="circle">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level2 lfo3;">if (platform ==
Platform.Android) {}<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l1 level2 lfo3;">if (platform ==
Platform.iOS) {} </li>
</ul>
</ul>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Pain points:</b><o:p></o:p></div>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo4;">If your naming
convention is bad or non-existent, consider going through the app to fix
this. It will save you time to re-name elements in a clean way as opposed
to trying to hookup Test Cloud to poorly named pieces. Especially if
iOS/Android are different, try to keep these aligned. You can eat a lot of
development time if the names are bad, different between iOS/Android, and
if elements are hard to find. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo4;">Remember everything is
completely specific to the flow. If you do a UI test to login, add an
item, and hit checkout.. and someone adds a new page in for a promotion
before you checkout.. it will break your tests. If an element is removed
or changed, the tests will break. There is some upkeep/maintenance
to consider, though it should be quick changes. <o:p></o:p></li>
</ul>
<br />
<div class="MsoListParagraph" style="margin-left: .75in;">
<br /></div>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-59722446641184537182017-02-06T23:50:00.003-05:002017-02-07T00:18:48.182-05:00C# Study Guide: Expanded (~70 pages)<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqA4SPZ6fF7NmaHVnL-qlCaC13xt_D6qWM3urUtzvlaq_OgoXnFO5wnoupgMX8mhtO_9QRBMMQCMOKF2cnkHQAwXBby_B5jgRYKuDKcyHO6vQnN1nLiTMUjkBSgirUYfZeXRhyphenhyphenicn9I9Wv/s1600/fitness+whole+pizza.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqA4SPZ6fF7NmaHVnL-qlCaC13xt_D6qWM3urUtzvlaq_OgoXnFO5wnoupgMX8mhtO_9QRBMMQCMOKF2cnkHQAwXBby_B5jgRYKuDKcyHO6vQnN1nLiTMUjkBSgirUYfZeXRhyphenhyphenicn9I9Wv/s1600/fitness+whole+pizza.jpg" /></a></div>
<br/>
<a href="https://drive.google.com/file/d/0B9woJn6O0dPXalN0eHFhSTVkOVE/view?usp=sharing"><b>C# and Stuff Study Guide!</b></a>
<br/><br/>
I made a study guide for keeping up to date, for students / beginners, and for those who want a guide to brush up on topics for interviews. As a long time med student.. I like to know there is somewhat of a limitation to "everything" you need to know as a foundation in order to be ready for almost any job. I tried to make this guide exactly that. Of course, you will need additional skills / libraries.. but this is the basic core and I would assume if you knew all (<i>*by know, I mean understand AND be able to implement AND explain well during an interview</i>) of this you could get a job and succeed. This is most up to date as of February 2017.. as tech goes, things will change slightly over time and new things will be added that will not be on this sheet. I made a similar post before when this guide was around 20-30 pages and it has since grown.
<br/><br/>
Keep in mind: <i>I am a C# web developer</i>. I included heavy C# (~60% of the guide), design patterns / lower level JIT compiler / garbage collection / boxing / unboxing type info (~20% of the guide). I have JavaScript and SQL info on here (~10% of the guide). I have random general stuff you just should know which is the last bit. I did not cover algorithms, data structures, or C++.. I honestly haven't needed it for a web development career. I did not cover Java, WPF, desktop/mobile application type things.
<br/><br/>
One more note: Interviews vary <b>A LOT</b>. This guide would have been immensely helpful for my first 4 jobs. If I had known all of this, I would have aced them all with maybe one or two things missed.. if that. This guide was not the least bit helpful for my current position at Microsoft which aimed thinking questions that you cannot find online that were tailored to my experience and my resume. You should always know everything on your resume, be able to explain it, and be able to explain why a technology was used (versus a competing one plus why it suits your companies needs well). You should also be able to answer any questions about how to implement new features into your working environment, understand why/how things are done now, and how they could be done better.
<br/><br/>
My approximately all-inclusive study guide is hosted on my Google Docs (it's a .docx file) because it is too large to share on a blog post:
<br/>
<a href="https://drive.google.com/file/d/0B9woJn6O0dPXalN0eHFhSTVkOVE/view?usp=sharing"><b>C# and Stuff Study Guide!</b></a>
<br/>
<br/>Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-74064078988444919992017-02-06T23:18:00.002-05:002017-02-06T23:20:28.479-05:00Favorite (no-tricks all logic) puzzles<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMZ3urBuG8CLDYQeyWGEihWE0n1CQhFTEUps7FgCMJn-JfrE00rjlVyaT6e6Twa27LVX2S5P2hxjlK4vFIHdrhq3-Y36a6ByQfTFgXQbtlqg-tPi_ffWJyAYDq-fFh9n1-7Fp_rh06y8kD/s1600/fly-logic_c_526892.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMZ3urBuG8CLDYQeyWGEihWE0n1CQhFTEUps7FgCMJn-JfrE00rjlVyaT6e6Twa27LVX2S5P2hxjlK4vFIHdrhq3-Y36a6ByQfTFgXQbtlqg-tPi_ffWJyAYDq-fFh9n1-7Fp_rh06y8kD/s1600/fly-logic_c_526892.jpg" /></a></div>
None of these are puzzles I made up, these are puzzles that are relatively well known and easily found on the Internet. I don't like puzzles with gotcha tricks-- such as har har I gotcha, you read the question too fast. These are some solid logic puzzles.
<br><br>
<ol>
<li><b>Water bucket 3L, 5L</b><br/>
You have a 3 and a 5 litre water container, each container has no markings except for that which gives you it's total volume. You also have a running tap. You must use the containers and the tap in such away as to exactly measure out 4 litres of water. How is this done?
Can you generalise the form of your answer?
<br/>
<a href="http://puzzles.nigelcoldwell.co.uk/twentytwo.htm">Answer Here</a>
</li>
<br/>
<li><b>Chicken fox corn</b><br/>A man has to get a fox, a chicken, and a sack of corn across a river. He has a rowboat, and it can only carry him and one other thing. If the fox and the chicken are left together, the fox will eat the chicken. If the chicken and the corn are left together, the chicken will eat the corn. How does the man do it?
<br/>
<a href="https://www.mathsisfun.com/chicken_crossing_solution.html">Answer Here</a>
</li>
<br/>
<li><b>Light bulb puzzle</b><br/>Suppose that you are standing in a hallway next to 3 light switches, which are all off. There is another room down the hallway, where there are 3 incandescent light bulbs – each light bulb is operated by one of the switches in the hallway. Because the light bulbs are in another room, you can not see them since you are standing in the hallway. How would you figure out which switch operates which light bulb, if you can only go the room with the light bulbs one time, and only one time?
<br/>
<a href="http://www.programmerinterview.com/index.php/puzzles/3-switches-3-bulbs/">Answer Here</a>
</li>
<br/>
<li><b>Light bulb puzzle</b><br/>You have two ropes and a lighter. Each rope has the following property: If you light one end of the rope, it will take one hour to burn to the other end. They don't necessarily burn at a uniform rate. How can you measure a period of 45 minutes?
<br/>
<a href="https://curiosity.com/topics/the-burning-rope-logic-puzzle/">Answer Here</a>
</li>
<br/>
<li><b>Light bulb puzzle</b><br/>You have two ropes and a lighter. Each rope has the following property: If you light one end of the rope, it will take one hour to burn to the other end. They don't necessarily burn at a uniform rate. How can you measure a period of 45 minutes?
<br/>
<a href="https://curiosity.com/topics/the-burning-rope-logic-puzzle/">Answer Here</a>
</li>
<br/>
<li><b>Counterfeit coin weighing</b>There are eight identical-looking coins; one of these coins is counterfeit and is known to be lighter than the genuine coins. What is the minimum number of weighings needed to identify the fake coin with a two-pan balance scale without weights?
<br/>
<a href="http://www.cut-the-knot.org/blue/EightCoins.shtml">Answer Here</a>
</li>
<br/>
<li><b>Prisoners hats puzzle</b>
According to the story, four prisoners are arrested for a crime, but the jail is full and the jailer has nowhere to put them. He eventually comes up with the solution of giving them a puzzle so if they succeed they can go free but if they fail they are executed. The jailer seats three of the men into a line. The fourth man is put behind a screen (or in a separate room). He gives all four men party hats. The jailer explains that there are two black hats and two white hats, that each prisoner is wearing one of the hats, and that each of the prisoners see only the hats in front of him but neither on himself nor behind him. The fourth man behind the screen can't see or be seen by any other prisoner. No communication among the prisoners is allowed. If any prisoner can figure out what color hat he has on his own head with 100% certainty (without guessing) and tell the jailer, all four prisoners go free. If any prisoner suggests an incorrect answer, all four prisoners are executed. The puzzle is to find how the prisoners can escape, regardless of how the jailer distributes the hats.
<br/>
<a href="https://en.wikipedia.org/wiki/Prisoners_and_hats_puzzle">Answer Here</a>
</li>
<br/>
<li><b>Bridge crossing efficiency puzzle</b>
Adam, Bob, Clair and Dave are out walking: They come to rickety old wooden bridge. The bridge is weak and only able to carry the weight of two of them at a time. Because they are in a rush and the light is fading they must cross in the minimum time possible and must carry a torch (flashlight,) on each crossing. They only have one torch and it can't be thrown. Because of their different fitness levels and some minor injuries they can all cross at different speeds. Adam can cross in 1 minute, Bob in 2 minutes, Clair in 5 minutes and Dave in 10 minutes. Adam, the brains of the group thinks for a moment and declares that the crossing can be completed in 17 minutes. There is no trick. How is this done?
<br/>
<a href="http://puzzles.nigelcoldwell.co.uk/twentyfe.htm">Answer Here</a>
</li>
<br/>
<li><b>Dragon and Knight puzzle</b>
Lets consider a dragon and knight live on an island. That island has seven poisoned wells, which is numbered 1 to 7. If you drink from a well, you can only save yourself by drinking from a higher numbered well. The Well whose is number 7 is located at the top of a high that mountain, so only the dragon can reach it. One day they decide that the island isn't big enough for the two of them, and they have a duel. Each of them brings a glass of water to the duel, they exchange glasses, and drink. After the duel, the knight lives and the dragon dies. Why did the knight live? Why did the dragon die?
<br/>
<a href="http://www.techinterviewpuzzles.com/2010/08/dragon-and-knight-trilogy-interview.html">Answer Here</a>
</li>
<br/>
<li><b>Quarters puzzle</b>
There are twenty-six coins lying on a table in a totally dark room. Ten are heads and sixteen are tails. In the dark you cannot feel or see if a coin is heads up or tails up but you may move them or turn any of them over. Separate the coins into two groups so that each group has the same number of coins heads up as the other group. (No tricks are involved.)
<br/>
<a href="https://wordplay.blogs.nytimes.com/2013/05/20/dark-2/?_r=0">Answer Here</a>
</li>
<br/>
</ol>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-67425609386239500492017-02-06T23:00:00.001-05:002020-06-28T17:07:57.352-04:00Unit Tests Moq: Verify Number Times CalledThe format for the number of times a moq method is called:
<br/><br/>
<pre class="prettyprint">
// Arrange
someSystem.Setup(x => x.MyMethod(It.IsAny<Guid>(), It.IsAny<SomeType>())).Returns(Task.CompletedTask);
//Act
IList<Alert> newAlerts = em.ReplaceAlerts(alerts, mockedSystem.Object);
// Assert
someSystem.Verify(x => x.MyMethod(It.IsAny<Guid>(), It.IsAny<SomeType>()), Times.Once);
</pre>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-19711358590655842212016-11-29T12:45:00.002-05:002020-06-28T17:10:22.299-04:00Mocking Unit Tests: HttpClient and 2+ parameters If you have an HTTP Client unit test, you can try the option of making a Wrapper interface in your solution like this here: <a href="http://stackoverflow.com/questions/10693955/stubbing-or-mocking-asp-net-web-api-httpclient">http://stackoverflow.com/questions/10693955/stubbing-or-mocking-asp-net-web-api-httpclient</a>. As for two parameters in the unit test, you can do the following..
<br/><br/>
<pre class="prettyprint">
Guid id = Guid.NewGuid();
string baseUri = ConfigurationManager.AppSettings["BaseUrl"] + @"/"
+ ConfigurationManager.AppSettings["ApiVersion"] + @"/";
Dto responseDto = new Dto();
httpClient.Setup(x => x.PostAsync<Dto, Guid>(new Uri(baseUri + "AdditionalUrlHere/Stuff"), It.IsAny<Dto>()))
.Callback<Uri, Dto>((uri, dto) => responseDto = dto)
.ReturnsAsync(id);
</pre>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.comtag:blogger.com,1999:blog-4655506656417348357.post-10971807259347906012016-10-24T15:46:00.004-04:002020-06-28T17:10:14.370-04:00Mocking Unit Tests: Get value out of a mocked methodLet's say you have a Save method, and you are unit testing it, and you want to get the "entity" that is getting passed in as a parameter to use in your test.
<br/><br/>
<pre class="prettyprint">
public voidSave(T entity)
{
// Save my stuff
}
</pre>
<br/><br/>
You can do this in your unit test:
<br/><br/>
<pre class="prettyprint">
FloppyDisk floppyDiskBeingSaved = null;
oldSkoolRepo.Setup(r => r.Save(It.IsAny<FloppyDisk>())).Callback<FloppyDisk>(en =>
{floppyDiskBeingSaved = en;}).Returns(() => Task.FromResult(floppyDiskBeingSaved));
Assert.AreEqual(stuff, floppyDiskBeingSaved);
</pre>
Crystal Tennhttp://www.blogger.com/profile/07558953202003863830noreply@blogger.com