Weeknotes - 05 Makers
Tags: bootcamp, beginners, javascript, configfiles
Published: 2019-06-30 21:33:41

---
title: Weeknotes - 05 Makers
published: true
description: Reflections on the past week at Makers Academy
tags: bootcamp, beginners, javascript, config files
series: Makers weeknotes
---

# Week 5

This week... we learned JavaScript... ermergerd!  Learning JS made me realise how much I enjoy the friendliness of Ruby - but I'm convinced that comfort makes it harder to learn a new language.

## JavaScript

It's an asynchronous client-side programming language, that does whizzy things in the browser!  With [Node.js](https://nodejs.org/en/) it can be run server-side too.  It's become rapidly popular (especially with [codebar](https://codebar.io/) students!) because of it's use across the stack, it's shiny appeal and, probably, it's quirkiness.

I struggled with the need to write `function()` all over my code, but learning about how they're used to execute a block of code helped me understand Ruby better.
JS has special functions known as constructors which define properties and methods that will be inherited by their instances.  Imagine `Donkey` as a function. Every instance of a donkey will have the same donkey traits.  Say `jenny` and `jack` (who are instances of `Donkey`) are a bit slow when giving rides on the beach, you could use `prototype` on the `Donkey` function to add traits, such as the ability to append a `jetPack` to each and every donkey!

## Configuration Files

A pull request I made after doing some investigating into a bug (on a `.yml` file used by [Makers](https://makers.tech/) students to lint Ruby code) got accepted this week.  I hadn't really understood why YAML files were in the file directory but they were throwing errors when I linted my code and I wanted to know why!

Configuration files are used to configure settings in some programs.  These files should be human readable (arguably like all code files) and they can contain key/value pairs to specify configuration settings.

> :bulb: you may have seen general purpose config files (especially for open-source software) in `.json` `.xml` or `.yml` files, like:
> - [Rubocop](https://github.com/rubocop-hq/rubocop/blob/master/.rubocop.yml)'s YAML file
> - [ESLint](https://eslint.org/docs/user-guide/configuring)'s JSON file

Editing a configuration file gives you flexibility to use only the parts of a library you want, and to customise how someone else's file runs with your own code, so that you won't be limited to the default settings.

## Projects

During the week we wrote FizzBuzz in JS, and had a go at re-crafting the Airport challenge in JS (I had hoped not to revisit this one tbh).  We built a thermostat app to control temperature with a neat interface, and the weekend challenge was to create a Bowling scorecard - a two-weekender!

## Misc.

:camel: which way does the camel face in camelCase? (this way <--)

:zzz: I didn't look after myself too well which meant sleep deprivation and I've learned my lesson the hard way.

:waxing_gibbous_moon: Every now & then one should remember to surf the [Space Jam](https://www.spacejam.com/archive/spacejam/movie/jam.htm) website.

:rainbow: The Makers summer party was great! I learned some hula-hoop and saw an [ashy mining bee](https://www.bumblebeeconservation.org/ashy-mining-bee/)!

:clap: Thanks to Oliver for helping me unravel JS at LEGO codebar.