<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[DaSeventhHogie's Tech Tips]]></title><description><![CDATA[Being the person I needed when I started.]]></description><link>https://blog.daseventhhogie.com/</link><image><url>https://blog.daseventhhogie.com/favicon.png</url><title>DaSeventhHogie&apos;s Tech Tips</title><link>https://blog.daseventhhogie.com/</link></image><generator>Ghost 5.79</generator><lastBuildDate>Wed, 06 May 2026 11:49:45 GMT</lastBuildDate><atom:link href="https://blog.daseventhhogie.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Web Domains (Part 2: Context, Definition, and Uniform Resource Locators)]]></title><description><![CDATA[<p>We&apos;ve talked about the high level of internet addresses. Now we&apos;re going to dive into what&apos;s behind those website names (Known as Uniform Resource Locators; abbreviated to URLs) that you find yourself typing into your browser to access popular websites like Google, YouTube, and</p>]]></description><link>https://blog.daseventhhogie.com/web-domains-part-2-going-deeper-into-the-real-details/</link><guid isPermaLink="false">633bcb8556aaa45c9dc10049</guid><dc:creator><![CDATA[Timothy Hogarty]]></dc:creator><pubDate>Fri, 13 Jan 2023 06:12:18 GMT</pubDate><media:content url="https://blog.daseventhhogie.com/content/images/2022/10/URL_Parts.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.daseventhhogie.com/content/images/2022/10/URL_Parts.png" alt="Web Domains (Part 2: Context, Definition, and Uniform Resource Locators)"><p>We&apos;ve talked about the high level of internet addresses. Now we&apos;re going to dive into what&apos;s behind those website names (Known as Uniform Resource Locators; abbreviated to URLs) that you find yourself typing into your browser to access popular websites like Google, YouTube, and Facebook. They are the human readable form of network format + network addresses + resource requests that allow your personal computers (mobile devices, laptops, desktops) to access and interact with server networks hosted by various entities. Think of your personal devices as being your digital home, and server networks in the digital world behave like various department stores, shops, and services in relation to your digital home.</p><p>Providing some more context that wasn&apos;t covered in the last article. The internet is just a bunch of computers, and any group of computers connected together is called a network. Similar to how humans refer to networking as connecting with each other, we use the same term in computing for a group of computers connected together. The internet is just the term we give to the main network that connects all sub networks together. In any network there has to be a way for the computing machines to pass messages back and forth. This is the basis for a study of computing called networking. In the basics of networking you&apos;ll learn how there are dedicated machines setup for message passing call network devices. They behave like post office robots for computers, and they have a formal way of assigning addresses to the machines that are connecting to them. </p><p>The addresses that network devices assign are IPv4 or IPv6 addresses, and they are easy to read and understand by machines, but like phone numbers are difficult to remember by humans. Examples of them look like this: &#xA0;(IPv4 -&gt; 12.244.233.165), (IPv6 -&gt; 2001:0db8:0000:0000:0000:ff00:0042:7879). These addresses are assigned to every computer that connects to any computing network, and each device gets one of each. The reason you get one of each is because IPv4 wasn&apos;t designed with a large enough address space for how many computers we have today. Our growth scale has surpassed it, and IPv6 was created to handle a larger address space. However, even though IPv6 has been around for many years, it hasn&apos;t been commonly adopted and the network needs to support both so that older setups can still function properly. So when you connect to your WiFi at home, your device is getting one of each of these addresses, and they are what allow your device to access the internet and receive the responses from your web requests.</p><p>Fun factoid is that IPv4 can handle 4,294,967,296 addresses; close to 4.3 billion. IPv6 on the other hand can handle 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses. It&apos;s honestly incredible to see that fully written out and to see how large it is. The idea is that the address space in IPv6 is so large that every device ever made could have its own unique address. In IPv4, we&apos;ve already created so many devices that there isn&apos;t enough room for each device to get its own. To deal with this, we&apos;ve created sub networks that have one or a few dedicated IPv4 addresses that can be accessed from outside it via the public internet. Inside of those sub networks they have another separate address space that acts as its own internet and it allows reuse of IPv4 address ranges internally. Think of how multiple cities can have the same road name, but that we don&apos;t confuse them because they aren&apos;t located in the same geographical area. That&apos;s the same concept used for networking to allow the server networks to run properly without colliding with the public internet&apos;s list of addresses.</p><p>How does this get over to what a web domain is? Well, the web domain is what organizes the sub networks that exist around the world into easily read and remembered text names. It&apos;s also a critical part of networking that allows underlying IP addresses to be linked to a name that doesn&apos;t change even though the IP addresses can change. It&apos;s hierarchical, like a tree structure, and all starts with what we call top level domains (TLD). The root level is the highest above all the top level domains, and it is the dot (.). However, that dot is largely implicit, so you don&apos;t see it explicitly typed out in web addresses. All web domains are implicitly connected to dot, so that there is a common root for all of the TLD to branch from. </p><p>Web domains are read right-&gt;left instead of left-&gt;right like the English language, and they are organized by a group called the Internet Corporation for Assigned Names and Numbers (ICANN) that owns all of the top level domains that exist in the internet. Top level domains (TLD) are the right most part of a web domain address with common examples being &apos;.com&apos;, &apos;.org&apos;, &apos;.net&apos;, and &apos;.info&apos;. ICANN is responsible for all of these names, but they do delegate the management of the naming servers of the TLDs to certain companies as well. For instance, a U.S. company called Verisign manages the TLDs of &apos;.com&apos; and &apos;.net&apos;.<sup>1</sup> There are many TLDs, and each of them is for a specific purpose. There are ones for generic use like &apos;.com&apos;, ones that are specific to a country like &apos;.uk&apos; for the United Kingdom, ones that are sponsored like &apos;.app&apos; by Google, there&apos;s one for infrastuctural purposes like the first ever created TLD &apos;.arpa&apos;, and reserved TLDs like &apos;.localhost&apos; which is used for local application development.<sup>1</sup></p><p>Now how do URLs relate to this? Well they are the string of characters that designate client requests to servers looking for information. [<em>In computer programming, text is commonly referred to as a string. Dubbed so because a string of individual characters make up words, sentences, labels, or other structures that we can use to identify certain aspects of computing with.</em>] The Uniformed Resource Locator (URL) is a structured string that breaks down an internet/web request into specific parts that the individual computers on the internet use to pass messages. The image at the top of this article displays most of them, but we&apos;ll break them down here below. </p><p>Using the example above we have: http://animals.example.com/dogs/poodle?color=black&amp;puppy=false</p><ol><li>Protocol: http</li><li>Protocol and domain separator: ://</li><li>Sub-Domain: animals.</li><li>Domain: example.</li><li>Top Level Domain: com.</li><li>Path: /dogs/poodle</li><li>Query Parameters Separator: ?</li><li>Query Parameters (the ampersand is the separating character): color=black&amp;puppy=false</li></ol><p>The URL parts above specify different aspects of a network request created by a client being sent to a server. The protocol specifies the network rules that are used to transmit the data between the two entities, and in this case it is the Hyper Text Transfer Protocol (HTTP). The domain portions are used to determine the address of the server by using Domain Naming System (DNS) to map the chain of names to an IP address on the internet (IPv4 or IPv6); in this case the domain is a sub-domain of example.com and is animals.example.com. The path identifies the specific resource on the server that the client is trying to access; which is /dogs/poodle, so we&apos;re trying to find a dog that is of the poodle variety. Finally, the query parameters are additional key-value pairs of data that are sent to further filter the resource that is being requested at the given path; which are color=black&amp;puppy=false, so in this case we&apos;re looking for a black poodle that isn&apos;t a puppy.</p><p>Putting that all together, and you have a fully defined URL that is attempting to request a resource (a file, some data, pictures, or all of the above) from a server. However, just because the request is well defined, doesn&apos;t mean that there is anything on the other end to receive it. That&apos;s why sometimes when you type a URL into your browser window it will tell you that it can&apos;t find it or that it doesn&apos;t exist. This could be because server doesn&apos;t even have that resource, or may not be configured to handle requests looking for /dog/poodle. It could even be that a server hasn&apos;t been linked to the domain of animals.example.com. So there&apos;s an important distinction to be made that even though a client may request something, there has to be a computer programmed to receive the request otherwise the request will fail. There are a plethora of reasons why a request could fail as well, and with regards to HTTP requests the error codes returned help the client identify and remediate the issues. We&apos;re going to table this thought though and return to it later on when we discuss some of the common computing layers present today. They are what allow us to break up website productions into separate portions so that we can build more robust products more efficiently. </p><p>An additional omitted part of the URL is the port, which appears between the domain labels and the path. The reason that it can be omitted here is that the protocol chosen, HTTP, has default connection ports of 80, and 443. The chosen port depends on whether or not the server is serving the content with clear text on port 80 or with Transport Layer Security (TLS; previous version was named Secure Socket Layer - SSL, and SSL is still a common term in computer tooling) on port 443. If not specified the request will default to 80, but the server can use port redirection on its end to force the client request to change to port 443. It can do this programmatically in the application layer, or it can handle it with a production web server. The concepts of application layer and production layer will get discussed later on as well when we dive into website building.</p><p>Explicitly stating the port would change the URL to something similar to, http://animals.example.com:80/dogs/poodle?color=black&amp;puppy=false, with the port being any number up to 65,535 (without the comma). However, not all ports are available for independent use and some are reserved for specific software companies or common software products.<sup>2</sup> So the important distinction is that after the domain name, and before the path, we can explicitly state the port with :&lt;port_number&gt;.</p><p>Alright, we&apos;re definitely getting into it now. That&apos;s enough for Part 2. We&apos;re going to pick it up again in Part 3. To summarize what&apos;s been covered to this point; a high level introduction to internet concepts, context to why web domains exist, a brief web domain definition and introduction, and introduced how web domains are commonly used by describing some portions of Uniform Resource Locators. The pace is starting to pick up, so it may be best to couple your readings of these articles with your own research. If I&apos;ve made any errors here, or you have feedback you&apos;d like to share, please leave a comment and I&apos;ll get to it as soon as I&apos;m able.</p><p>Part 3 will start to get into Web Development concepts through discussion of common web application breakdowns. Then we&apos;ll tie that into how the web domain connects to a web application to allow it to serve traffic on the human readable name. Things that we&apos;re starting to get into will be DNS Management Companies, Cloud Providers, and web application layers (front end/back end). Networking will be an aspect of how everything connects together so as we go forward it&apos;s going to be an ever present theme.</p><p>We&apos;re starting to get to the most interesting and fun bits. Going to get more complex as well so comment your questions if you have any. Thanks for reading, and I hope you enjoyed it! :)</p><p>Cheers,</p><p>DaSeventhHogie</p><p></p><p></p><p>Bibliography:</p><ol><li><a href="https://www.cloudflare.com/learning/dns/top-level-domain/?ref=blog.daseventhhogie.com">https://www.cloudflare.com/learning/dns/top-level-domain/</a></li><li><a href="https://www.techtarget.com/searchnetworking/definition/port-number?ref=blog.daseventhhogie.com">https://www.techtarget.com/searchnetworking/definition/port-number</a></li><li><a href="https://en.wikipedia.org/wiki/List_of_IP_version_numbers?ref=blog.daseventhhogie.com">https://en.wikipedia.org/wiki/List_of_IP_version_numbers</a></li><li><a href="https://www.guru99.com/difference-ipv4-vs-ipv6.html?ref=blog.daseventhhogie.com">https://www.guru99.com/difference-ipv4-vs-ipv6.html</a></li></ol>]]></content:encoded></item><item><title><![CDATA[Web Domains (Part 1: High Level Concepts of the Internet)]]></title><description><![CDATA[<p>Alright squad, this one is going to be a bit more technical, so let&apos;s get prepared for it. We&apos;re going to dive into the networking first principles that most of the internet is based off of. We won&apos;t get incredibly deep, but we&apos;</p>]]></description><link>https://blog.daseventhhogie.com/web-domains/</link><guid isPermaLink="false">63394cc656aaa45c9dc0fe51</guid><dc:creator><![CDATA[Timothy Hogarty]]></dc:creator><pubDate>Tue, 04 Oct 2022 06:16:55 GMT</pubDate><media:content url="https://blog.daseventhhogie.com/content/images/2022/10/web_domains.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.daseventhhogie.com/content/images/2022/10/web_domains.jpeg" alt="Web Domains (Part 1: High Level Concepts of the Internet)"><p>Alright squad, this one is going to be a bit more technical, so let&apos;s get prepared for it. We&apos;re going to dive into the networking first principles that most of the internet is based off of. We won&apos;t get incredibly deep, but we&apos;ll be touching some key aspects that are often over-complicated and attempt to simplify them. The intent is to demystify the elements in a more common language so that we lower the barrier of entry and lift the gate for newcomers. We&apos;ll break this up into multiple parts so that we don&apos;t hammer you with too much information all at once. Also, I&apos;m strongly against the use of custom non-common acronyms because I believe in cognitive simplicity and like to reduce cognitive overhead. If you want to read more about what those terms mean I suggest this <a href="https://review.firstround.com/cognitive-overhead-is-your-products-overlord-topple-it-with-these-tips?ref=blog.daseventhhogie.com">article</a>. I will only use acronyms that are useful and common. The ones used in this article are:</p><ol><li>Points of Interest (POI)</li><li>Global Positioning System (GPS)</li><li>Internet Protocol version 4 (IPv4)</li><li>Internet Protocol version 6 (IPv6)</li><li>Internet Protocol (IP)</li><li>Domain Naming System (DNS)</li><li>Internet Service Provider (ISP)</li><li>Uniform Resource Locator (URL)</li></ol><p>We want to be comprehensive, and we want to use analogies that can be understood by most people because of their physical experience with the world around them. Often times the speech used for these concepts is too narrow to easily grasp the knowledge possessed within. We&apos;re going to attempt to broaden it so that anyone can believe that they&apos;re capable of becoming a web developer, which I strongly believe to be true. We&apos;ll be discussing the computer and groups of computers using analogies involving humans, communication, cars/boats/trains/planes, roads, and houses/buildings/POI. Basically, computer logistics follow human logistics in a large way. There will definitely be gaps even in this attempted explanation so you&apos;ll need to be able to use your creative imagination to be able to follow along. I am not claiming that all of these things possess the same exact characteristics, but I am claiming that the shared characteristics in these elements help us understand how things work together. So let&apos;s get to it! </p><p>Starting off, let&apos;s breakdown what a computer is in some simple high level terms. It is a machine that is able to store and process instructions rapidly and in a predictable manner. You tell it to do something in a way that it understands, and it will do it the same way every time (more or less true depending on how new the device is). It is a singular device that has physical boundaries associated with it. Just look at your phone, laptop, or desktop PC. They have physical boundaries that contain that memory for storage and processing capability, and they need electrical power in order to operate. You must either have a rechargeable battery in it that allows it to operate without being plugged in, or you will need it to be plugged in directly to a power outlet. In our day, most people rarely interact with these machines without a screen and input method like a keyboard+mouse (or touch pad), or through a touch screen. We call the interaction method with the device the interface to the device. </p><p>To help understand that, the interface that you use to operate your car (with an automatic transmission) in the basic terms are the ignition switch/button that requires some form of key, the steering wheel, the brake pedal, and the gas pedal. The rest of the options are somewhat superfluous to actually moving the vehicle but they&apos;re still important for communicating with other vehicles, and for ease of use of your own. However, the car won&apos;t run unless you have fuel in it (gas or electric), the key to start it up, and actually provide inputs to the interface to move it, slow it down/stop it, and steer it.</p><p>Describing a computer that way, you can see that it has memory, it can process what it contains in memory, and that it must be given input to these things for it to do anything. Just like the car, we don&apos;t need to understand every portion of how it&apos;s operating under the hood for us to be able to interact with it in a way that&apos;s useful to us. With the car, it can store and shelter what it contains (ourselves and our stuff), and it can also transport those items. With the computer it stores, shelters, processes information, but it can also transfer that information to other computers. In both scenarios, you only need a single one to store and shelter the contents, but you need multiple to make larger scale things happen.</p><p>Let&apos;s expand on this and start including the roadways and the buildings/houses. In order for the car to get anywhere efficiently it needs to know where it&apos;s coming from, where it&apos;s going, and needs to have a pathway to get there. The roads are the pathways and they have names/directions associated with them. The buildings/houses/POI are the locations and they have addresses that describe them. Which region of the world they are in, which pathway they&apos;re on, and at which point on that pathway you&apos;ll find them. </p><p>Time to expand just a little bit further. All of this requires communication to the human, you, to provide you with the method to follow the path to its end. Long ago, before we starting drawing pictures and writing things down, you would need to be told by a fellow human where to find the water and food. What dangers lie along the way, what mistakes they&apos;ve made in discovery, and how long the journey would take. To reduce the amount of time the describing human needed to use in order to share this information with you, humans created artifacts that would eliminate the need for verbal communication. We started creating maps that would handle those details for us so that we could use our time for other things. Nowadays, all of this happens digitally and in an instant. Not only can we look up the place we&apos;re looking for, but we can also be guiding there each step of the way with a dedicated GPS device or the GPS application on your mobile device.</p><p>Computer networks were built on all of these same principles. The computers must have a way of reaching each other with information in order to display and handle the applications that manage our social lives, studies, finances, insurance, entertainment, business, etc.. They do so by sending and receiving information much like we send and receive ourselves/things with vehicles around our world. They have pathways that connect them together, and they have addresses that specify their locations. The computers communicate with each other on basically an advanced, hyper-quick version of Morse code. The dots and dashes in Morse code were high and low voltage signals being sent over a wire, and the computer sends those same high and low voltage signals in certain coded patterns to each other. That&apos;s how they communicate. The pathways are very similar to our world&apos;s pathways as well, but they have more flexibility because information can be sent via radio and electromagnetic waves wirelessly as well as on the wire. The wired connections are like the roadway systems we have, and the wireless connections are the offroad vehicles like jeeps, dirtbikes, boats, and aerial vehicles such as planes and helicopters.</p><p>So how does all this tie into web domains? Well, the web domain is the human readable internet address for an internet presence, and it is managed by a system known as the Domain Naming Service (DNS). The actual computer addresses that network devices use for network traffic follow IPv4 and IPv6 (Internet Protocols version 4 and 6), and are the currently used Internet Protocol versions that handle internet addressing. The internet presence that you have is basically your digital sanctuary which you should have full control over managing. You can do it all via physical devices in a physical space that you own or rent, or you can manage it all virtually via rented devices through cloud internet providers (companies that let you rent out computing resources and manage their connecting network). The former requires a deep mastery of computer networking and will demand administration of at least one networking device and at least one computer. Plus, the former may leave you with troubles interacting with your chosen Internet Service Provider (ISP). The latter is currently the popular demand and most businesses are rapidly adopting it. The cloud management of your web domain involves understanding the principles that you would use to physically manage your domain also. The difference is that you will need to translate it to what the cloud provider decides their naming structure for the same concepts will be. They all distinguish themselves by providing their own flavor of the real juice of what&apos;s happening to avoid boring their customers, but to me, it just makes it all very confusing.</p><p>Those details in the last paragraph are what we want to dive into with more depth. Demystifying what each of those concepts are, and especially applying it to managing your web domain with a cloud internet provider. Over the next few articles we&apos;ll discuss DNS management companies, uniform resource locators (URLS), networking protocols, cloud internet providers, and the concepts involved therein. To avoid information overload, we&apos;ll stop Part 1 here, and move into Part 2 to begin explaining those concepts. Hope you enjoyed this one! Get excited for more! :)</p><p>Cheers,</p><p>DaSeventhHogie</p>]]></content:encoded></item><item><title><![CDATA[The How]]></title><description><![CDATA[<p>Alright, we have the why (first blog post) now we need the how. The simple answer is Google it! Seriously though, learning how to effectively search for the answers you&apos;re looking for is the most primary skill in life that we all need. So becoming competent with Google</p>]]></description><link>https://blog.daseventhhogie.com/the-how/</link><guid isPermaLink="false">631176e653d70c9212405c2d</guid><dc:creator><![CDATA[Timothy Hogarty]]></dc:creator><pubDate>Mon, 05 Sep 2022 03:27:03 GMT</pubDate><media:content url="https://blog.daseventhhogie.com/content/images/2022/09/ZenTeaCeremony.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.daseventhhogie.com/content/images/2022/09/ZenTeaCeremony.jpg" alt="The How"><p>Alright, we have the why (first blog post) now we need the how. The simple answer is Google it! Seriously though, learning how to effectively search for the answers you&apos;re looking for is the most primary skill in life that we all need. So becoming competent with Google or a similar search engine is extremely important to quickly becoming a software developer. It can be done with libraries, books and mentors, but if you have that available use it. However, mentorship in a good software engineering practice is still helpful. I intend to describe my practice in this post. I am making the assumption that because you&apos;ve arrived here you know how to operate a computer in at least a basic way. This assumes you have the following prior knowledge:</p><ul><li>You know at least the high level of what a computer/mouse/keyboard/display is.</li><li>How to get them all connected and powered on.</li><li>How to navigate to a web browser, and how to operate the search bar by typing in a search or a web address in the brower&apos;s search bar and initiating the request with the ENTER/RETURN key (or whatever is present in that key location on your keyboard).</li><li>A solid handle of the English language and the capability to look up things that you don&apos;t understand about what&apos;s present here.</li><li>An understanding that programming computers is about determining what instructions to give a computer to then get a result that you want.</li><li>An understanding that a computer has many, many layers at which you can interact with it and that the portion of the computer doing the actual work takes an immense amount of study to become familiar with.</li><li>Some idea that computers have many different programming languages that they can run if they have right software installed for it.</li><li>Some patience with any errors that you find here. If you&apos;re capable of being kind with your words please leave a comment (feature set coming soon) if you believe that there is something incorrect about my claims. I&apos;ll update it if it makes sense.</li><li>The rest is up to me to make this useful. So let&apos;s dive in. :)</li></ul><p>We all have great ideas, ambitions, goals, but not many people get there. It all comes down to execution. For computers, execution can get very tricky. Starting off, it&apos;s difficult to get your head around certain concepts. Then, as you start to get an understanding (and see some small success) you might veer away from some solid first principles of life that we should be following. False confidence is the result of those small successes without deep reflection of what&apos;s happening. With false confidence we start doing things in a way that is too complicated to be followed by anyone but the original author. The author might make assumptions about prior knowledge and not meet people where they are. Don&apos;t fall into that trap, and please always work in a way that others can easily follow. Let me walk you through some of my experiences to highlight the reasoning behind this.</p><p>When I was first exposed to programming through one of my introductory engineering courses in college, I could not handle it. I remember taking my shirt off and throwing it against the wall in frustration while my roommate laughed at me not being able to understand loops. </p><p>In that situation, I was tasked with writing a short MATLAB script that would simply output a 10x10 grid with either a 1 or 0 in each grid position; depending on whether or not the position was along the diagonal from top left to bottom right. If the position was along the diagonal then it needed to output a 1, and in all other positions it needed to output a 0. The end result looked something like the following in the MATLAB output window when you ran the script:</p><figure class="kg-card kg-code-card"><pre><code> 1 0 0 0 0 0 0 0 0 0
 0 1 0 0 0 0 0 0 0 0
 0 0 1 0 0 0 0 0 0 0
 0 0 0 1 0 0 0 0 0 0
 0 0 0 0 1 0 0 0 0 0
 0 0 0 0 0 1 0 0 0 0
 0 0 0 0 0 0 1 0 0 0
 0 0 0 0 0 0 0 1 0 0
 0 0 0 0 0 0 0 0 1 0
 0 0 0 0 0 0 0 0 0 1</code></pre><figcaption>MATLAB Script Output</figcaption></figure><p>For the life of me I could not tell you how I did this then, and I&apos;m really not a fan of MATLAB nor do I currently have a use case for it. If I did this now I would use Python3 (in depth reading of that language <a href="https://docs.python.org/3/tutorial/?ref=blog.daseventhhogie.com">here</a>). The following is the copy of a file named <strong>the_how.py</strong> saved to my Windows 10 (computer operating system aka computer OS) machine that I have Ubuntu installed on through the Microsoft Store. Ubuntu is a flavor of Linux and itself is a computer operating system. The Microsoft Install of it onto Windows 10 came with Python3 pre-installed. Python3 works on almost any OS and if you don&apos;t already have it on your machine, Python3 installation instructions are <a href="https://realpython.com/installing-python/?ref=blog.daseventhhogie.com">here</a> (I myself have not gone through this so if there&apos;s an issue please comment):</p><figure class="kg-card kg-code-card"><pre><code class="language-Python3">#!/usr/bin/python3

ones_column_position = 0

for row in range(10):
    for column in range(10):
        if column == ones_column_position:
            print(&quot;1&quot;, end=&quot;&quot;)
        else:
            print(&quot;0&quot;, end=&quot;&quot;)

        if column &lt; 9:
            print(&quot; &quot;, end=&quot;&quot;)
        else:
            print(&quot;&quot;)

    ones_column_position += 1</code></pre><figcaption>Python3 code that produces the same output as the MATLAB output above</figcaption></figure><p>This Python3 code does the following: </p><ul><li>It starts with what is called a <em>Shebang </em>line. Which is an identifier for your computer to determine where the python3 interpreter is on your machine. It can be omitted, but omitting it can have side effects which is something we absolutely want to avoid when programming. We want our code to only do what we intend it to do.</li><li>It initializes a <em>variable</em> <em>(programming container for data)</em>, named <strong>ones_column_position</strong>, to the value of <strong>0</strong>. It is named <strong>ones_column_position</strong> to indicate that this variable is keeping track of where the 1&apos;s should be as we construct our grid. We&apos;re constructing our grid one row at a time and as we&apos;re going the column position for the 1&apos;s increases by 1 for each row.</li><li>Then we start a <em>for loop</em> <em>(programming construct for repeating certain instructions for a specified number of times)</em> that will iterate 10 times (the Python3 range function is a little bit of a complex one to explain, so take a look at its documentation <a href="https://docs.python.org/3/library/functions.html?ref=blog.daseventhhogie.com#func-range">here</a>). It contains a iteration variable <strong>row</strong> that will change each time that we run the instructions inside of it. The variable <strong>row </strong>will start as 0, then it will be 1, then it will be 2, etc... until it reaches the value of 9 and that will be the last time that it runs the instructions contained within it (indicated by levels of indentation). We won&apos;t actually be using the <strong>row </strong>variable, but often times for loop definitions require you to specify an iteration variable and its name helps us understand the loop&apos;s purpose. It is guiding our row construction.</li><li>Inside the first for loop we have another one with the same characteristics but it needs a different iteration variable <strong>column </strong>so that we don&apos;t have conflicting names. The computer is just like us in that it needs separation of names in order to easily understand that there&apos;s a difference to be accounted for. The <strong>column </strong>variable will also change from 0-9 as the for loop is processed. This <strong>column </strong>for loop will be run a total of 10 separate times as the <strong>row </strong>for loop containing it is dictating that. This for loop is guiding our column construction for each row.</li><li>Inside the <strong>column </strong>for loop we have the real meat and potatoes of what this code is doing. This is where the computer is making the decisions on when to do things in certain situations, and then also what to do when those situations are met. For our example, the inside of the <strong>column </strong>loop will be run 100 times. This is because the <strong>column </strong>loop itself has 10 iterations, and then the <strong>row </strong>loop is running the <strong>column </strong>loop 10 times as well. So 10x10 == 100, and that is how we end up creating our grid.</li><li>Now we have statements that are called conditionals. The <em>if </em>statement is a programming construct that says, &quot;if this condition is true, then run the code inside of the if block&quot;. It is chained to an <em>else </em>statement which is code that will run if the first conditional is not met. Basically it&apos;s <em>if </em>condition do x; <em>else </em>do y. In our situation, for the first conditional, the condition is <strong>column == ones_column_position</strong>. Which is checking to see if the current value of the variable <strong>column </strong>is equal to the current value of the variable of <strong>ones_column_position</strong>. We do this to tell the computer when to print out a 1 (which we&apos;re wanting to place on the diagonal) and when to print a 0 (which should be in every other grid position). </li><li>Hoping that the light bulb in your head turns on at this point, and you see that we&apos;re just telling the computer to create one grid position at a time. We&apos;re giving it detailed instructions to keep performing the same tasks one step at a time. The computer is just very quick to actually perform the tasks you give to it.</li><li>Inside of the conditional is a Python3 function called <strong>print()</strong> that allows us to output some data to the stdout of the environment that runs the code. In this case it&apos;s a terminal window that is running the Ubuntu operating system described earlier in this article. For more information about the <strong>print() </strong>function check out its documentation <a href="https://docs.python.org/3/library/functions.html?ref=blog.daseventhhogie.com#print">here</a>.</li><li>The second conditional is setup to provide formatting so that we are actually creating spacing between grid positions and creating newlines after each 10 positions. Without that additional formatting to create space and newlines the output would just be a straight line like the following:</li></ul><figure class="kg-card kg-code-card"><pre><code>1000000000010000000000100000000001000000000010000000000100000000001000000000010000000000100000000001</code></pre><figcaption>What would happen without the formatting of the second conditional</figcaption></figure><ul><li>Now we come to the final line, which is a simple increment reassignment of the <strong>ones_column_position </strong>variable to replace its value with 1 more than it previously was. So if <strong>ones_column_position </strong>was 5 before that line, it will be 6 after it. Additionally, we need to place this line in the correct position outside of the <strong>column </strong>loop, but inside of the <strong>row </strong>loop so that it gets incremented a total of 10 times; starting at 0 and ending at 9. This allows us to get that cascading output we&apos;re looking for with just a single column addition at a time.</li></ul><p>Alright, so we&apos;ve walked through the high level of what our code is doing, and we&apos;ve described that we have an environment that is capable of running it. To actually run it, you just type the following into your Ubuntu terminal window and you get the following output:</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">user@machine:~$ python3 the_how.py
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
user@machine:~$ _</code></pre><figcaption>Terminal window output when running the_how.py with Python3</figcaption></figure><p>So why is any of this significant? Because it&apos;s an example of the process of understanding your work well enough to be able to explain it in the simplest of terms. There was the first challenge of needing to do this for course work in order to keep moving forward towards earning my degree. That was extremely painful, but it helped me grow. However, I still didn&apos;t understand the bigger picture of what I was doing until years later. I knew that I wanted to be able to create websites or a web presence in order to conduct business online, but having that goal in mind and then getting there without someone expressly looking to help you achieve that goal is a lot. Thankfully, I had many different people provide input to my growth and I am so appreciative of that blessing in my life.</p><p>So what is needed is exploration, reflection, understanding, and then paying it forward to those behind you. The most important step that I&apos;m trying to highlight here, is the <em>paying it forward to those behind you</em>. It takes a lot of work to condense and summarize your experience for someone new. That&apos;s why it&apos;s hard for people to meet you halfway when you&apos;re trying to learn. Then think about how hard that would be to scale if you didn&apos;t take the time to write it down. The best way to really reach down and pull people up is to document your experience so that you can point to it when having conversations with people. It&apos;s also a good way to highlight things that you know if you&apos;re looking for new opportunities. So there&apos;s just a plethora of valuable things that come from sharing your work with others.</p><p>One last important point is this, &quot;Slowly is the fastest way to get to where you want to be.&quot; - Andr&#xE9; De Shields (video clip <a href="https://www.youtube.com/watch?v=fm8tHCLk9QY&amp;ref=blog.daseventhhogie.com">here</a>). </p><p>Another way this was framed for me when I worked at Jackson&apos;s Mighty Fine Food and Lucky Lounge; is that if you take the time to do something correctly the first time then you won&apos;t have to do it again. So be patient with your work and stand up for sustainable pacing. I really like daily practices that are self contained so that nothing is ever overextended. It avoids burn out so that you can consistently lay a brick on your foundation day after day. Eventually, what you&apos;re trying to build will exist and you&apos;ll be sitting in the shade of the trees you planted. Don&apos;t fall for the tricks of impatient leadership. Those people will lose in the end because they&apos;re looking for immediate results instead of progress over the long term that benefits everyone involved. Instead, develop the &quot;Frame of the Veteran&quot; (A concept that was shared to me via Alex Hormozi on Instagram). Simply put, if you don&apos;t quit then you won&apos;t lose. Eventually you&apos;ll win.</p><p>That&apos;s my how. If it changes I intend to come back to this and update it. The intention is to keep a single source of truth for each conceptual idea so that as it evolves the knowledge storage evolves with it.</p><p>Next up, were going to be talking about developing a web presence for yourself! Starting with web domains and some of the interesting use cases that I&apos;ve seen that are incredibly beneficial for the authors.</p><p>Thank you so much for taking the time to read this! Let&apos;s keep cracking onward and upward.</p><p>Cheers,</p><p>DaSeventhHogie</p>]]></content:encoded></item><item><title><![CDATA[The Why]]></title><description><![CDATA[<p>What&apos;s up people! How we doing today? Great? Glad to hear it. Let&apos;s dive in and get started on this journey together.</p><p>Here&apos;s the why behind this blog. As many people are starting to see, the path to gaining the correct skills in order</p>]]></description><link>https://blog.daseventhhogie.com/the-why/</link><guid isPermaLink="false">630d9a6953d70c9212405b13</guid><dc:creator><![CDATA[Timothy Hogarty]]></dc:creator><pubDate>Tue, 30 Aug 2022 06:49:57 GMT</pubDate><media:content url="https://blog.daseventhhogie.com/content/images/2022/08/Why.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.daseventhhogie.com/content/images/2022/08/Why.jpg" alt="The Why"><p>What&apos;s up people! How we doing today? Great? Glad to hear it. Let&apos;s dive in and get started on this journey together.</p><p>Here&apos;s the why behind this blog. As many people are starting to see, the path to gaining the correct skills in order to become competent is difficult to find because of all the options available out there. So how does somehow determine what is really necessary when creating something?</p><p>Well, for me it starts and ends with first principles. We need to look at what causes individuals to be successful, and then look at how they can come together as a team. Then it&apos;s important to look at team&apos;s abilities to be successful together vs what causes them to crash and burn. </p><p>My favorite examples of individuals and teams come from my passion in football (Non-USA, Rest of World). For players, there were many great individuals that displayed mastery of craft; Ronaldinho, Zidane, Original Ronaldo, Thierry Henry, Figo... There&apos;s too many to name, but without those types of players the teams wouldn&apos;t have been able to go as far as they did. They led from the battlefield. The top Individual Contributors if you will. </p><p>For teams I like studying the Ferguson era at Manchester United, and the Barcelona La Mesia Squad that dominated world football for years under several different leaders. The leadership are the orchestrators. The symphony players that place the right groups together at the right times. Handling the friction that results and attempting to create a smooth process for all. These were my first studies for excellence in my journey. My desire to be a professional player myself really dictated that interest. </p><p>So what can we learn there? Well, without getting into the weeds, it&apos;s that results cannot be seperated from the process that created them if we want them to be consistently successful. Sure, there&apos;s luck, circumstance, etc., but there&apos;s a low probability that those types of things were heavily involved with long term success. Another thing that you&apos;ll probably notice if you look at this long enough is that the leaders are directly involved with the process of achieving results. It&apos;s never a situation where they just tell the players to score goals and then leave them to it. They are actively describing the process that each player needs to do individually to perform their role better, and then how the players can combine together to gain advantages in the match for themselves. Details, details, details. Everyone was trying to perfect their craft in order to achieve the glories of success.</p><p>So how does this translate to technology? Well, there&apos;s a difference for purpose of starting for many. There&apos;s an enormous amount of people in it just for the money or the status. If you join a corporate software organization you will see a smorgasbord of varieties of this. If the team isn&apos;t on the same page about approach towards results then you can imagine what that might turn into because it&apos;s an information game instead of a physical game. The medium is slightly different, but the characteristics will be the same. The leader needs to be extremely well versed in the medium if success is to be found. </p><p>However, in sports there&apos;s a self contained spectrum of possiblities within a well defined boundary. With technology, it&apos;s endless. We absolutely need to dictate the process intentionally to achieve our end goals. The leader needs to be experienced in a breadth of areas; enough to be able to start defining the tools that will be used internally, what they&apos;ll be used for, why they were chosen, &#xA0;and the general structure that the product will be built with. Then, they need to be able to communicate that vision properly to their team. The only way that I can see that working well in a timely fashion for software is through documentation. We just simply don&apos;t have time to pass on our skills through a word of mouth process. We also don&apos;t have time to always hold meetings for knowledge sharing. Most meetings are pointless, but we&apos;ll get into that later.</p><p>Knowledge storage and sharing is absolutely crucial to team success in any endeavor of life. You need a singular source of truth that is clear, to the point, and doesn&apos;t rely on prior knowledge to be useful. It needs to be self explanatory, and it also needs to include ALL of the steps needed to access it and follow it correctly. Right now I see so many examples of tech communication that don&apos;t take the other person&apos;s perspective into account. The authors make assumptions about things or forget that they have gained things along the way that make their documents sensible for themselves, but not for others. </p><p>I&apos;ve gained an abundance of little tidbits along the way that need to be organized properly so that someone else who is curious to follow can absolutely do that. My goal is to accelerate progress for other&apos;s in the way that I would have liked it to be done for me. Explaining the internet in a straight forward fashion so that there aren&apos;t so many dots to connect from so many different sources that you then piece together into a sensible picture for yourself. It&apos;s necessary to be able to have a model that will work well for many of the tech issues that we face.</p><p>I intend to make that a reality. This is my output method for doing so. Subscribe and get updates on when posts come out explaining my process for getting stuff done with computers and providing services that will benefit your surroundings in a truly beneficial way. Hopefully, the readers will also see some important parallels to life strategies that can be used in other areas as well. </p><p>Thank you so much for taking the time to read my first blog post! I had a great time writing this and I&apos;m excited for what&apos;s to come. Let&apos;s get cracking!</p><p>Cheers,</p><p>DaSeventhHogie</p>]]></content:encoded></item><item><title><![CDATA[Hello World!]]></title><description><![CDATA[<p>This is DaSeventhHogie&apos;s Tech Tips, a brand new site by Timothy Hogarty that&apos;s just getting started. Things will be up and running here shortly, but you can <a href="#/portal/">subscribe</a> in the meantime if you&apos;d like to stay up to date and receive emails when new</p>]]></description><link>https://blog.daseventhhogie.com/coming-soon/</link><guid isPermaLink="false">63058d8653d70c9212405987</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Timothy Hogarty]]></dc:creator><pubDate>Wed, 24 Aug 2022 02:31:34 GMT</pubDate><media:content url="https://blog.daseventhhogie.com/content/images/2022/08/HelloWorld.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.daseventhhogie.com/content/images/2022/08/HelloWorld.jpg" alt="Hello World!"><p>This is DaSeventhHogie&apos;s Tech Tips, a brand new site by Timothy Hogarty that&apos;s just getting started. Things will be up and running here shortly, but you can <a href="#/portal/">subscribe</a> in the meantime if you&apos;d like to stay up to date and receive emails when new content is published!</p><p>The intention is to use this blog to help create a beautiful and loving world together.</p><p>Cheers,</p><p>DaSeventhHogie</p>]]></content:encoded></item></channel></rss>