Getting Started With NodeJS Feature Flags

Size: px
Start display at page:

Download "Getting Started With NodeJS Feature Flags"

Transcription

1 Guide Getting Started With NodeJS Feature Flags

2 INTRO We ve all done it at some point: thrown a conditional around a piece of code to enable or disable it. When it comes to feature flags, this is about as simple as it gets. But it s far from really taking advantage of the power of feature flags (also called feature toggles) to control functionality in our application. This guide will walk you through implementing a feature flag in NodeJS using the Rollout service. At the end of the article, you ll have a dead simple application that integrates with the feature flag service. Ready? Good. Let s get going! 2

3 STARTING WITH THE BASICS First, let s do some initial setup to make following this article easier. While we could create an entire NodeJS Express web application, we ll keep things simple and create a basic Hello Rollout application. First, let s create a new directory for our project and generate a package.json file using the npm init command. $ mkdir rollout-nodejs-demo && cd $_ rollout-nodejs-demo $ npm init Follow along with the prompts from the npm init command and just accept the defaults. After all of that, you ll have a new, bare-bones package.json file. { "name": "rollout-nodejs-demo", "version": "1.0.0", "description": "Example of using Rollout feature flags in NodeJS", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "repository": { "type": "git", "url": "...", "author": "Casey Dunham", "license": "MIT", "bugs": { "url": "...", "homepage": "...", "dependencies": { 3

4 Now, open up your favorite text editor, and let s create our app.js file. The app.js file will be our application s main entry point. const http = require('http'); const hostname = ' '; const port = 3000; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1> ; res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { console.log(`server running at Let s run our application and make sure we have it all in working order. rollout-nodejs-demo $ node app.js Server running at Finally, open your browser and navigate to where you ll see our venerable greeting. Alright, now that we ve verified that everything is working, let s get going and create our first feature flag. 4

5 YOUR FIRST NODEJS FEATURE FLAG Our application is functioning, but it s not very exciting. Now, let s say one day our product manager decides we need to show our visitors a motivational message. No problem! we say, and since we really like this product manager, their request goes to the head of our task queue. After a long meeting, the business decides what they want for a message. Don t ask; we weren t invited to the meeting. Let s go back to the app.js file and update it to include the new message. Based on our experience, we know how these requests can sometimes go, so we wrap the message in a conditional. This will allow us to easily turn it off later if they decide they don t want to show it anymore. Open up your app.js, and let s code this up before calling it a day. const http = require('http'); const hostname = ' '; const port = 3000; const showmotivationalquote = true; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { console.log(`server running at Now run the application to see your new message in all its wonderfully obtuse glory. Congratulations! You ve created your first feature flag in NodeJS. Now feel free to head home since you ve had such a productive day. 5

6 INTRODUCTION TO FEATURE FLAG MANAGEMENT Right now, you re probably wondering about the point of what we just did. I don t blame you. Our feature flag is a bit lackluster. It doesn t have any of the benefits of what we can get out of a proper feature flag. Feature flags are intended to help us release new functionality safely and without changing code. In order to achieve those goals, we need to do a bit more. We also haven t solved any problems with our current code. In fact, we wrote some code we didn t have to. Feature flags can quickly get us into technical debt if we aren t careful. We ll get to how to deal with that later in this article, so stick around. 6

7 GETTING THE CONFIGURATION OUT OF CODE Before moving on, let s move the feature flag configuration outside of our code. NodeJS will parse JSON files and bind them to a variable for us when using the require statement. Create a config.json file and add the following contents to it: { "showmotivationalquote": true Go back to your app.js file and update it to the following: const http = require('http'); const config = require('./config.json'); const hostname = ' '; const port = 3000; const showmotivationalquote = config.showmotivationalquote; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { console.log(`server running at We ve now moved the configuration outside of the code. However, if we want to change this, we ll still need to update the configuration file and redeploy our application. We could handle the setting via an environment variable, but that doesn t solve the problem. It just moves it to another layer of indirection. Implementing more flags in this manner will quickly make things complex and error-prone. And you know there will only be more changes coming. What we really want is to control the feature flag, and we want to do it without touching or releasing new code. In other words, what we re really looking for is a way to centrally manage feature flags. 7

8 CENTRALLY MANAGING FEATURE FLAGS At this point, you created a feature flag as a simple conditional and variable. Then, you took it a step further to move the value into a configuration file. This demonstrates the concept but doesn t help us out much. We still need to redeploy our application. Companies such as Google and Facebook use feature flags to perform dark launches and split testing. In order to reap the kinds of benefits these companies enjoy by using feature flags, we need to do more than just use a hard-coded variable. To turn feature flags into the powerful tool that they are, we need to centrally manage them. Luckily for us, you can do this as a service in NodeJS using Rollout. 8

9 GETTING STARTED WITH ROLLOUT Rollout will let you get started for free, so go ahead and create a Rollout account. Then sign in and create a new app. Under Installation Type, select Javascript as the language and NodeJS as the platform. After clicking the Start Installation button, we ll see a screen that describes how to use the SDK from NodeJS. Let s follow the instructions on the Rollout Javascript SDK window. We ll go through each of these steps here, but refer to the NodeJS documentation for more information. Let s install the Rox-node Rollout client package. rollout-nodejs-demo $ npm i rox-node save 9

10 This will update your NodeJS package.json file to include the Rox-node dependency. After running the command, your package.json file should look like the following: { "name": "rollout-nodejs-demo", "version": "1.0.0", "description": "Example of using Rollout feature flags in NodeJS", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "repository": { "type": "git", "url": "git+ "author": "Casey Dunham", "license": "ISC", "bugs": { "url": "...", "homepage": "...", "dependencies": { "rox-node": "^2.0.2" Next, we need to open up the confg.json file and add our API key into it. { "roxapikey": "5a68f9d5f807d908a ", "showmotivationalquote": true Finally, update your app.js file to read in the API key and add the call to Rox.setup(). const http = require('http'); const Rox = require("rox-node"); const config = require('./config.json'); const hostname = ' '; const port = 3000; const showmotivationalquote = config.showmotivationalquote; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { Rox.setup(config.roxAPIKey); console.log(`server running at 10

11 IMPLEMENTING FEATURE FLAGS Once all that is done, go back to the Rollout administration screen. You ll see that it s waiting for you to re-run your application. Do that, and the Rollout administration screen will reward you with a happy success screen. At this point, we ve successfully integrated the Rollout service into our application. We haven t created any feature flags yet, though, so let s get to work on that. We ll create a flags object that will act as a container for all of our feature flags. Go back to your app.js file and add this object. We ll also register this object with the Rox client before the setup call. const http = require('http'); const Rox = require("rox-node"); const config = require('./config.json'); const hostname = ' '; const port = 3000; const showmotivationalquote = config.showmotivationalquote; const roxflags = { showmotivationalquote: new Rox.Flag() ; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (showmotivationalquote) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { Rox.register("roxFlags", roxflags); Rox.setup(config.roxAPIKey); console.log(`server running at 11

12 Run the application and go back to the Rollout administration screen. You ll see that our feature flag was created and enabled on the server. Just like that, we ve created our first feature flag with Rollout. How cool is that? In order to make this feature flag useful, we need to add it to an experiment. Rollout manages feature flags through the concept of Experiments. Refer to the Rollout documentation for more information on experiments. For now, click on the Production link, as shown in the above screenshot. Next, click the Experiments link from the dropdown menu. Clicking on this will bring you to a screen with a Create an Experiment button. Go ahead and click that and fill out the new experiment window. 12

13 Fill out the New Experiment window with sensible information. Then click the Set Audience button and take a look at our next screen. Now we can start doing some interesting things! 13

14 CONTROLLING THE FEATURE FLAG Go back to your app.js file. We ve set up the Rox client, but we re still using the old variable to manage our motivational message. We can check the status of a feature flag through the isenabled() method on the flag. Update your app.js file to remove the hardcoded flag and use the Rollout feature flag instead. const http = require('http'); const Rox = require("rox-node"); const config = require('./config.json'); const hostname = ' '; const port = 3000; const roxflags = { showmotivationalquote: new Rox.Flag() ; const server = http.createserver((req, res) => { var message = '<h1>hello Rollout!</h1>'; if (roxflags.showmotivationalquote.isenabled()) { message += "<h3>the number zero. It's whatever you make of it.</ h3>" res.statuscode = 200; res.setheader('content-type', 'text/html'); res.end(message); server.listen(port, hostname, () => { Rox.register("roxFlags", roxflags); Rox.setup(config.roxAPIKey); console.log(`server running at While we re here, let s update our config.json file to remove the showmotivationalquote setting. { "roxapikey": "5a68f9d5f807d908a " Run your application and check it out in the browser. You ll see that our motivational message isn t displaying. What broke? Well, nothing. It s just that Rollout defaults all new feature flags to false. This can be changed when creating the flag, though. 14

15 So let s go back to the administration screen and update our feature flag by setting it to true. Don t forget to click the Update Audience button, as it doesn t save the changes automatically. Now run your application. You ll see the motivational message controlled through the use of Rollout s feature flag service. Congratulations! You ve just implemented your first feature flag as a service. Now you have the ability to change the behavior of your application all without touching configuration files or environment variables and without deploying new code. We can now gradually roll out new features to our user base or perform split testing between groups of users. We can also change the percentage of what users will see our new message. Go back to the Experiments screen with our feature flag and change it from true to split. When set to split, the interface allows us to change the percentage set to true. Here I set it to true for 30% of all users. Now run our application and delight in the non-determinism of whether or not we ll see our motivational message. 15

16 ISSUES WITH FEATURE FLAGS Feature flags are awesome. They enable us to run experiments in production. However, there are some risks to using feature flags. First, you can t just use one feature flag. Implement one, and another will follow. Go ahead and try to just give the marketing department a single one. Lest we get ourselves into trouble with technical debt, feature flags need management. They also need to have a retirement plan. YOU TAKE IT FROM HERE You can do even more with feature flags. Check out the Rollout documentation for more information on additional options and customize-ability. And the documentation also contains additional information on the management console. Feature flags are a powerful tool. They allow you to respond quickly to market trends and perform complicated A/B split testing all without updating or redeploying code. But you should keep it in mind that your feature flags need to be managed, and that management must be simple, effective, and centralized. 16

17 Rollout is an advanced feature management solution that gives engineering and product teams feature control, post-deployment. It s the most effective way to roll out new features to the right audience while protecting customers from failure and improving KPI s. For more information: visit us at support@rollout.io 17

Getting Started With Android Feature Flags

Getting Started With Android Feature Flags Guide Getting Started With Android Feature Flags INTRO When it comes to getting started with feature flags (Android feature flags or just in general), you have to understand that there are degrees of feature

More information

Getting Started With Feature Toggle in Java

Getting Started With Feature Toggle in Java Guide Getting Started With Feature Toggle in Java INTRO Feature toggles (also known as feature flags) are simple. You want to introduce new behavior in a Java application, but you re not ready to turn

More information

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd What is Node.js? Tim Davis Director, The Turtle Partnership Ltd About me Co-founder of The Turtle Partnership Working with Notes and Domino for over 20 years Working with JavaScript technologies and frameworks

More information

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum Table of Contents Preparation... 3 Exercise 1: Create a repository. Use the command line.... 4 Create a repository...

More information

Backend Development. SWE 432, Fall Web Application Development

Backend Development. SWE 432, Fall Web Application Development Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy

More information

Tools. SWE 432, Fall Design and Implementation of Software for the Web

Tools. SWE 432, Fall Design and Implementation of Software for the Web Tools SWE 432, Fall 2016 Design and Implementation of Software for the Web Today Before we can really make anything, there s a bunch of technical stuff to get out of the way Tools make our lives so much

More information

Hands-on Lab Session 9011 Working with Node.js Apps in IBM Bluemix. Pam Geiger, Bluemix Enablement

Hands-on Lab Session 9011 Working with Node.js Apps in IBM Bluemix. Pam Geiger, Bluemix Enablement Hands-on Lab Session 9011 Working with Node.js Apps in IBM Bluemix Pam Geiger, Bluemix Enablement Copyright IBM Corporation 2017 IBM, the IBM logo and ibm.com are trademarks of International Business Machines

More information

Getting started with Tabris.js Tutorial Ebook

Getting started with Tabris.js Tutorial Ebook Getting started with Tabris.js 2.3.0 Tutorial Ebook Table of contents Introduction...3 1 Get started...4 2 Tabris.js in action...5 2.1 Try the examples...5 2.2 Play with the examples...7 2.3 Write your

More information

5th April Installation Manual. Department of Computing and Networking Software Development Degree

5th April Installation Manual. Department of Computing and Networking Software Development Degree 5th April 2017 Installation Manual Department of Computing and Networking Software Development Degree Project name: Student: Student Number: Supervisor: MaaP (Message as a Platform) Chihabeddine Ahmed

More information

2 Initialize a git repository on your machine, add a README file, commit and push

2 Initialize a git repository on your machine, add a README file, commit and push BioHPC Git Training Demo Script First, ensure that git is installed on your machine, and you have configured an ssh key. See the main slides for instructions. To follow this demo script open a terminal

More information

How to set up SQL Source Control The short guide for evaluators

How to set up SQL Source Control The short guide for evaluators GUIDE How to set up SQL Source Control The short guide for evaluators 1 Contents Introduction Team Foundation Server & Subversion setup Git setup Setup without a source control system Making your first

More information

Introduction to Express.js. CSC309 Feb. 6, 2015 Surya Nallu

Introduction to Express.js. CSC309 Feb. 6, 2015 Surya Nallu Introduction to Express.js CSC309 Feb. 6, 2015 Surya Nallu What is Express.js? Web application framework for Node.js Light-weight and minimalist Provides boilerplate structure & organization for your web-apps

More information

Web Server Setup Guide

Web Server Setup Guide SelfTaughtCoders.com Web Server Setup Guide How to set up your own computer for web development. Setting Up Your Computer for Web Development Our web server software As we discussed, our web app is comprised

More information

Automate with Grunt. Extracted from: The Build Tool for JavaScript. The Pragmatic Bookshelf

Automate with Grunt. Extracted from: The Build Tool for JavaScript. The Pragmatic Bookshelf Extracted from: Automate with Grunt The Build Tool for JavaScript This PDF file contains pages extracted from Automate with Grunt, published by the Pragmatic Bookshelf. For more information or to purchase

More information

Human-Computer Interaction Design

Human-Computer Interaction Design Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo, Lab TA: Sean Kross Lab 1 - Version control and HTML (2017-10-06) by Michael Bernstein, Scott Klemmer, Philip Guo, and

More information

Building a Django Twilio Programmable Chat Application

Building a Django Twilio Programmable Chat Application Building a Django Twilio Programmable Chat Application twilio.com/blog/08/0/python-django-twilio-programmable-chat-application.html March 7, 08 As a developer, I ve always wanted to include chat capabilities

More information

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017 PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON Alexander Lichter June 27, 2017 Content of this lesson 1. Recap 2. Composer 3. JSON 4. Collections (next lesson) 1 Recap Recap Recap Recap

More information

Catbook Workshop: Intro to NodeJS. Monde Duinkharjav

Catbook Workshop: Intro to NodeJS. Monde Duinkharjav Catbook Workshop: Intro to NodeJS Monde Duinkharjav What is NodeJS? NodeJS is... A Javascript RUNTIME ENGINE NOT a framework NOT Javascript nor a JS package It is a method for running your code in Javascript.

More information

Node.js. Node.js Overview. CS144: Web Applications

Node.js. Node.js Overview. CS144: Web Applications Node.js Node.js Overview JavaScript runtime environment based on Chrome V8 JavaScript engine Allows JavaScript to run on any computer JavaScript everywhere! On browsers and servers! Intended to run directly

More information

How to Add On-Screen Messages to Keep Users Informed

How to Add On-Screen Messages to Keep Users Informed How to Add On-Screen Messages to Keep Users Informed Watch Video Version By Irene Bushnell, Intacct Practice Manager, Synergy Business Solutions One of the really cool features in both Dynamics SL and

More information

Ionic Tutorial. For Cross Platform Mobile Software Development

Ionic Tutorial. For Cross Platform Mobile Software Development About Ionic Tutorial For Cross Platform Mobile Software Development This Tutorial is for setting up a basic hybrid mobile application using the Ionic framework. The setup will be shown for both Mac and

More information

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web

Backend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web Backend Development SWE 432, Fall 2017 Design and Implementation of Software for the Web Real World Example https://qz.com/1073221/the-hackers-who-broke-into-equifax-exploited-a-nine-year-old-security-flaw/

More information

EDGE, MICROSOFT S BROWSER

EDGE, MICROSOFT S BROWSER EDGE, MICROSOFT S BROWSER To launch Microsoft Edge, click the Microsoft Edge button (it s the solid blue E) on the Windows Taskbar. Edge Replaces Internet Explorer Internet Explorer is no longer the default

More information

Quick.JS Documentation

Quick.JS Documentation Quick.JS Documentation Release v0.6.1-beta Michael Krause Jul 22, 2017 Contents 1 Installing and Setting Up 1 1.1 Installation................................................ 1 1.2 Setup...................................................

More information

Getting Started Guide

Getting Started Guide Getting Started Guide The Getting Started Guide is for new Zendesk users who want to make the most out of their free trial and get to the know the system quickly. To jump to a specific part of the Getting

More information

CONVERSION TRACKING PIXEL GUIDE

CONVERSION TRACKING PIXEL GUIDE Conversion Tracking Pixel Guide A Step By Step Guide to Installing a conversion tracking pixel for your next Facebook ad. Go beyond clicks, and know who s converting. PRESENTED BY JULIE LOWE OF SOCIALLY

More information

Quick Desktop Application Development Using Electron

Quick Desktop Application Development Using Electron Quick Desktop Application Development Using Electron Copyright Blurb All rights reserved. No part of this book may be reproduced in any form or by any electronic or mechanical means including information

More information

This video is part of the Microsoft Virtual Academy.

This video is part of the Microsoft Virtual Academy. This video is part of the Microsoft Virtual Academy. 1 In this session we re going to talk about building for the private cloud using the Microsoft deployment toolkit 2012, my name s Mike Niehaus, I m

More information

Exercise 1. Bluemix and the Cloud Foundry command-line interface (CLI)

Exercise 1. Bluemix and the Cloud Foundry command-line interface (CLI) V10.1 Student Exercises EXempty Exercise 1. Bluemix and the Cloud Foundry command-line interface (CLI) What this exercise is about In this exercise, you sign on to Bluemix and create an application. You

More information

Lab Exercise Git: A distributed version control system

Lab Exercise Git: A distributed version control system Lunds tekniska högskola Datavetenskap, Nov 21, 2016 EDAF45 Programvaruutveckling i grupp projekt Labb 2 (Git): Labbhandledning Checked on Git versions: 2.7.4 Lab Exercise Git: A distributed version control

More information

Unifer Documentation. Release V1.0. Matthew S

Unifer Documentation. Release V1.0. Matthew S Unifer Documentation Release V1.0 Matthew S July 28, 2014 Contents 1 Unifer Tutorial - Notes Web App 3 1.1 Setting up................................................. 3 1.2 Getting the Template...........................................

More information

Human-Computer Interaction Design

Human-Computer Interaction Design Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo Lab 1 - Version control and HTML (2018-10-03) by Michael Bernstein, Scott Klemmer, Philip Guo, and Sean Kross [Announce

More information

Web Development for Dinosaurs An Introduction to Modern Web Development

Web Development for Dinosaurs An Introduction to Modern Web Development Web Development for Dinosaurs An Introduction to Modern Web Development 1 / 53 Who Am I? John Cleaver Development Team Lead at Factivity, Inc. An Introduction to Modern Web Development - PUG Challenge

More information

We are assuming you have node installed!

We are assuming you have node installed! Node.js Hosting We are assuming you have node installed! This lesson assumes you've installed and are a bit familiar with JavaScript and node.js. If you do not have node, you can download and install it

More information

Azure Developer Immersion Getting Started

Azure Developer Immersion Getting Started Azure Developer Immersion Getting Started In this walkthrough, you will get connected to Microsoft Azure and Visual Studio Team Services. You will also get the code and supporting files you need onto your

More information

Snap-Ins Chat. Salesforce, Winter

Snap-Ins Chat. Salesforce, Winter Salesforce, Winter 18 @salesforcedocs Last updated: December 1, 2017 Copyright 2000 2017 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc., as are other

More information

How to Read AWStats. Why it s important to know your stats

How to Read AWStats. Why it s important to know your stats How to Read AWStats Welcome to the world of owning a website. One of the things that both newbie and even old time website owners get overwhelmed by is their analytics and understanding the data. One of

More information

Omni-Channel for Administrators

Omni-Channel for Administrators Omni-Channel for Administrators Salesforce, Summer 18 @salesforcedocs Last updated: August 16, 2018 Copyright 2000 2018 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of

More information

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon EmberJS A Fitting Face for a D8 Backend Taylor Solomon taylor.solomon @jtsolomon http://interactivestrategies.com 2 Years Ago 2 Years Ago URL Ember Data assumes a few things. - Your API format is JSON

More information

For Volunteers An Elvanto Guide

For Volunteers An Elvanto Guide For Volunteers An Elvanto Guide www.elvanto.com Volunteers are what keep churches running! This guide is for volunteers who use Elvanto. If you re in charge of volunteers, why not check out our Volunteer

More information

Submitting your Work using GIT

Submitting your Work using GIT Submitting your Work using GIT You will be using the git distributed source control system in order to manage and submit your assignments. Why? allows you to take snapshots of your project at safe points

More information

IDWedgeKB Serial Port and NodeJS

IDWedgeKB Serial Port and NodeJS IDWedgeKB Serial Port and NodeJS The IDWedgeKB is a barcode scanner that reads and parses the information encoded on the 2D barcode found on U.S. Drivers Licenses. IDWedgeKB has two modes of operation;

More information

Weebly 101. Make an Affordable, Professional Website in Less than an Hour

Weebly 101. Make an Affordable, Professional Website in Less than an Hour Weebly 101 Make an Affordable, Professional Website in Less than an Hour Text Copyright STARTUP UNIVERSITY All Rights Reserved No part of this document or the related files may be reproduced or transmitted

More information

Red Hat 3scale 2-saas

Red Hat 3scale 2-saas Red Hat 3scale 2-saas Product For Use with Red Hat 3scale 2-saas Last Updated: 2018-11-07 Red Hat 3scale 2-saas Product For Use with Red Hat 3scale 2-saas Legal Notice Copyright 2018 Red Hat, Inc. The

More information

Human-Computer Interaction Design

Human-Computer Interaction Design Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo Lab 6 - Connecting frontend and backend without page reloads (2016-11-03) by Michael Bernstein, Scott Klemmer, and Philip

More information

PROCE55 Mobile: Web API App. Web API. https://www.rijksmuseum.nl/api/...

PROCE55 Mobile: Web API App. Web API. https://www.rijksmuseum.nl/api/... PROCE55 Mobile: Web API App PROCE55 Mobile with Test Web API App Web API App Example This example shows how to access a typical Web API using your mobile phone via Internet. The returned data is in JSON

More information

nacelle Documentation

nacelle Documentation nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2

More information

Installing PHP on Windows 10 Bash and Starting a Local Server

Installing PHP on Windows 10 Bash and Starting a Local Server Installing PHP on Windows 10 Bash and Starting a Local Server Bash on Ubuntu/Windows is a way to use a command line to run all kinds of programs (including git!). But we ll want a Bash terminal to run

More information

Oracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant

Oracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant Oracle Digital Assistant TechExchange Article. Oracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant Stefan Wörmcke, February 2019 Digital assistants like

More information

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. web.py Tutorial Tom Kelliher, CS 317 1 Acknowledgment This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. 2 Starting So you know Python and want to make

More information

django-baton Documentation

django-baton Documentation django-baton Documentation Release 1.0.7 abidibo Nov 13, 2017 Contents 1 Features 3 2 Getting started 5 2.1 Installation................................................ 5 2.2 Configuration...............................................

More information

Live Agent for Support Agents

Live Agent for Support Agents Live Agent for Support Agents Salesforce, Winter 18 @salesforcedocs Last updated: November 30, 2017 Copyright 2000 2017 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of

More information

Snap-Ins Chat. Salesforce, Summer

Snap-Ins Chat. Salesforce, Summer Snap-Ins Chat Salesforce, Summer 17 @salesforcedocs Last updated: August 17, 2017 Copyright 2000 2017 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc.,

More information

VIDEO 1: WHY IS SEGMENTATION IMPORTANT WITH SMART CONTENT?

VIDEO 1: WHY IS SEGMENTATION IMPORTANT WITH SMART CONTENT? VIDEO 1: WHY IS SEGMENTATION IMPORTANT WITH SMART CONTENT? Hi there! I m Angela with HubSpot Academy. This class is going to teach you all about planning content for different segmentations of users. Segmentation

More information

Full Stack Web Framework with BBG

Full Stack Web Framework with BBG Full Stack Web Framework with BBG *** This guide will be for mac/linux (All commands will be UNIX). Try Windows at your own risk. Intro to Meteor 1 Why Meteor 1 Installation 1 Mac 1 Creating Your First

More information

GAVIN KING RED HAT CEYLON SWARM

GAVIN KING RED HAT CEYLON SWARM GAVIN KING RED HAT CEYLON SWARM CEYLON PROJECT A relatively new programming language which features: a powerful and extremely elegant static type system built-in modularity support for multiple virtual

More information

FRONT USER GUIDE Getting Started with Front

FRONT USER GUIDE Getting Started with Front USER GUIDE USER GUIDE Getting Started with Front ESSENTIALS Teams That Use Front How To Roll Out Front Quick Start Productivity Tips Downloading Front Adding Your Team Inbox Add Your Own Work Email Update

More information

Lab 1 - Introduction to Angular

Lab 1 - Introduction to Angular Lab 1 - Introduction to Angular In this lab we will build a Hello World style Angular component. The key focus is to learn how to install all the required code and use them from the browser. We wont get

More information

TRUST YOUR WEBSITE TO THE EXPERTS PROFESSIONALLY DESIGNED AND FOUND EVERYWHERE THAT MATTERS

TRUST YOUR WEBSITE TO THE EXPERTS PROFESSIONALLY DESIGNED AND FOUND EVERYWHERE THAT MATTERS TRUST YOUR WEBSITE TO THE EXPERTS PROFESSIONALLY DESIGNED AND FOUND EVERYWHERE THAT MATTERS CONTENTS Trust HQBytes with your website 04 The HQBytes difference 10 Designed by professionals 05 Our websites

More information

Hello! ios Development

Hello! ios Development SAMPLE CHAPTER Hello! ios Development by Lou Franco Eitan Mendelowitz Chapter 1 Copyright 2013 Manning Publications Brief contents PART 1 HELLO! IPHONE 1 1 Hello! iphone 3 2 Thinking like an iphone developer

More information

Money Management Account

Money Management Account Money Management Account Overview Red represents debt accounts. Add An Account lets you add any account you want including loans, property, credit cards and investments. Click an account to edit it. Note:

More information

Admin Center. Getting Started Guide

Admin Center. Getting Started Guide Admin Center Getting Started Guide Useful Links Create an Account Help Center Admin Center Agent Workspace Supervisor Dashboard Reporting Customer Support Chat with us Tweet us: @Bold360 Submit a ticket

More information

L.A.M.P. Stack Part I

L.A.M.P. Stack Part I L.A.M.P. Stack Part I By George Beatty and Matt Frantz This lab will cover the basic installation and some configuration of a LAMP stack on a Ubuntu virtual box. Students will download and install the

More information

Step 1: Setup a Gitlab account

Step 1: Setup a Gitlab account Most of us agree that Continuous Integration (CI), Continuous Delivery (CD), cloud infrastructure, test automation, and configuration management make up the basics of devops. Depending on the scale of

More information

Basic Guide to Google+ Hangouts

Basic Guide to Google+ Hangouts Basic Guide to Google+ Hangouts To use the Hangout function on Google+, you will first need an account. If you already have a Gmail account, things are simpler, but it s similar to any other social networking

More information

Chris Buckett. FOREWORD BY Seth Ladd MANNING 6$03/(&+$37(5

Chris Buckett. FOREWORD BY Seth Ladd MANNING 6$03/(&+$37(5 Chris Buckett FOREWORD BY Seth Ladd 6$03/(&+$37(5 MANNING Dart in Action by Chris Buckett Chapter 9 Copyright 2013 Manning Publications brief contents PART 1 INTRODUCING DART...1 1 Hello Dart 3 2 Hello

More information

Chapter 4. Unix Tutorial. Unix Shell

Chapter 4. Unix Tutorial. Unix Shell Chapter 4 Unix Tutorial Users and applications interact with hardware through an operating system (OS). Unix is a very basic operating system in that it has just the essentials. Many operating systems,

More information

Getting Started with the HCA Plugin for Homebridge Updated 12-Nov-17

Getting Started with the HCA Plugin for Homebridge Updated 12-Nov-17 Getting Started with the HCA Plugin for Homebridge Updated 12-Nov-17 Table of Contents Introduction... 3 Getting Ready... 3 Step 1: Installing Bonjour... 5 Step 2: Installing Homebridge and the HCA Plugin...

More information

Composer and Drupal. CIDUG Meeting December 13, 2018 John Rearick

Composer and Drupal. CIDUG Meeting December 13, 2018 John Rearick Composer and Drupal CIDUG Meeting December 13, 2018 John Rearick * Similar to other dependency managers such as: yum, apt, brew, macports, npm, pip, etc. * Helps manage dependency hell. * Lots of dependencies

More information

Top 3 Marketing Metrics You Should Measure in Google Analytics

Top 3 Marketing Metrics You Should Measure in Google Analytics Top 3 Marketing Metrics You Should Measure in Google Analytics Presented By Table of Contents Overview 3 How to Use This Knowledge Brief 3 Metric to Measure: Traffic 4 Direct (Acquisition > All Traffic

More information

How to version control like a pro: a roadmap to your reproducible & collaborative research

How to version control like a pro: a roadmap to your reproducible & collaborative research How to version control like a pro: a roadmap to your reproducible & collaborative research The material in this tutorial is inspired by & adapted from the Software Carpentry lesson on version control &

More information

Full Stack boot camp

Full Stack boot camp Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building

More information

Term Definition Introduced in: This option, located within the View tab, provides a variety of options to choose when sorting and grouping Arrangement

Term Definition Introduced in: This option, located within the View tab, provides a variety of options to choose when sorting and grouping Arrangement 60 Minutes of Outlook Secrets Term Definition Introduced in: This option, located within the View tab, provides a variety of options to choose when sorting and grouping Arrangement messages. Module 2 Assign

More information

One of the fundamental kinds of websites that SharePoint 2010 allows

One of the fundamental kinds of websites that SharePoint 2010 allows Chapter 1 Getting to Know Your Team Site In This Chapter Requesting a new team site and opening it in the browser Participating in a team site Changing your team site s home page One of the fundamental

More information

2. What is Google App Engine. Overview Google App Engine (GAE) is a Platform as a Service (PaaS) cloud computing platform for developing and hosting web applications in Google-managed data centers. Google

More information

Data Feeds Traffic Setup Instructions

Data Feeds Traffic Setup Instructions Data Feeds Traffic Setup Instructions In this document we ll first cover data feeds and traffic, then we ll cover actual setup. Data feeds are simple to find and simple to setup. They are also often less

More information

BlueMix Hands-On Workshop Lab A - Building and Deploying BlueMix Applications

BlueMix Hands-On Workshop Lab A - Building and Deploying BlueMix Applications BlueMix Hands-On Workshop Lab A - Building and Deploying BlueMix Applications Version : 4.00 Last modification date : 13 June 2014 Owner : IBM Ecosystem Development Table of Contents Part 1: Building

More information

DEPLOYING A 3SCALE API GATEWAY ON RED HAT OPENSHIFT

DEPLOYING A 3SCALE API GATEWAY ON RED HAT OPENSHIFT TUTORIAL: DEPLOYING A 3SCALE API GATEWAY ON RED HAT OPENSHIFT This tutorial describes how to deploy a dockerized version of the 3scale API Gateway 1.0 (APIcast) that is packaged for easy installation and

More information

SPRITES Moving Two At the Same Using Game State

SPRITES Moving Two At the Same Using Game State If you recall our collision detection lesson, you ll likely remember that you couldn t move both sprites at the same time unless you hit a movement key for each at exactly the same time. Why was that?

More information

FB Image Contest. Users Manual

FB Image Contest. Users Manual FB Image Contest Users Manual Table of contents Description.. 3 Step by step installation... 5 The administration interface.. 10 Creating a new contest... 13 Creating a Facebook Application.. 19 Adding

More information

IBM Image-Analysis Node.js

IBM Image-Analysis Node.js IBM Image-Analysis Node.js Cognitive Solutions Application Development IBM Global Business Partners Duration: 90 minutes Updated: Feb 14, 2018 Klaus-Peter Schlotter kps@de.ibm.com Version 1 Overview The

More information

Dynamism and Detection

Dynamism and Detection 1 Dynamism and Detection c h a p t e r ch01 Page 1 Wednesday, June 23, 1999 2:52 PM IN THIS CHAPTER Project I: Generating Platform-Specific Content Project II: Printing Copyright Information and Last-Modified

More information

Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service

Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Overview In this lab, you'll create advanced Node-RED flows that: Connect the Watson Conversation service to Facebook

More information

Full Website Audit. Conducted by Mathew McCorry. Digimush.co.uk

Full Website Audit. Conducted by Mathew McCorry. Digimush.co.uk Full Website Audit Conducted by Mathew McCorry Digimush.co.uk 1 Table of Contents Full Website Audit 1 Conducted by Mathew McCorry... 1 1. Overview... 3 2. Technical Issues... 4 2.1 URL Structure... 4

More information

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1 Presents A case study by Devin Zander A look into how absolutely easy internet marketing is. Money Mindset Page 1 Hey guys! Quick into I m Devin Zander and today I ve got something everybody loves! Me

More information

Task-Oriented Solutions to Over 175 Common Problems. Covers. Eclipse 3.0. Eclipse CookbookTM. Steve Holzner

Task-Oriented Solutions to Over 175 Common Problems. Covers. Eclipse 3.0. Eclipse CookbookTM. Steve Holzner Task-Oriented Solutions to Over 175 Common Problems Covers Eclipse 3.0 Eclipse CookbookTM Steve Holzner Chapter CHAPTER 6 6 Using Eclipse in Teams 6.0 Introduction Professional developers frequently work

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b Git Cheat Sheet Git Basics Rewriting Git History git init Create empty Git repo in specified directory. Run with no arguments to initialize the current directory as a git repository. git commit

More information

vsphere APIs and SDKs First Published On: Last Updated On:

vsphere APIs and SDKs First Published On: Last Updated On: First Published On: 07-30-2017 Last Updated On: 07-30-2017 1 Table of Contents 1. vsphere Automation APIs (REST) 1.1.vSphere API Explorer 1.2.vSphere Automation APIs - Introduction 2. vsphere Automation

More information

How to Add a Favicon in Ruby on Rails Apps

How to Add a Favicon in Ruby on Rails Apps How to Add a Favicon in Ruby on Rails Apps Favicons are this nifty little icons on the tab of your browser to help give a little personalized identity rather than the blank page one which is the default

More information

Registering for the Apple Developer Program

Registering for the Apple Developer Program It isn t necessary to be a member of the Apple Developer Program if you don t intend to submit apps to the App Stores, or don t need the cloud-dependent features. We strongly recommend joining, though,

More information

Gearing Up for Development CS130(0)

Gearing Up for Development CS130(0) Gearing Up for Development CS130(0) Development Development is a coding heavy assignment! You will need to create application using React.js (a Javascript Library). This application will display a list

More information

GSAK (Geocaching Swiss Army Knife) GEOCACHING SOFTWARE ADVANCED KLASS GSAK by C3GPS & Major134

GSAK (Geocaching Swiss Army Knife) GEOCACHING SOFTWARE ADVANCED KLASS GSAK by C3GPS & Major134 GSAK (Geocaching Swiss Army Knife) GEOCACHING SOFTWARE ADVANCED KLASS GSAK - 102 by C3GPS & Major134 Table of Contents About this Document... iii Class Materials... iv 1.0 Locations...1 1.1 Adding Locations...

More information

Chapter 1 - Development Setup of Angular

Chapter 1 - Development Setup of Angular Chapter 1 - Development Setup of Angular Objectives Key objectives of this chapter Angular Files and Dependencies Node.js Node package manager (npm) package.json Semantic version numbers Installing Angular

More information

CICD pipeline for your extensions with Visual Studio Team Services

CICD pipeline for your extensions with Visual Studio Team Services 2017-10-11 8:11:00 AM - v2 rev2 CICD pipeline for your extensions with Visual Studio Team Services AUTHORS REVIEWERS TESTERS Willy Schaub Dave McKinstry, David Sanchez Aguilar, Derek Keeler, Hosam Kamel,

More information

django-baton Documentation

django-baton Documentation django-baton Documentation Release 1.3.1 abidibo Nov 05, 2018 Contents 1 Features 3 2 Getting started 5 2.1 Installation................................................ 5 2.2 Configuration...............................................

More information

13 Tried and True Growth Hacking Strategies

13 Tried and True Growth Hacking Strategies 13 Tried and True Growth Hacking Strategies Growth Tip #1. Use Click Popups to Make Conversion Super Easy Click popups have, in many ways, replaced much of the need for squeeze pages. Every time you would

More information

1 Installation (briefly)

1 Installation (briefly) Jumpstart Linux Bo Waggoner Updated: 2014-09-15 Abstract A basic, rapid tutorial on Linux and its command line for the absolute beginner. Prerequisites: a computer on which to install, a DVD and/or USB

More information

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved. Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS 1 Introduction MOBILE, SOCIAL & CLOUD ARE RAISING CUSTOMER EXPECTATIONS We need a way to deliver software so fast that our

More information

mismatch between what is maybe possible today and what is going on in many of today's IDEs.

mismatch between what is maybe possible today and what is going on in many of today's IDEs. What will happen if we do very, very small and lightweight tools instead of heavyweight, integrated big IDEs? Lecturer: Martin Lippert, VMware and Eclispe tooling expert LIPPERT: Welcome, everybody, to

More information