Image for post
Image for post
Photo by Helloquence on Unsplash

Amazon Web Services (AWS) is currently the most prominent provider of serverless technologies with support for over 150 services. AWS Lambda is Amazon’s version of Functions as a Service (FaaS). With a FaaS like AWS Lambda, a developer can write small pieces of functionality that can be deployed to the cloud servers and run on an as needed basis. With this design, you only have pay for the server time you use, which is great. So how do you get started with AWS Lambda? Note, for this tutorial, we will be using Node.js®.

There are several items you will need to setup before you can create a lambda function in the cloud. If you have not already done so, please follow the instructions in the AWS documentation to setup an account, install the command line interface (CLI), and configure the CLI. Additionally, you will need to install npm and Node.js®.

I first started using Git and GitHub a few years ago when I began a full-stack web development program called Launch School. After learning the basics at the beginning of the program, students are encouraged to commit each problem and assignment from there on out, which I did as I progressed through the courses. Here is where I went wrong: thinking I was being efficient, I committed the assignments in bulk at the end of each lesson. I had learned about the tools, practiced with the exercises, and become comfortable with the basic commands, but in a way, I was missing the point of Git and GitHub completely. …

This summer, I returned to the Trinity Alps of Northern California to enjoy the sweet and simple life of backpacking. I enjoy backpacking for the cool mountain lakes, sleeping under the stars, and the sense of independence, but it was not always an activity I was so fond of. I started at a young age, and like most kids, I used to complain about my feet, squirm under the uncomfortable weight on my shoulders, and repeatedly ask ‘how much farther’. In truth, the discomfort never really goes away.

In fact, I was once told, backpacking is less about becoming a skilled long-distance hiker and more about learning how to be uncomfortable. I recalled this thought on the first day of the trip, and again, when recently applying to my first software development job. …

“Effective practice is consistent, intently focused, and targets content or weaknesses that lie at the edge of one’s current abilities”.

This quote is from a TED Ed lesson called “How to practice effectively for just about anything”, which Chris Lee, a Launch School instructor, shared with the student community not long ago. For a less than 5 minutes video, I am surprised by how many times I’ve thought about it’s message since. The idea has come up in conservation with friends, challenged me in code reviews at work, and nagged at me when studying late into the night and energy for learning new content is low. …

1.) In Terminal, login to Heroku: heroku login.

2.) Initialize a git repository for your project : git init (Careful! Do not nest Git repositories).

3.) Add a specific Ruby version number to the Gemfile if you have not done so already. Example: ruby 2.3.3

4.) Add specific production and development methods to app_name.rb (optional). Example:

# app_name.rbrequire 'sinatra'
require 'sinatra/reloader' if development?

5.) Switch to use a production web server in the Gemfile. Whichever server you declare, it should be able to handle concurrent requests. Webricks, the default server, is single-threaded, and therefore cannot handle concurrent requests. …

Throughout the learning process, every student will have concepts she or he does not feel comfortable with, but usually can get by without fully understanding. This common circumstance is one place where a mastery-based learning departs from traditional learning.

In the moment, its hard to tell where you are with your newly acquired knowledge. Should you feel solid about it? Will more clarity come if you keep going? In general, you feel fuzzy about the concept. Dealing with it is mildly uncomfortable, and in fact, annoying like an itch on your foot while wearing socks and shoes. If you find yourself here and aiming for mastery-based learning, scratch that “itch”! Go explore the concept. Read other sources. Write about your confusion. Talk with others. …

As a new programming student, I grasp for black and white rules to follow when learning a new concept, and the case of self vs. @ was no different. It was not clear when I should use self and when I should use @ to access instance variables. I researched in books and online, looking for a rule that would eliminate my confusion. Instead of finding one answer, I found a whole variety. Unfortunately, for the beginner in me at this stage, it seems there is no straight answer to this question.

What I realized, however, is self vs. @ is a question and a decision I will face every time I write a custom class and/or instance method in object oriented programming. This fact points to a subtler side of problem solving that web development requires and illuminates a next level of sorts in my learning: designing code. If level one is you can find a solution to the problem, this next level is you can find multiple solutions from which you’ll pick the best option. Designing code is understanding the decisions you face as you program and knowing the advantages and disadvantages of your options. This is what is required when faced with the situation of self vs.


Jocie Moore

Software Engineer | Co-creator of BAM! serverless framework (

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store