<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrew Rawson</title>
    <description>The latest articles on DEV Community by Andrew Rawson (@techjunkiedru).</description>
    <link>https://dev.to/techjunkiedru</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2483616%2F71e49de7-cd86-4af7-ac6b-5b102f040511.jpg</url>
      <title>DEV Community: Andrew Rawson</title>
      <link>https://dev.to/techjunkiedru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techjunkiedru"/>
    <language>en</language>
    <item>
      <title>CS104: Building a hardware stack in Python</title>
      <dc:creator>Andrew Rawson</dc:creator>
      <pubDate>Wed, 29 Jan 2025 03:01:09 +0000</pubDate>
      <link>https://dev.to/techjunkiedru/cs104-building-a-hardware-stack-in-python-2k3e</link>
      <guid>https://dev.to/techjunkiedru/cs104-building-a-hardware-stack-in-python-2k3e</guid>
      <description>&lt;p&gt;Here we are approaching the finale of Codecademy's CS Certifictation. The final project involves building a simulation of a hardware stack in Python.&lt;/p&gt;

&lt;p&gt;This has been an interesting journey for me up to this point. I built a PC last August and decided to install Linux on it. It had been over a decade since I had last tinkered with Linux and I wanted to give it a go. Then I decided I wanted to learn more about the languages that drive Linux. So I learned a little bash scripting. Then I started learning Python. Then I completed all of the free Python courses offered by Codecademy. Then I signed up for a premium account and started taking the Career Path courses and here we are.&lt;/p&gt;

&lt;p&gt;I've spent the time between August and now learning about a variety of things, but I've probably been working exclusively in Python for about 4 months now. It took a little longer to get through some parts than I had anticipated, but I am also building something of my own. Courses are great, but you've gotta build stuff to really learn.&lt;/p&gt;

&lt;p&gt;More on that to come when I have more to show. For now let's get back to the project.&lt;/p&gt;

&lt;p&gt;This program is a Python program that emulates a MIPS instruction set. The memory is 1024 bytes with 32 registers and 16 bytes of cache. It's way more than what was necessary for the provided instructions and data, but I wanted to explore things like programming for overflows, cache hits and misses, and system logging. I also wanted to try and program more operations than just what was needed to complete the provided instructions. I've found that I really like Python and I tend to really get into it when I get an idea in mind. Case in point the aforementioned personal project. &lt;/p&gt;

&lt;p&gt;Here is a link to the &lt;a href="https://github.com/omcdrucifer/Computer-Architecture" rel="noopener noreferrer"&gt;CPU Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So as we reach the end of this course, the question is what now? &lt;/p&gt;

&lt;p&gt;Well, I'm not done with Python yet, I bought the technical manual from Rhienwerk Computing and I intend to get into that as it will allow me to explore beyond what has been taught throughout these courses and will be a nice companion to the docs. I also have some books on Linux I'd like to get through. I'd like to change careers, so I think I'll look into COMPTIA and some vendor certs, like MS Azure or AWS. We'll see. But I have come to discover I am very passionate about CS and I'd like to pursue something.&lt;/p&gt;

&lt;p&gt;Here's to the future!&lt;/p&gt;

</description>
      <category>pyth</category>
      <category>lear</category>
      <category>com</category>
    </item>
    <item>
      <title>Python Terminal Recommendation Engine</title>
      <dc:creator>Andrew Rawson</dc:creator>
      <pubDate>Sat, 14 Dec 2024 17:57:08 +0000</pubDate>
      <link>https://dev.to/techjunkiedru/python-terminal-recommendation-engine-4pag</link>
      <guid>https://dev.to/techjunkiedru/python-terminal-recommendation-engine-4pag</guid>
      <description>&lt;p&gt;Next up in the Codecademy CS Certification course is a recommendation engine. I wrote one that does a simple video game recommendation and returns 5 titles from one of 5 genres and allows the player to see a blurb about any of the titles from that list.&lt;/p&gt;

&lt;p&gt;The previous project focused on something with practical application to my current line of work, a financial calculator for loans and savings dividends. This one was geared more towards a hobby that I find myself engaging with less and less as I get deep into learning about computer science: video games.&lt;/p&gt;

&lt;p&gt;I sourced ratings for rankings from MetaCritic, but decided to use the player review scores rather than the reviewer scores for simplicity sake, as MetaCritic reports reviewer scores on a 100 scale and user scores on a 10 scale. &lt;/p&gt;

&lt;p&gt;The app runs with graphs and vertices. I used dicts to store the keys and values for the games and ratings, as well as for blurbs. I wrote a helper to auto load the data into the graph for the main script. &lt;/p&gt;

&lt;p&gt;This exercise also inspired me to start a personal portfolio project that will also use graphs, but allow me to work more with a TreeNode system as I haven't done much with that. &lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/omcdrucifer/Recommended-Games" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>codecademy</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Calculate savings with Python!</title>
      <dc:creator>Andrew Rawson</dc:creator>
      <pubDate>Tue, 26 Nov 2024 00:51:36 +0000</pubDate>
      <link>https://dev.to/techjunkiedru/calculate-savings-with-python-4bl</link>
      <guid>https://dev.to/techjunkiedru/calculate-savings-with-python-4bl</guid>
      <description>&lt;p&gt;I started learning coding and programming about a month and a half ago on Codecademy and decided to pursue a CS certification. This is my first ever project and I actually started it before I got the project assignment for Codecademy's CS Course. I fleshed it out to give it a bit of terminal eye candy before publishing it.&lt;/p&gt;

&lt;p&gt;A bit of backstory before I get into the nitty gritty of the codebase. I am a lifelong gamer. I started on the Atari 2600 when I was a wee boy and stuck with consoles all the way up to the Series X. Back in 2022 Valve announced the Steam Deck and reminded me that I had signed up for a Steam account back in college and kind of just forgot about it, because I never had a machine worthy of playing games.&lt;/p&gt;

&lt;p&gt;Fast forward back to 2022. I decided I really wanted a Steam Deck, and bought a laptop to revive my Steam account while waiting for my turn in the reservation queue. After I got my hands on the Deck, I realized what kind of monster Linux had become in the decade since I had last even touched it. So that inspired me to do what every gamer nerd ultimately does, if they are of the PC variety. I build my own computer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4ccajurmle99n5rzk51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4ccajurmle99n5rzk51.png" alt="Image description" width="754" height="1263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I knew from the offset that it was going to be a Linux box, I just had to get it put together first. After spending many many dollars acquiring and assembling parts, I had my beast, and it was ready for Linux. &lt;/p&gt;

&lt;p&gt;I started learning Bash and RPi and Linux. Then I wanted more. I knew Linux was comprised of bash, Python and C. So I signed up for Codecademy, tried the free 7 days for the paid methods, and kept it. Which brings us to today. &lt;/p&gt;

&lt;p&gt;I started writing Python functions as I started learning Python to flex my mental muscles outside of the course work. I work at a bank, so as I made my way through Intermediate and Advanced Python, I started putting together a calculator. First it was just loans, then it was certificates of deposit. Then I was learning how to use JSON and lambdas to create a table for money market dividend rates. &lt;/p&gt;

&lt;p&gt;I got it to where it could calculate all three formulas before even starting the CS Cert course, so when I got to this assignment, I decided to add visuals and other sugar to the syntax to make it a proper terminal game/app. &lt;/p&gt;

&lt;p&gt;The code uses classes and objects to do most of the work, save for the JSON/lambda shenanigans. There are a total of 5 classes in a family setup with a parent/child/grandchild relationship. The first class is the BankProduct class. It handles the flow of the rest of the app by passing the user to either the LoanProduct or DepositProduct logic depending on their first choice. If the chosen product is a savings product, the DepositProduct class repeats the same methods used by the BankProduct class to direct the user to either the Certificate logic or the MoneyMarket logic depending on how they answer the following prompt.&lt;/p&gt;

&lt;p&gt;The app is built for people who work with finances and would need a quick way to calculate these figures. So the expectation is that they would know at the very least the amount, interest rate, and term of the product. With this in mind, the products will ask for that information from the user and then do the math. The exact information required varies but some form of input is requested. For example, the user may enter the name of the loan product as the calculations work the same for all loan types. &lt;/p&gt;

&lt;p&gt;At the same time the names for "Certificate" and "Money Market" are static and so they are not required to be entered. And in the case of the Money Market account the dividends are dependent on the deposit balance, so the user does not have to enter the rate in that case, as the JSON has the tiered rates for money market accounts stored. As rates fluctuate with the market, a savvy user could edit the dividend rates in the JSON to reflect those changes. &lt;/p&gt;

&lt;p&gt;After providing the requested three or four pieces of information, the program does the calculations using algorithms scripted in, using the information provided by the user as the variables. The program will return all the information about the product (name, balance, rate, term) as well as monthly payment, total interest, and total balance paid for loans and total dividends and new balance for savings accounts. &lt;/p&gt;

&lt;p&gt;After returning the requested information, it will ask if the user wants to do another calculation. If the answer is yes, it will loop back to start, if no, it will terminate.&lt;/p&gt;

&lt;p&gt;Feel free to view the GitHub repo &lt;a href="https://github.com/omcdrucifer/Save-Loan-Calculator" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It was a lot of fun to write and I can't wait to see what I come up with next. Programming is fun! &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>webdev</category>
      <category>python</category>
    </item>
  </channel>
</rss>
