The Journey of #100DaysOfCode (@henna_dev)

#Day49 of #100DaysOfCode

Today was a sunny day and good fun as well. We have a Sunday market close to where we live and we visited that. There was a lot of good food to eat and handmade crafts from local artists to buy :heart_eyes: I bought myself a pair of earrings :revolving_hearts:

I studied JavaScript Functions today and coded a game and wrote after a long time.

:tada: Twitter: https://twitter.com/henna_dev/status/1508214207879204867

2 Likes

#Day50 of #100DaysOfCode

Today was a tiring day and a day of self-reflection :wink: I realized I have come a long way from where and how I began. There are always things I would like to go back to but that’s life, isn’t it… It goes On!

Today I was not able to do a lot as I got tired from the day’s work but I am soo happy I finished 50th day today and I kept the streak without breaking it :partying_face: :revolving_hearts: I am proud of myself :smiling_face_with_three_hearts:

I did another exercise and created a Sleep Debt Calculator using Arrow Functions…

:tada: Twitter: https://twitter.com/henna_dev/status/1508562292199370753

2 Likes

#Day51 of #100DaysOfCode

Today was an office day, and I had lunch with my favorite person :heart_eyes: She sets my head straight when I am exploding :stuck_out_tongue:
We soon will organize our first in-person MongoDB user group event in this amazing space :star_struck:

Today I studied scope in javascript

:tada: Twitter: https://twitter.com/henna_dev/status/1508942714758443013

2 Likes

#Day52 of #100DaysOfCode

Today was a little stressful and unhappy day. I don’t tend to cling on such days but in the moment it does not feel so great and all energy is sucked out of the body… I usually handle such days by going for a swim or lying down on the grass in sunny weather. Well, this time I will blame Irish weather for being gloomy, windy, and cloudy :stuck_out_tongue: A good night’s rest to the rescue :wink:

I gave a presentation on Realm to my community team. I do hope it was informational for them but it’s a huge topic so continuous byte size info should help :smiley:

I studied Javascript Arrays, tomorrow will continue the same on Arrays and Functions and Nested Arrays.

:tada: Twitter: https://twitter.com/henna_dev/status/1509281441745715211

2 Likes

#Day53 of #100DaysOfCode

Today was a KungFu Day… I love sports, I used to be captain on my school Kho-Kho team back in the days when I was in India… I also won gold medal in 400m Relay Race, 200m race and a sack race… :stuck_out_tongue: Those were good golden times…
I feel better now than I was yesterday… I have an amazing friend who never fails to keep his smile even in times of chaos and I absolutely love him for everything that he does :heart_eyes: I have soo much to learn :face_with_hand_over_mouth:

Today I finished Arrays and did an exercise to find a Secret Message. Updated the previous article and added Arrays and Functions and Nested Arrays but the exercise is below:

Can you define what each of the method does :wink:

let secretMessage = ['Learning', 'is', 'not', 'about', 'what', 'you', 'get',
 'easily', 'the', 'first', 'time,', 'it', 'is', 'about', 'what', 'you', 'can', 
'figure', 'out.', '-2015,', 'Chris', 'Pine,', 'Learn', 'JavaScript'];

console.log(secretMessage.length)
secretMessage.pop();
console.log(secretMessage.length)


secretMessage.push('to','program')

console.log(secretMessage)

secretMessage[7] = 'right'

secretMessage.shift()

secretMessage.unshift('Programming')

console.log(secretMessage)

secretMessage.splice(6,5, 'know')

console.log(secretMessage.join(' '))

Until Tomorrow… :performing_arts:

2 Likes

#Day54 of #100DaysOfCode

Today was a long day… but I enjoyed it… I like Fridays :heart_eyes: I talk to my amazing friend to end my week… :revolving_hearts: I can rather talk to him all day and bore him to death :stuck_out_tongue:

Today I finished Studying Loops in Javascript and I am left with 2 topics: Iterators and Objects before I can move on to Intermediate JS … :partying_face: Some review notes below

Loops in JavaScript

  • Loops perform repetitive actions so we don’t have to code that process manually every time.

  • How to write for loops with an iterator variable that increments or decrements

  • How to use a for loop to iterate through an array

  • A nested for loop is a loop inside another loop

  • while loops allow for different types of stopping conditions

  • Stopping conditions are crucial for avoiding infinite loops.

  • do...while loops run code at least once— only checking the stopping condition after the first execution

  • The break keyword allows programs to leave a loop during the execution of its block

Also implemented a program ‘Whale Talk’. Did you know Whale talks only vowels :wink:

var input = "Turpentine and Turtles";

const vowels = ['a','e','i','o','u'];

var resultArray = []

for(let i =0; i< input.length; i ++){
  //console.log(i)
     if(input[i]=== 'e'|| input[i] === 'u'){
            resultArray.push(input[i])
          }
  for(let j=0; j < vowels.length; j++){
      if(input[i] === vowels[j]){
          resultArray.push(input[i]);
      }
  }
}

console.log(resultArray)

var resultString = resultArray.join(' ').toUpperCase()

console.log(resultString)

Until Tomorrow… :performing_arts:

2 Likes

#Day55 of #100DaysOfCode

Today I went to town and I did some shopping and had a great Saturday dinner :stuck_out_tongue: I also managed to publish the International Women’s Day event which I would be organizing in our very own MongoDB office :partying_face:

Today I studied Higher-Order Functions, I did these before and at that time they were hard to grasp but Codecademy lessons are great, I have started to get the hang of it. Some Notes below:

Introduction

Higher-Order Functions help add a level of abstraction to programming. These functions can accept other functions as arguments and/or return functions as output.

Functions as Data

In Javascript, functions are first class objects. This means, Javascript functions can have properties and methods. Since functions are a type of object, they have properties such as .length and .name , and methods such as .toString() .

Read more about the methods and properties of functions in the Mozilla documentation.

Functions are special because they can be invoked, but can also be treated like any other type of data.

const checkThatTwoPlusTwoEqualsFourAMillionTimes = () => {
  for(let i = 1; i <= 1000000; i++) {
    if ( (2 + 2) != 4) {
      console.log('Something has gone very wrong :( ');
    }
  }
};

// Assigned a function with a longer name to a new variable 
const isTwoPlusTwo = checkThatTwoPlusTwoEqualsFourAMillionTimes;

isTwoPlusTwo();

console.log(isTwoPlusTwo.name)

Functions as Parameters

Since functions can behave like any other type of data in JavaScript, it can accept other functions as parameters.
A higher-order function is a function that either accepts functions as parameters, returns a function, or both! Such functions that get passed in as parameters are called callback functions. Callback functions get invoked during the execution of the higher-order function.

const higherOrderFunc = param => {
  param();
  return `I just invoked ${param.name} as a callback function!`
}
 
const anotherFunc = () => {
  return 'I\'m being invoked by the higher-order function!';
}
 
higherOrderFunc(anotherFunc);

In the above function, highOrderFunc accepts a single parameter param. This function is invoked inside the body and also returns a string telling us the name of the callback function.

High-Order Functions can also have anonymous functions as arguments

higherOrderFunc(() => {
  for (let i = 0; i < 0; i++){
    console.log(i);
  }
});

Review

  • Abstraction allows writing complicated code in a way that’s easy to reuse, debug, and understand for human readers.

  • We can work with functions the same way we work with any other type of data, including reassigning them to new variables.

  • JavaScript functions are first-class objects, so they have properties and methods like any other object.

  • Functions can be passed into other functions as parameters.

  • A higher-order function is a function that either accepts functions as parameters, returns a function or both.

That is all for today… :wink:

2 Likes

#Day56 of #100DaysOfCode

Today is race against battery, so here I go :wink:

2 Likes

@henna.s I am learning from you’re posts also. Keep up the well documented journey. It’s an inspiration! Thanks for a refresher course on higher order functions. :yellow_heart: I need more javascript everyday so it is appreciated.

2 Likes

#Day57 of #100DaysOfCode

Today was a long and tiring day. I came to Copenhagen yesterday for Realm off-site and team bonding activities. It was a full day of knowledge, getting to know team members but equally tiring as well…

Some sneak peek :wink:

Today I did an exercise to verify my understanding of Higher-order functions and Iterator methods

let story = 'Last weekend, I took literally the most beautifull bike ride 
of my life. The route is called "The 9W to Nyack" and it stretches all 
the way from Riverside Park in Manhattan to South Nyack, 
New Jersey. It\'s really an adventure from beginning to end! 
It is a 48 mile loop and it literally took me an entire day. 
I stopped at Riverbank State Park to take some artsy photos. 
It was a short stop, though, because I had a freaking long way to go. 
After a quick photo op at the very popular Little Red Lighthouse
 I began my trek across the George Washington Bridge into New Jersey. 
The GW is a breathtaking 4,760 feet long! 
I was already very tired by the time I got to the other side. 
An hour later, I reached Greenbrook Nature Sanctuary, 
an extremely beautifull park along the coast of the Hudson. 
Something that was very surprising to me was that near 
the end of the route you literally cross back into New York! 
At this point, you are very close to the end.';

let storyWords = story.split(' ');
let unnecessaryWord = 'literally';
let misspelledWord = 'beautifull';
let badWord = 'freaking';


//1. Turn the story into an array using .split() method

//2. Use .join() to view edited array as a string

//3. Use a method to count words in the story.

//4. Use a method to remove the unnecessary word from the story.

//5. Use a method to correct misspelled word to correct spelling.

//6. Use method to find the index of the badWord in the story and then replace the word with 'really'

//7. Use a method to verify the number of characters in every word is less than 10.

//8. Use a method to change the word greater than 10 characters to a shorter word.

//9. Remove occurrence of 'very' from the story.

//10. Change the imperial units of measurement (feet and miles) to metric units (meters and kilometers)

That is all for today… a little tired to continue… :sweat_smile:

2 Likes

#Day58 of #100DaysOfCode

Another long day and it’s getting harder to maintain the streak… :frowning: A day packed with a lot of informational sessions. I learned about Flexible Sync in Realm today and how it is different from Partition Sync.

I found out that when a client-device makes a write, a single connection can open multiple sync sessions, but there is a limit to the number of connections that can be opened and this limit is increased based on request.

The Atlas cluster that shows the number of connections (in metrics) is different from this. Those connections are opened if you open Data Explorer, shell, or terminal and Atlas Monitoring also used a lot of connections. These connections should get closed when not in use. There is also limit to number of connections that can be opened based on the chosen Tier.

Another interesting thing I found out was that oplog in an Atlas free tier cluster is shared across multiple tenants and that is why the error “Resume token fallen off the oplog” is common in them.

There was also a team dinner to end the day. :smiley:

I also studied Objects in Javascript and how they are accessed and created. I don’t have a lot of strength to document what I learned so I will write a lengthy article maybe tomorrow and finish reading “Pass by reference” and advance objects topic as well. :smiley:

Until I wake up next day… :performing_arts:

2 Likes

#Day59 of #100DaysOfCode

Another long day and I am glad to finish the last offsite day. It was nice meeting everybody but being the only person from my own team dint feel too great and I cant wait to be back home tomorrow :stuck_out_tongue:

Some sneak peek of the fun evening :partying_face:

Today I finished the Objects topic and some review notes as below:

  • Objects store collections of key-value pairs.

  • Each key-value pair is a property—when a property is a function it is known as a method.

  • An object literal is composed of comma-separated key-value pairs surrounded by curly braces.

  • You can access, add or edit a property within an object by using dot notation or bracket notation.

  • We can add methods to our object literals using key-value syntax with anonymous function expressions as values or by using the new ES6 method syntax.

  • We can navigate complex, nested objects by chaining operators.

  • Objects are mutable—we can change their properties even when they’re declared with const .

  • Objects are passed by reference— when we make changes to an object passed into a function, those changes are permanent.

  • We can iterate through objects using the For...in syntax.

Looping Through Nested Objects

let spaceship = {
  crew: {
    captain: { 
      name: 'Lily', 
      degree: 'Computer Engineering', 
      cheerTeam() { console.log('You got this!') } 
    },
    'chief officer': { 
      name: 'Dan', 
      degree: 'Aerospace Engineering', 
      agree() { console.log('I agree, captain!') } 
    },
    medic: { 
      name: 'Clementine', 
      degree: 'Physics', 
      announce() { console.log(`Jets on!`) } },
    translator: {
      name: 'Shauna', 
      degree: 'Conservation Science', 
      powerFuel() { console.log('The tank is full!') } 
    }
  }
}; 
 
// for...in
for (let crewMember in spaceship.crew) {
  console.log(`${crewMember}: ${spaceship.crew[crewMember].name}`);
}
1 Like

#Day60 of #100DaysOfCode

Today I am back in Dublin and trying to settle in after a 4 day’s work trip to Copenhagen :sweat_smile: It was nice to meet my team and I bonded well with a lot of colleagues… Small Acts of happiness and laughter make a difference :revolving_hearts:

I studied advanced concepts in JS Objects. Some notes below:

Using this keyword

Objects are collections of related data and functionality. We store that functionality in methods on our objects:

const goat = {
  dietType: 'herbivore',
  makeSound() {
    console.log('baaa');
  }
};

Now when makeSound is called it will print baaa on screen :smiley: Now you if add another method as below, why does this give error?

const goat = {
  dietType: 'herbivore',
  makeSound() {
    console.log('baaa');
  },
  diet() {
    console.log(dietType);
  }
};
goat.diet(); 
// Output will be "ReferenceError: dietType is not defined"

That’s because there is no automatic access to other properties of the goat object inside the scope of the .diet() method. This works if this keyword is used to refer the property as shown below:

const goat = {
  dietType: 'herbivore',
  makeSound() {
    console.log('baaa');
  },
  diet() {
    console.log(this.dietType);
  }
};
 
goat.diet(); 
// Output: herbivore

The this keyword references the calling object which provides access to the calling object’s properties. In the example above, the calling object is goat and by using this we’re accessing the goat object itself, and then the dietType property of goat by using property dot notation.

Arrow Functions and this

Using this with Arrow functions is a bit complicated

const goat = {
  dietType: 'herbivore',
  makeSound() {
    console.log('baaa');
  },
  diet: () => {
    console.log(this.dietType);
  }
};
 
goat.diet(); // Prints undefined

Arrow functions inherently bind , or tie, an already defined this value to the function itself that is NOT the calling object. In the code snippet above, the value of this is the global object , or an object that exists in the global scope, which doesn’t have a dietType property and therefore returns undefined .

One should avoid using this in a method with an arrow function.

I will write on Privacy, Getters/Setters, and Factory Functions tomorrow.

Until next time :wave:

2 Likes

#Day61 of #100DaysOfCode

It’s Friday… not as exciting as I would have wanted but conversations with my favorite lady made me feel better :innocent:

As promised, I documented Javascript objects and got a revision as well :smiley:

:performing_arts: Twitter : https://twitter.com/henna_dev/status/1512539316886679552

1 Like

#Day62 of #100DaysOfCode

It was a sunny day today and sunny days bring happiness… :star_struck: :orange_heart: I and my husband went for a walk down the coast, had a great breakfast, and saw people kayaking…

I do want to kayak one day, now if you ask me, I think I would wanna do almost everything one day :stuck_out_tongue: But for now, I am keen to finish JavaScript :wink: I finished the basics concepts and practiced exercises too… It was a fun day :partying_face:

:tada: Twitter : https://twitter.com/henna_dev/status/1512924147323752451

1 Like

#Day63 of #100DaysOfCode

Sunday was tiring, I and my husband went to the city to see a demonstration of Japanese culture, It was fun listening to a mix of Japanese and Irish music but it was too cold and windy… we enjoyed a chicken sandwich and coffee sitting beside a heater in a cafe :wink:

Some sneak peek

I wanted to take a break after finishing the basic JS course and I did a quiz on Jetbrains Academy Front end Track. I was still not able to finish my Flashcards project as it dint pass the Jetbrains Test cases… and I have no clue where I am going wrong. Now I am actually doubtful about their content. :stuck_out_tongue:

I changed my project to Case Converter and ended up coding a sample layout of text case changes. Did some quiz questions on HTML comments, and JS functions and variables. Tomorrow I will start with Intermediate JS on Codecademy.

1 Like

#Day64 of #100DaysOfCode

Today was office day and I met someone outside my team, it ended up a great conversation with the opportunity to collaborate in the future. I love that about going to office :orange_heart: I also acknowledge that focus on work is more at home than in-office :stuck_out_tongue:

I got to know that my Talk for Devoxx UK got selected and I am head over heels about that… :partying_face: :revolving_hearts: and I have a super awesome mentor who supports me :purple_heart: :kissing_heart: I treated myself to Tiramisu :yum:

I continued on Case Converter Project and Studied more theory on DOM and DOM events

The DOM (Document Object Model) represents a set of capabilities that a web browser provides to the JavaScript environment.

DOM Events

Events that occur in a web application are called DOM events, for example when you hover your mouse over a link, the link often changes color. Developers use events on elements in an HTML page: button, img, input, form, div, and so on.

Type of Events

The list of events is enormous, when you resize a window, double-click a mouse button, move the mouse pointer or paste something from the clipboard, you trigger the corresponding events. The events are divided into categories mainly mouse, keyboard, and focus events.

Mouse events occur when the user interacts with the mouse. The most popular ones are:

  • click when the user clicks the left mouse button;

  • contextmenu when the user clicks the right mouse button;

  • dblclick when the user clicks the left mouse button twice;

  • mouseenter when the user moves the mouse pointer towards the element;

  • mouseleave when the user moves the mouse pointer away from the element.

Keyboard events are the results of the user’s interaction with the keyboard. There are three types of such events:

  • keydown when the user presses any key;

  • keypress when the user presses any key except Shift, Fn, or CapsLock;

  • keyup when the user releases a key.

Focus events occur when an element receives or loses focus. This is especially useful for input when developers mark the incorrectly filled input field in red, such as the email or phone fields.

  • focus when an element receives focus;
  • blur when an element loses focus.

DOM events are best used when creating attractive and interactive web pages. More events can be found at MDN documentation.

I also did some quiz questions on JSON, Objects, and DOM events. The use of var keyword for declaring variables is deprecated, let is used for mutability and const is used for constant variables.

Until tomorrow… :wave:

1 Like

#Day65 of #100DaysOfCode

Today was a long day… :melting_face: had IWD event at our MongoDB Dublin office and it went well… Not a huge in-person number but quality people doing quality discussions :wink: It was a lot of AI, ML, and Deep neural networks…
Learned about how automated cars cannot be a reality as it will come at a cost of human life… how AI should be implemented with caution. There should be guidelines and education on this :smiley:

Another talk was by my favorite lady I absolutely love :orange_heart: She talked about navigating our career direction, you know it is right when you are scared and excited…

Overall I enjoyed the talks we hosted today. It was a good feeling when speakers reached out and thanked for giving them the opportunity to speak, but I believe it was all their work… I guess I do miss personal connections and I am glad we are back to normal :smiley:

Some sneak peek:

I could not do a lot on my Jetbrains Course, but I learned about two ways JS is linked to HTML. Its either in body tag or it is in head tag.

It is recommended to enable JavaScript at the end of the <body> section since this type of connection allows to speed up the loading of the page. Web pages are loaded in the order specified in HTML markup: first, the browser analyzes the elements inside the <head> tag and then goes to <body> . If script tag is used in the <head> tag, the page content will not be visible in the browser until the JavaScript file is loaded. This can cause issues with large files.

Some Quiz questions

  1. There are situations (though uncommon) when users disable JavaScript support in their browsers. What tag is used that helps tell the visitors that without JavaScript support the content will not be fully available?

  2. What tag is used to connect Javascript files to the HTML document?

I have to say Jetbrains Academy dint have too many great questions, the rest involved how to include JS path to HTML document.

That will be all today… Until tomorrow… :wave:

1 Like

#Day66 of 100daysofcode

I took a break from work so today was mostly relaxing, doing fun activities, had a martial arts class, and some coding. I continued on the Case Converter project and studied DOM Methods.

DOM Methods

JS provides built-in functions to retrieve elements from web-page and make web pages more interactive.

getElementById()

If HTML element has an id attribute, it can be retrieved as following:

<p id="blue-text">What's your hyper skill?</p>

<script>
  let element = document.getElementById("blue-text"); // get the element by id
</script>

From here, the element can be used in functions, change its content, styles, move it on the page, and more.
element.style.color = "blue";

querySelector()

With the querySelector() method it returns the first document element that corresponds to the specified selector:

<p>What's your hyper skill?</p>

<script>
  let element = document.querySelector("p"); // get the element by selector
</script>

This method allows getting an element for further work on any selector or their group, not just on the element selector.

Please Note: querySelector returns only one element corresponding to the request.

querySelectorAll()

This method gets all the elements that match the specified selector:

<p>Tell me</p>
<p>What's your hyper skill?</p>

<script>
  let elements = document.querySelectorAll("p"); // get elements by selector
</script>

querySelectorAll() , unlike the previous method, returns a NodeList . To create the handler, forEach loop method is used.

There are class selectors (".className" ), id selectors ("#idName") , and many others. All of them can be used in the methods of querySelectorAll() and querySelector() .

Quiz

  1. Declare a mutable variable with the name restaurant . Specify all elements with the menu class received through the document node as its value

  2. Which one of these are correct ways to get Elements by id ?

    • document.getElementById(myHeader);

    • document.getElementById(“myHeader”);

    • document.querySelector(“#myHeader”);

    • document.querySelector(#myHeader);

addEventListener()

Previously, I talked about DOM events. These events can be processed via the listener method.
Each browser event has an event handler : a code block that occurs after the event operation. The addEventListener() method registers the event handler for the target object, for which it will be called when the event occurs. The target object can be an HTML element, a document , or any other object that supports events.

document.addEventListener("click", function() {
  console.log("There's been a browser event");
});

In this example, addEventListener() is used to create a click event handler for the document object.
The same method can be applied to HTML tags as follows:

document.getElementById("myBtn").addEventListener("keypress", function() {
  // body
});

The code can be simplified using a variable:

let element = document.getElementById("myBtn");

element.addEventListener("keypress", function() {
  // body
});

Tomorrow will continue part 2 of the case converter project. Until tomorrow… :wave:

2 Likes

#Day67 of #100DaysOfCode

Today was a day full of surprises… It is rightly said, not to have expectations… sometimes it backfires… :ghost:
it’s fine too, its only human and part of everyday life… will take it with a pinch of salt :wink:

Today, I was undecided about what I should study, I studied a mix of realm and Javascript. I started with the Case Converter project but got stuck on string conversion methods so I came back to the Intermediate Codecademy course and studied JS classes.

Introduction to Classes

JavaScript is an object-oriented programming (OOP) language that can be used to model real-world items as Objects. Classes are a tool that is used to quickly produce similar objects.

Classes in JavaScript are similar to Objects but with some differences. Classes work as blueprints to create similar new objects. Below is a Dog object.

let halley = {
  _name: 'Halley',
  _behavior: 0,
 
  get name() {
    return this._name;
  },
 
  get behavior() {
    return this._behavior;
  },
 
  incrementBehavior() {
    this._behavior++;
  }

Creating a dog class reduces duplicate code and debugging time.

class Dog {
  constructor(name) {
    this._name = name;
    this._behavior = 0;
  }

  get name() {
    return this._name;
  }
  get behavior() {
    return this._behavior;
  }   

  incrementBehavior() {
    this._behavior ++;
  }
}

const halley = new Dog('Halley');
const tommy = new Dog('Tommy');

console.log(halley.name);  // Halley
console.log(tommy.name); // Tommy

To Note

  • JavaScript invokes the constructor() method every time a new instance of Dog class is created.

  • This constructor() method accepts one argument, name .

  • Inside of the constructor() method, this keyword is used. In the context of a class, this refers to an instance of that class. In the Dog class, we use this to set the value of the Dog instance’s name property to the name argument.

  • Under this.name , a property called behavior , is created which keeps track of the number of times a dog misbehaves. The behavior property is always initialized to zero.

  • The new keyword is used to generate a new instance of the Dog class. The new keyword calls the constructor() , runs the code inside of it, and then returns the new instance and is assigned to halley variable.

  • Class method and getter syntax is the same as it is for objects except that commas are not included between methods .

  • The property names prepended with underscores ( _name and _behavior ), which indicate these properties should not be accessed directly.

Example of Class with Methods Calls

class Surgeon {
  constructor(name, department) {
    this._name = name;
    this._department = department;
    this._remainingVacationDays = 20;
  }
  
  get name() {
    return this._name;
  }
  
  get department() {
    return this._department;
  }
  
  get remainingVacationDays() {
    return this._remainingVacationDays;
  }
  
  takeVacationDays(daysOff) {
    this._remainingVacationDays -= daysOff;
  }
}

const surgeonRomero = new Surgeon('Francisco Romero', 'Cardiovascular');
const surgeonJackson = new Surgeon('Ruth Jackson', 'Orthopedics');

console.log(surgeonRomero.name)
surgeonRomero.takeVacationDays(3);

console.log(surgeonRomero.remainingVacationDays)

That is all for today. Until tomorrow :wave:

2 Likes