Google Developer Nanodegree Scholarship and Impostor Syndrome: I got both! :)

Great news this morning: I got an email from Udacity saying that I was among the 1000 students selected from phase 1 to get a 6month Nanodegree scholarship!

Phase 1 was the Google Developer Challenge I completed this winter (a 3month program spanning from November to February).

I was somewhat convinced I wouldn’t make it to the 2nd selection and I even had my “anyway argument” ready: “anyway I would be at school at the time of the nanodegree, so it doesn’t matter”.

“It doesn’t matter” : remember that phrase, it’s almost always a lie. It DOES matter that my efforts are recognized by a once in a life-time opportunity.

“It doesn’t matter”: so I completed all the required exercises, sometimes twice, sometimes thrice, but I did not participate in the forum and slack space as much as I thought was required to get into the second phase. I didn’t give it my 100%. I gave it my 90% but not my 100%.

The distance between those 90% and 100% is full of impostor syndrome’s feelings and beliefs (aka: full of crap). Facing the complexity of some exercises, my confidence melted. I thought I wasn’t good enough to be in that program. I thought the questions I wanted to ask on the forum were not good enough. I thought that, being a fraud, I had no right to ask for help…

People with impostor syndrome are not objective at all about their accomplishment. They think it’s never enough (quantity) and never good enough (quality).

I don’t know how to deal with it. I know that it drives me to avoid interacting with people in my cohorts, to avoid asking for help, to feel guilty about taking a time out… All these being unbalanced and unhealthy things, the way out is probably to do the opposite, even if it’s scary: interact, ask for help, get enough rest.  Those must be my goals now.

That being said, I’ve just turned form “I’m concentrating on school” to “I’m doing both school AND the nanodegree”.  (I’m not turning the opportunity down.) So that was me today:

“Brain, Body, listen. I need your FULL collaboration.”

via GIPHY

Explaining functions

As a beginner, when you get to the point of learning functions, it may seem a bit difficult at first.
Why? Well, so far, you have worked with concrete things, like assigning value to a variable: age = 20, name = “Joanna” etc.
Loops and conditional statements are also concrete, up to that point.

But functions require you to rise to a new level of abstraction. It’s not much, really, but the jump itself may seem unusual and frightening.

I have found an example which may help you! Spoiler, it involves cakes! so I hope it will appeal both to your brain and your stomach.

****

Remember you have to do two things with a function: first, you define it. That is, you design your tool. But a tool is useless as long as you don’t use it, right? So the second thing is that you have to call the function: you’re now using it.

  1. Defining a yummy function

ok , so I’m not using any programming language here, just some kind of pseudocode vaguely inspired by JavaScript.

We’ll define a function that makes…cakes! 😀

function makeACake()

This function is like a recipe. You’re the Chef and you’re designing a recipe.
Now, see those parentheses after the name of your function?
This is where you’ll place your ingredients.
For the moment, we will only place generic ingredients, and we will see the specifics later:

function makeACake(flour, sugar, egg, fat)

Alright! Our intention is set: make a cake, and we have listed the ingredients that will be needed. Remember that at this point we are only imagining how to make cakes, we are not actually making a cake.

Now we need to describe the process and the steps to make a cake.

function makeACake(flour, sugar, egg, fat){
...
...
}

(sorry for the indentation that isn’t being displayed…)
Inside the curly brackets, we will put things you have already seen  like defining variables, giving them values, make operations with it etc..

function makeACake(flour, sugar, egg, fat){
var dough = flour + sugar + egg + fat;
}

Ok, we’ve got the dough! now let’s play a little and add a method to it, to cook that cake. So let’s say your programming language has a built-in function called .bake()

You see that .bake() has parentheses like functions have, and we will use them.

function makeACake(flour, sugar, egg, fat){
var dough = flour + sugar + egg + fat;
var cake = dough.bake(350F, 30min);
}

YEAH! At this point, the recipe is almost ready. But you need to include one more thing: when you bake a cake, you have to take it out of the oven before you can eat it. That’s what return does. (I very often forget to return the result of my functions…and then wonder why it doesn’t seem to work! :D)

function makeACake(flour, sugar, egg, fat){
var dough = flour + sugar + egg + fat;
var cake = dough.bake(350F, 30min);
return cake;
}

OK! Your recipe is complete. But we have designed a function, we haven’t made actual cakes with that function, right?

Before we dive in to the next step, let me explain a few things. The things you’ve listed in the function parentheses are called parameters. Parameters = placeholders. They are abstract notions.

Now when you will make actual cake, you will replace those parameters with real things. When you call a function (when you make a real thing) the parameters become arguments. To remember which is which: Argument : Actual, Parameter: Placeholder.

Let’s get into the kitchen and have fun with that function!

    1. Calling that function to get yummy results

Let’s say you have a friend coming over for tea, and your friend is vegan and allergic to gluten. Using your function, you’ll make a cake they can enjoy. This is how you do it:
var veganCake = makeACake(riceFlour, whiteSugar, veganEggReplacement, oil);

Now let’s say you’re helping a friend organizing a HUUUUUUUGE party. You need a huge cake!
var hugeCake = makeACake(whiteFlour, whiteSugar, autruchEgg, butter);

What if you have a friend who only eat organic, unrefined sugar and ghee in place of fat? Piece of cake! (yeah you waited for that one, right?:D)
var organicCake = makeACake(wholemealFlour, brownSugar, commonEgg, ghee);

So you see, you can make an infinite variety of cakes, using only one definition. The definition is abstract and uses placeholders to design the process, but the cakes are real and are made of real things.

A note concerning the parentheses of our .bake() method: we called .bake with actual arguments, right? We didn’t need to define the method with parameters, because it is built in the language. That means it is already defined, and the .bake method has already parameters. all this has been defined by the (imaginary) authors of our pseudolanguage. You can guess those parameters are:
.bake(temperature, time)

If you’re a beginner, I hope this helps. Sometimes documents and course materials are very abstract themselves and it’s not easy to…crack the code. But you’ll get there! At first reading MDN documents was a nightmare but now I get it. Just keep trying and remember to reach out when you’re stuck.

Now excuse me, a cake is waiting for me.

via GIPHY

CSS : calc()

The calc function is a great way to size your elements.

How it works:
Calc() operates with values of identical units, as well as with values of different units.
You can set calc() as a value of any sizing properties, and you can also use them for angles.

It can be a life-savior in situations where you need responsiveness.

For example, you can use it like this:


div {
height: calc(100vw / 10);
width: cacl(100vw / 10);
}

*NB: “vw” stands for Viewpot Width. 100vw = total width of your viewport.*

What this code does is that it gives you a responsive square div, the size of which is 1/10 of the viewport width. A square it is, a square it will be.

Here is an example of how I used it: a mosaic of the Eye of Sauron!

EDIT: Someone did it better than me, using several columns per row and Bootstrap4. See Jerome Legrand’s solution here.

a mosaic representation of the Eye of Sauron
an exercise: keep the aspect ratio of the image whatever the screen size

Webdesign integration

D-19 before school!

I really can’t wait!

I’m saying goodbye to roles and responsibilities I will no longer be able to take.  (I have been a volunteer secretary/community manager for a nonprofit organization for almost 5 years)

Saying goodbye properly and preparing the arrival of the person who will come after me is quite a lot of work in itself, and I feel a bit nostalgic, but also happy of what I achieved there. I was the youngest there and the most in tune with the tech world. So they were glad to have me. I implemented a newsletter with mailchimp, opened a facebook page with another volunteer, took care of the attendees’ questions, found solutions for various mailbox troubleshootings, managed attendees’ registration, organized carpools for the events…

It was multiskilled and I am grateful for this opportunity to discover how I could be useful. It was lots of fun.

So, I’m in that intermediary state, between the end of something and the beginning of another.  It’s kind of a weird feeling!

I’m focusing on integrating webdesigns I was given by the school. First creation : the Fruit Salad website, mobile version. I’ll add the media queries tomorrow.

You can see it here!

🙂

a webdesign example for a fruit salad website
Integrating the “Fruit Salad” design – mobile version