<?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: Caleb Watters</title>
    <description>The latest articles on DEV Community by Caleb Watters (@calebwatters).</description>
    <link>https://dev.to/calebwatters</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%2F170221%2F1ddf7e90-5aeb-4fbc-9ff4-b5bf8d3e1a18.jpg</url>
      <title>DEV Community: Caleb Watters</title>
      <link>https://dev.to/calebwatters</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/calebwatters"/>
    <language>en</language>
    <item>
      <title>First Contact with C++</title>
      <dc:creator>Caleb Watters</dc:creator>
      <pubDate>Fri, 19 Jul 2019 02:42:08 +0000</pubDate>
      <link>https://dev.to/calebwatters/first-contact-with-c-2bfl</link>
      <guid>https://dev.to/calebwatters/first-contact-with-c-2bfl</guid>
      <description>&lt;p&gt;I recently started to play around with C++, primarily for my own personal side projects and came to find that it is a really interesting language to learn, especially at this stage of my learning process. As opposed to interpreted languages like Ruby and Javascript, C++ is a compiled language. There is a ton of great information about the differences between compiled languages vs interpreted languages out there so I won’t spend too much time discussing it in this post. In very basic terms, compiled languages require a compiler vs and interpreter (sort of self explanatory), but while they are called different things, their functionality is fairly similar in that it is responsible for taking the piece of code you wrote and turning it into something a computer can execute upon. In the case of C++, and other 'compiled' languages, is that this is a separate process. You must first run the compiler, and if all goes well, you will have an executable piece of code. &lt;/p&gt;

&lt;p&gt;Another interesting fact about C++ is that it was one of the first languages to implement an object-oriented approach to programming. While there are some key distinctions between the class structure of Javascript and C++, primarily that under the hood JS still uses prototypal inheritance, with ES6 some of their visual structure is similar. The main difference, however, is that for a class declaration, conventionally you create two different files. One is a header that creates the class and declares all of its functions, and then a separate C++ file that defines all of the 'public' and 'private' methods for the class. The 'public' are able to be accessed anywhere in the program, whereas 'private' may only be accessed within the class. C++ also has a third method type called 'protected' which is similar to that of 'private' methods, but they can be accessed inside of child classes or derived classes. Similar to ES6 classes, there are also static methods in C++, which are part of the class definition but not a part of the object that it creates.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Base {
public:
   // public members go here
protected:

   // protected members go here
private:
   // private members go here
};
~~~~

One very odd thing about C++, at least for someone coming from a background of primarily using languages like Ruby/Javascript, is that C++ requires that you import libraries to do some of the most basic functions. For example, you have to import a standard input/output library called iostream in order to build a CLI application. C++ is also a strongly typed language which means, among many others, in any function declaration you must declare the data-type that you want said function to return. C++ also deals with manual memory allocation which is not a concept that I am currently well versed in, but one that I am very interested in learning about. 

![](https://thepracticaldev.s3.amazonaws.com/i/wsyoxvlbkzuxi26gruh2.jpg)

Essentially it involves understanding the different types of memory you have access to within a C++ program (heap/stack) and how the functions in your program take up space. There is also the concepts of references and pointers which deal with finding data based on specific memory addresses. In languages like Ruby or Javascript, all of these issues are things you will never have to think about while writing your program, but become an important topic when discussing scalability of C++ programs. 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>cpp</category>
    </item>
    <item>
      <title>AWS Lambda &amp; Ruby</title>
      <dc:creator>Caleb Watters</dc:creator>
      <pubDate>Fri, 14 Jun 2019 15:46:00 +0000</pubDate>
      <link>https://dev.to/calebwatters/aws-lambda-ruby-5426</link>
      <guid>https://dev.to/calebwatters/aws-lambda-ruby-5426</guid>
      <description>&lt;p&gt;After just recently learning how to use the Rails framework, I looked into what it would take to deploy that application. Heroku is an inexpensive option for doing so, however I was interested to see if there were better alternatives for ruby/rails app development in general. There is obviously no end of information out there on the subject, considering how long Rails has been relevant. However, while researching deployment strategies, I came across some information on a relatively new Ruby framework that uses an AWS Lambda to deploy. &lt;/p&gt;

&lt;h5&gt;
  
  
  Here is a snippet from the AWS lambda splash page
&lt;/h5&gt;

&lt;p&gt;&lt;br&gt;
&lt;code&gt;AWS Lambda lets you run code without provisioning or managing servers. You pay only for the compute time you consume - there is no charge when your code is not running. With Lambda, you can run code for virtually any type of application or backend service - all with zero administration. Just upload your code and Lambda takes care of everything required to run and scale your code with high availability. You can set up your code to automatically trigger from other AWS services or call it directly from any web or mobile app.&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;There is a lot of other great information on Lambdas on both the AWS Lambda page and on the Ruby on Jets website. Essentially, Jets functions as a framework similar to Rails, but now that AWS Lambda supports Ruby functions, it allows you to build serverless applications. There is a great follow along blog post on Medium for how to build and deploy a Jets app. &lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://hackernoon.com/serverless-ruby-on-aws-lambda-with-the-jets-framework-989147f9d07b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZBPRL_CM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/fit/c/100/100/1%2A9wJhZy7dY04snNg2u9KwBA.jpeg" alt="Phil Nash"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://hackernoon.com/serverless-ruby-on-aws-lambda-with-the-jets-framework-989147f9d07b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Serverless Ruby on AWS Lambda with the Jets framework&lt;/h2&gt;
      &lt;h3&gt;Phil Nash ・ 8 min read&lt;/h3&gt;
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aYMKNcyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-fbdac08496f06c5bd53be920c7bc8d56d355b69c0fb7e49cac6357a70140af17.svg" alt="Medium Logo"&gt;
        hackernoon.com
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;As a companion piece to this article I plan to write about a build of my own using Jets and what my thoughts are on its learnability. Much of it's format looks very similar to that of Ruby, however it does require that you have a some degree of understanding when it comes to Labmdas. The docs have been hugely beneficial in the research I have done thus far. I will also attach another Medium article on creating Lambda functions in Ruby. &lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="https://hackernoon.com/build-a-ruby-based-lambda-function-44f3d006fef6" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8IdOVcXW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/fit/c/100/100/1%2AxNLrSt30PNzLhKCQDJrNFQ.jpeg" alt="Mohamed Labouardy"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://hackernoon.com/build-a-ruby-based-lambda-function-44f3d006fef6" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Build a Ruby based Lambda Function&lt;/h2&gt;
      &lt;h3&gt;Mohamed Labouardy ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aYMKNcyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-fbdac08496f06c5bd53be920c7bc8d56d355b69c0fb7e49cac6357a70140af17.svg" alt="Medium Logo"&gt;
        hackernoon.com
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Essentially the combination of Ruby support for writing Lambdas and the Jets framework allows you to build an entire application in Ruby alone. While I understand that most would not opt for a front-end written in Ruby/.erb, it is technically an option that is available to you. Considering that I am someone with a somewhat comfortable understanding of Ruby and Rails, that is something that feels tangible.&lt;/p&gt;

&lt;h5&gt;
  
  
  Conclusion:
&lt;/h5&gt;

&lt;p&gt;Jets is a fairly new framework that allows developers to create 'serverless services' through the use of AWS lambda, which now supports Ruby. &lt;/p&gt;

&lt;p&gt;I plan to continue documenting my learning journey as I struggle through teaching myself how to write lambdas in Ruby to eventually building a full scale Jets application from the ground up.&lt;/p&gt;

&lt;h5&gt;
  
  
  References:
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://hackernoon.com/serverless-ruby-on-aws-lambda-with-the-jets-framework-989147f9d07b"&gt;https://hackernoon.com/serverless-ruby-on-aws-lambda-with-the-jets-framework-989147f9d07b&lt;/a&gt;&lt;br&gt;
&lt;a href="https://hackernoon.com/build-a-ruby-based-lambda-function-44f3d006fef6"&gt;https://hackernoon.com/build-a-ruby-based-lambda-function-44f3d006fef6&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/lambda/"&gt;https://aws.amazon.com/lambda/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://rubyonjets.com/docs/"&gt;https://rubyonjets.com/docs/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>jets</category>
      <category>aws</category>
      <category>rails</category>
    </item>
  </channel>
</rss>
