<?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: Paul D. Paradis</title>
    <description>The latest articles on DEV Community by Paul D. Paradis (@pauldparadis).</description>
    <link>https://dev.to/pauldparadis</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%2F301733%2Fa655e0f3-d7f2-4d6a-ab65-fe5da5dd3a00.jpeg</url>
      <title>DEV Community: Paul D. Paradis</title>
      <link>https://dev.to/pauldparadis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pauldparadis"/>
    <language>en</language>
    <item>
      <title>Base 10, Base 2, Base 8, Base 16- part 1</title>
      <dc:creator>Paul D. Paradis</dc:creator>
      <pubDate>Wed, 22 Jan 2020 00:59:42 +0000</pubDate>
      <link>https://dev.to/pauldparadis/base-10-base-2-base-8-base-16-part-1-27ic</link>
      <guid>https://dev.to/pauldparadis/base-10-base-2-base-8-base-16-part-1-27ic</guid>
      <description>&lt;p&gt;In order to be able to do assembly language programming, we are obliged to use other number systems besides the one we normally use.&lt;/p&gt;

&lt;p&gt;Our number system utilizes an organizational principle called 'place value' to keep relationships between differently sized numbers in the proper order. When we denote place value, we generally move to the left. As we move another 'place' to the left, we increase the numerical value of that particular 'place' by a specific amount. The amount of increase is denoted by the 'baseness' of the counting system, or in other words the base value. &lt;/p&gt;

&lt;p&gt;The basic idea looks something like this:&lt;/p&gt;

&lt;p&gt;10^5       10^4      10^3      10^2     10^1      10^0&lt;br&gt;
100000     10000     1000      100      10        1&lt;/p&gt;

&lt;p&gt;For base ten, this means that every successive 'place' is ten times the amount of the preceding base. So moving from right to left, we have the units place, tens place, hundreds place, etc... &lt;br&gt;
To help us in counting, we have 10 numerical symbols, 0 through 9. (In case you did not know, 0 is always the first number counted in anything computer science related.)&lt;/p&gt;

&lt;p&gt;However, computers do not process instructions in terms of base 10. Referring to our last post, when a computer acts on a programming language (through the compiler, interpreter, etc...) those instructions are transformed into groups of electrical patterns, and those patterns are placed into individual containers located on the memory chips placed on a stick of ram. Because the computer is dealing with electrical patterns, each container in the memory chip is either going to be on (charged) or off (not charged). Because there are only two possible states at play here, the system of binary was created to help us interpret the rendering of programming languages as machine code.&lt;/p&gt;

&lt;p&gt;Another name for binary is base 2. Looking at our earlier explanation of base 10, we can infer that base 2 means that every successive 'place' to the left is 2 times greater than the place before it, so we have our units place, 2nds, 4ths, 8ths, 16ths, 32nds, 64ths, 128ths, etc...&lt;/p&gt;

&lt;p&gt;Binary can be represented like this:&lt;/p&gt;

&lt;p&gt;2^5 2^4 2^3 2^2 2^1 2^0&lt;br&gt;
32  16  8   4   2    1&lt;/p&gt;

&lt;p&gt;Because we only have two numbers, 0 and 1, an actual binary number will look something like 10001010101110000111. The number 5 in binary would look like this: 101. Referencing the short chart above, we can understand that there is a 1 in the 4's column, a zero in the 2's column, and a 1 in the 1's column. If you meditate on this for a few minutes, you should be able to get the basic idea.&lt;/p&gt;

&lt;p&gt;Up next: building on decimal and binary, moving into octal and hexadecimal.&lt;/p&gt;

</description>
      <category>asm</category>
    </item>
    <item>
      <title>Adventures in learning x86 Assembly part 1</title>
      <dc:creator>Paul D. Paradis</dc:creator>
      <pubDate>Mon, 13 Jan 2020 01:53:13 +0000</pubDate>
      <link>https://dev.to/pauldparadis/adventures-in-learning-x86-assembly-part-1-2lk6</link>
      <guid>https://dev.to/pauldparadis/adventures-in-learning-x86-assembly-part-1-2lk6</guid>
      <description>&lt;p&gt;I have decided to teach myself Assembly language programming. To help myself ingrain what I am learning (and to hopefully benefit anyone who may be interested), I am going to blog about my experience. Let's begin.&lt;/p&gt;

&lt;p&gt;A. What is assembly language?:&lt;/p&gt;

&lt;p&gt;Assembly language is the lowest level programming language there is. Every other language utilizes built-in layers of abstraction to simplify the process of programming in order to make it easier for the developer to interact with the machine.&lt;/p&gt;

&lt;p&gt;Conversely, when programming in Assembly, there is no layer of abstraction between the machine and the programmer. A programmer coding in assembly is working directly with ram and cpu, with no buffer. This can make the process of writing code much more tedious, but the reward is much deeper insight into how the cpu and ram interact. Taken to its logical extreme, an expert assembly language programmer can be considered a true master of computing, one who thoroughly understands computing processes at the deepest level. &lt;/p&gt;

&lt;p&gt;The basic idea here is that what programmers write as code (Java, Python, C, Lisp, etc...) is transformed into something known as machine code, and this machine code is what the computer uses to run programs. What machine code is in essence is a string of electrical patterns.&lt;/p&gt;

&lt;p&gt;B. These patterns of electrical currents are represented to our human minds as binary&lt;/p&gt;

&lt;p&gt;When a program is running on a pc, program code is placed into ram and then moved to the cpu, the cpu reads these instructions and this causes the computer to perform some action. The instructions are presented to the cpu as patterns of electrical currents. &lt;/p&gt;

&lt;p&gt;This is the reason for the 'memory' part of ram- memory modules contained in a stick of ram are basically sets of containers for electrical currents.&lt;/p&gt;

&lt;p&gt;Because the instructions the cpu reads are patterns of electrical currents, the patterns will display various arrangements of on and off currents within the memory cells in ram. Because of this fact, the counting system known as binary has been utilized to help us (human programmers) work with these patterns of electrical currents. Essentially, a 1 is used to represent that particular memory address as being charged (current is on) while a 0 represents a memory address as being off (no charge is present at that particular memory address).&lt;/p&gt;

&lt;p&gt;Assembly language is a type of shorthand notation that simplifies the way binary is represented, using another counting system known as hexadecimal. &lt;/p&gt;

&lt;p&gt;Next article: binary, octal, and hexadecimal.&lt;/p&gt;

</description>
      <category>asm</category>
      <category>beginners</category>
      <category>assemblylanguage</category>
      <category>baremetalprogramming</category>
    </item>
    <item>
      <title>Assembly language learning series- intro post</title>
      <dc:creator>Paul D. Paradis</dc:creator>
      <pubDate>Wed, 08 Jan 2020 04:08:47 +0000</pubDate>
      <link>https://dev.to/pauldparadis/assembly-language-learning-series-intro-post-2pio</link>
      <guid>https://dev.to/pauldparadis/assembly-language-learning-series-intro-post-2pio</guid>
      <description>&lt;p&gt;My name is Paul D. Paradis. I have been teaching myself to program, first with C++, and recently with Python. Lately I have determined that I want to dive deeply inside computers in general and so I have decided to learn Assembly language programming. That determination transpired in my mind around the time that I discovered this online community, so I have decided to blog about my experiences. &lt;/p&gt;

&lt;p&gt;So consider this my introduction. I am currently working on my first real post. I plan to post as I learn, so my progress may be a little slow. First I plan on discussing general computer science principles, and after establishing the underlying theory, I will be moving into the actual process of learning to program, posting my attempts and results as they transpire. Please feel free to give feedback. &lt;/p&gt;

&lt;p&gt;I hope that you'll derive as much benefit from this experience as possible. Thanks for taking the time to read this. Be on the lookout for the first substantive posting to appear soon. Thanks again for any and all interest.&lt;/p&gt;

</description>
      <category>asm</category>
    </item>
    <item>
      <title>Greetings from north of Boston, Mass.</title>
      <dc:creator>Paul D. Paradis</dc:creator>
      <pubDate>Fri, 27 Dec 2019 06:48:51 +0000</pubDate>
      <link>https://dev.to/pauldparadis/greetings-from-north-of-boston-mass-5ma</link>
      <guid>https://dev.to/pauldparadis/greetings-from-north-of-boston-mass-5ma</guid>
      <description>&lt;p&gt;Greetings. My name is Paul. My wife and I live in the greater Boston area, and I am working on changing careers. I was a music teacher for a long time, and when I burned out on that career path, I floundered professionally for a few years before realizing that I wanted to go into i.t. Currently I have been fixing printers at Harvard university for the last year, which has given me good experience working with hardware and also developing a command of networking basics. My long term career goals are focused on infosec.&lt;/p&gt;

&lt;p&gt;I have been learning programming for the last 2.5 years approximately. My first attempt was centered around C++, and I have also been learning Python for about a year. For a while I had moved away from C++ to learn Python exclusively, and now I am at a point where I want to focus on both of them. &lt;/p&gt;

&lt;p&gt;My goals with learning programming relate to my interest in infosec, especially on the pentesting/ethical hacking side. I realized early on that I did not want to become a 'dev' of any stripe or variety- I don't want to get into full stack web development, software development, q.a. testing, or anything like that. I have the utmost respect for those men and women who develop expertise in those information technology disciplines, but my intuition has indicated to me that I would burn out fairly quickly if my profession was exclusively focused on writing code.&lt;/p&gt;

&lt;p&gt;I am interested in being thoroughly conversant with programming so as to be able to read source code for malware and hacking tools, and to replicate malware to understand how it works, and also write tools for hacking/pentesting. I am not interested in black hat hacking, but in understanding what black hat hackers do so as to help secure information networks and computers. If there is anyone in this community that has experience with this I would be interested in communicating with them.&lt;/p&gt;

&lt;p&gt;I am also learning assembly language programming. I don't want to be an expert assembly programmer, but I do want to clarify and cohere my understanding of how computers actually work, how the cpu and ram interact, how a program accesses memory addresses and the role of the chipsets and the rest of the hardware, and also how the bios/uefi underpins the whole mechanism of the operating system and overall functionality of the computer. I am intent on spending a few months looking at assembly language programming (AMD x86_64 CISC processor architecture) to deepen my understanding of this whole process. I might even write about my experiences with this journey on here. &lt;/p&gt;

&lt;p&gt;My other areas of focus with this i.t. journey involve certifications (currently preparing to finish up CompTIA A+ technician certification), being involved by a professional sysadmin to hone my skills with Linux. After I satisfy my curiosity about assembly, I will be moving on to look at algorithms and data structures, using a learning approach cultivated by competitive programmers.&lt;/p&gt;

&lt;p&gt;In general, I like to stay busy, push myself, and be always looking to improve. Once I have transitioned into an actual i.t. job, I will be able to reassess and hone my focus. For now, I'm going to utilize a combination of my own internal guide and feedback from the various communities I'm active in to develop in a thorough and grounded way. I look forward to being part of this community. &lt;/p&gt;

&lt;p&gt;p.s.- please excuse any grammatical/spelling errors. For some reason I thought it would be a good idea to compose this thing at 1:30 a.m. I live life on the edge. &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
