Meeting planner book 🆚 digital meeting planner (free download)

Taking notes and next steps during a meeting, is really (!) important. It’s not a secret.

When I enter into a library, I always love to check the notebooks they are selling. I always find the same models, like the one from LEUCHTTURM1917 (14,95€ on Amazon) for example. They are good but, so classic.

Recently, I was in the Flying Tiger Copenhagen @Strasbourg and I found a notebook focused on MEETINGS. That’s interesting. All the pages are pre-filled to take meeting notes: topic, location, date, agenda of the day, list of attendees, todo list + deadline + owner and finally some space for the raw notes.

If you like it, you have two options:

  1. Buy it physically on https://flyingtiger.com/products/meeting-planner-3037719
  2. Download the digital version of the book, I created the Word version

👍

📚 The physical notebook

🛒 Buy online

Cover & pages preview

Cover
Pages

📱 The digital notebook version

Word & Google Docs FREE DOWNLOAD

Template

Let’s trigger a custom action after Google Form submission

Let’s image you are collecting responses with a Google Form. You may want to send automatically an email right the user submitted his responses.

You are on the right place. Let’s build this using a custom Google AppScript function and the Triggers feature.

Step 1: Open the Google Script Editor

→ Go to your form
→ Click the 3 dots on top right corner of your screen (see screenshot below)
→ Click Script Editor
→ You will switch to a new tab with an url looking like script.google.com/…

Script editor

Step 2: Create the empty function

It’s time to create a new function, which will be empty for the moment but don’t worry, we will write the functions’ code in step 4.

Just write the code below in the Code.gs file (you may already be in the file, it’s automatically created when you open the Script editor).

function onSubmit() {
// code to be added here later...
}

Step 3: Create & connect a new trigger

You have a create a new trigger and connect it to our empty function we just created.

→ Click the Triggers section in the left panel

→ Click the Add Trigger blue button in the right bottom corner on your screen

Now we will configure the new trigger to connect it with the empty function.

→ Choose which function = onSubmit
→ Deployment = Head
→ Event source = From form
→ Event type = On form submit
→ Failure notification = Notify me immediately

Step 4: Write the code of the function

Now you can go back to the Script editor by clicking Editor in the left panel.

In this example, I will show you how to send automatically an email to the user, right after he submitted the form.

Let me explain the code, line by line.

function onSubmit() {
  // Get active form & latest response
  var oForm = FormApp.getActiveForm();
  var aResponses = oForm.getResponses();
  var oResponse = aResponses[aResponses.length-1]; //latest response

  //  Find user email
  var userEmailAuto = oResponse.getRespondentEmail();
  // or...
  var userEmailManual = oResponse.getItemResponses()[5]; // imagine the user entenred his email in question number 6

  // User replies to insert in email
  var result = oResponse.getItemResponses()[2].getScore();

  // Send an email to the user
  MailApp.sendEmail({
    to: userEmailAuto, // or userEmailManual
    subject: "[RESULT] Following form submission",
    htmlBody: "Thanks for submitting the form.<br>" + 
              "Following your score (" + result + ") on question 3, you are allowed to join our team.<br>" +
              "🎉 Congrats"
  });

  // End of the script
  return;

}

Step 5: Test the execution

Two ways to test the code:

  1. You can debug and run it using the Script editor by clicking the Run or Debug button in the tool bar.
  2. Simply by submitting the form 😉

💌

Links

https://developers.google.com/apps-script/reference/forms/form-response
https://developers.google.com/apps-script/reference/forms/form-app

Any suggestion, anything to add? Write a comment!

Joey

Deploy your Angular 7 app with Cloud Foundry on SAP Cloud Platform

In this tutorial, I will show how to deploy an Angular 7 app to Cloud Foundry on SAP Cloud Platform.

Prerequisite

The first thing is to install the Angular CLI globally

sudo npm install -g @angular/cli

Note that you must have installed node (v8.9 or higher) and npm (v6.0 or higher)

Frontend

To start quickly and for the demonstration, we will download the CLI starter kit from angular.io website (https://angular.io/generated/zips/cli-quickstart/cli-quickstart.zip). Once you get the zip file, just unzip and follow the next steps with your terminal below.

cd cli-quickstart
npm install
ng serve

Open your browser on http://localhost:4200/ to test the result, you might get something like this:

Great. The project is working locally. Now if you open the package.json file, you will see different scripts to lint, test, build, e2e, etc. The command which is interesting for us is to build the project for production. In order to push this to Cloud Foundry later.

Launch the build script with the following command:

npm run-script build

Frontend is ready.

Backend

For the demo, I wanted to add an API. The steps are easy, the first step is to create a folder api at root of your project.

mkdir api

In this new folder, create two files: server.js and package.json

server.js

var express = require("express");
var app = express();

app.listen(process.env.PORT || 3000, () => {
console.log("Server running.");
});

app.get("/demo", (req, res, next) => {
res.json(["Hello","World"]);
});

package.json

{
"name": "angualar-7-backend",
"version": "0.0.1",
"scripts": {
"start": "node server"
},
"dependencies": {
"express": "^4.16.4"
}
}

Backend is ready.

Prepare for production

Now we have to create new files specifically for Cloud Foundry deployment. The first file is manifest.yml and it allows you to declare the url of the app/service, the memory, disk_quota, etc. You have to create this file at the root folder of your project:

manifest.yml

---
applications:

- name: angular-7-frontend
host: angular-7-frontend
path: dist
buildpack: staticfile_buildpack
memory: 512M
disk_quota: 512M
instances: 1
random-route: true

- name: angular-7-backend
host: angular-7-backend
path: api
buildpack: nodejs_buildpack
memory: 512M
disk_quota: 512M
instances: 1
random-route: true

The second file is .cfignore

node_modules
api/node_modules

Deployment is ready.

Push to production

Before to push, make sure you are connected (and linked to the right spaces in case you have several). To connect to CF account, execute the following command and follow the steps from the CLI:

cf login
# enter email address
# choose your space

Time to push!

cf push

Done 👍

Useful links

Build your own bus shelter for less than 10$

I want to show you how to build your own bus shelter using some basic electronic components and a 3D printer to pack all these stuffs.

The result in a short video

GitHub repo

GitHub | Arduinobribus | @joeybronner One you cloned the repo, you have to adapt some variables of the code: the missionId and the stationId where you take your bus. Please follow the few steps below…

Step 1: Mission ID

Find the id related to the mission, in the file located under https://github.com/joeybronner/arduinobribus/tree/master/json/bus_missions.json\ Mission object looks like:

{
  "id":"100100020",
  "name":"Gare de Lyon / Gare Saint-Lazare",
  "shortName":"B20",
  "image":"b20.gif"
}

Change the sMissionId value in https://github.com/joeybronner/arduinobribus/tree/master/arduino/arduino.ino with the id of your mission.\ Example: 100100099 in my case

Step 2: Station ID

Open the following URL with your own mission ID: http://restratpws.azurewebsites.net/api/stations/ and get the id of your station.\ Station object looks like:

{
    "id":"PC3_1039_1091",
    "name":"Camille Flammarion"
}

Change the sStationId value in https://github.com/joeybronner/arduinobribus/tree/master/arduino/arduino.ino with the id of your station.\ Example: PC3_1047_1074 in my case

Step 3: Way (A/R)

The last value is the way of the bus (“a” or “r”).\ To know the way, open the following URL with your own http://restratpws.azurewebsites.net/api/directions/.\ Direction object looks like:

[
    {
        "way":"A",
        "name":"Porte Maillot"
    },
    {
        "way":"R",
        "name":"Skanderbeg"
    }
]

Change the sWay value in https://github.com/joeybronner/arduinobribus/tree/master/arduino/arduino.ino with the way you want to display.\ Example: “a” in my case

Schematics

Wemos PIN OLED PIN
5V VDD
GND GND
D5 SCK
D1 DC
D3 RES
D7 SDA
D8 CS

Components

All you need is available on AliExpress for less than 10$ (printing price included):

The printing model is available in the GitHub repo here: 3D models. You can print it using any cheap printer you want, it will be printed in less than 2 hours.

Below, the preview of the 3D model (.stl files)

GitHub

You can contribute or simply clone the repo here: https://github.com/joeybronner/arduinobribus