Up and Running with PhoneGap Build – Building from the Command-line Interface

See how PhoneGap, an open-source framework, and PhoneGap Build, a service in the Adobe Creative Cloud, allow you to create cross-platform mobile apps using the web technologies you know and love: HTML, CSS, and JavaScript. This course explores how to use PhoneGap Build to create app-store-ready applications for iOS, Android, and Windows Phone. Learn how to build an app from GitHub, Dreamweaver, Edge Code, or even a simple ZIP file; configure icons, splash screens, and other preferences; enable access to camera and location sensor data; and deploy and install your device on your smart phone or tablet. Watch the lynda.com online course: Up and Running with PhoneGap Build

Topics include:

  • Creating a PhoneGap Build account
  • Exploring the HTML structure of an app
  • Configuring your mobile device for development
  • Building from Dreamweaver, Edge Code, or the command line
  • Setting up a config.xml file
  • Setting parameters and permissions
  • Deploying on iOS or Android

Application command-line interfaces

Application programs (as opposed to operating systems) may also have command line interfaces.


Screenshot of a sample Bash session. GNOME Terminal 3, Fedora 15

An application program may support none, any, or all of these three major types of command line interface mechanisms:

  1. Parameters: Most operating systems support a means to pass additional information to a program when it is launched. When a program is launched from an OS command-line shell, additional text provided along with the program name is passed to the launched program.
  2. Interactive command-line sessions: After launch, a program may provide an operator with an independent means to enter commands in the form of text.
  3. OS inter-process communication: Most operating systems support means of inter-process communication (for example; standard streams or named pipes). Command lines from client processes may be redirected to a CLI program by one of these methods.

CLI software
Some applications support only a CLI, presenting a CLI prompt to the user and acting upon command-lines as they are entered. Some examples of CLI-only applications are:

  • Diskpart
  • Ed
  • Edlin
  • Fdisk
  • Ping

Hybrid software

Some computer programs support both a CLI and a GUI. In some cases, a GUI is simply a wrapper around a separate CLI executable file. In other cases, a program may provide a CLI as an optional alternative to its GUI. Both interfaces do not always offer similar functionality. For example, MATLAB, a numerical analysis computer program, provides no GUI for some calculations, but the CLI can handle any calculation MATLAB supports.

Build My Site

Ruby on Rails 4: Using Validation Methods

Join Kevin Skoglund as he shows how to create full-featured, object-oriented web applications with the latest version of the popular, open-source Ruby on Rails framework. This course explores each part of the framework, best practices, and real-world development techniques. Kevin teaches how to design an application; route browser requests to return dynamic page content; structure and interact with databases using object-oriented programming; create, update, and delete records; and implement user authentication. Watch the online video course: Ruby on Rails 4 Essential Training

Ruby on Rails

RubyRuby on Rails, often simply Rails, is an open source web application framework which runs via the Ruby programming language. It is a full-stack framework: it allows creating pages and applications that gather information from the web server, talk to or query the database, and render templates out of the box. As a result, Rails features a routing system that is independent of the web server.

Ruby on Rails emphasizes the use of well-known software engineering patterns and principles, such as active record pattern, convention over configuration (CoC), don’t repeat yourself (DRY), and model–view–controller (MVC).

Framework Structure

Ruby on Rails is separated into various packages, namely ActiveRecord (an object-relational mapping system for database access), ActiveResource (provides web services), ActionPack, ActiveSupport and ActionMailer. Prior to version 2.0, Ruby on Rails also included the Action Web Service package that is now replaced by Active Resource. Apart from standard packages, developers can make plugins to extend existing packages. Rails 3.2 deprecates the old plugins Rails 2-3-stable style in which plugins are to be placed under vendor/plugins, in favor of packaged gems.

Some basic Ruby code:

# Everything, including a literal, is an object, so this works:
-199.abs                                                 # => 199
"ice is nice".length                                     # => 11
"ruby is cool.".index("u")                               # => 1
"Nice Day Isn't It?".downcase.split("").uniq.sort.join   # => " '?acdeinsty"


puts "Give me a number"
number = gets.chomp
puts number.to_i
output_number = number.to_i + 1
puts output_number.to_s + ' is a bigger number.'


The following code defines a class named Person. In addition to initialize, the usual constructor to create new objects, it has two methods: one to override the <=> comparison operator (so Array#sort can sort by age) and the other to override the to_s method (so Kernel#puts can format its output). Here, attr_reader is an example of metaprogramming in Ruby: attr_accessor defines getter and setter methods of instance variables, but attr_reader only getter methods. The last evaluated statement in a method is its return value, allowing the omission of an explicit return statement.

class Person
  attr_reader :name, :age
  def initialize(name, age)
    @name, @age = name, age
  def <=>(person) # the comparison operator for sorting
    age <=> person.age
  def to_s
    "#{name} (#{age})"
group = [
  Person.new("Bob", 33),
  Person.new("Chris", 16),
  Person.new("Ash", 23)
puts group.sort.reverse

The preceding code prints three names in reverse age order:

Bob (33)
Ash (23)
Chris (16)

Person is a constant and is a reference to a Class object.

Build My Site

UX Design Tools: Grouping and Reusing Content Inside Smart Objects

The UX Design Tools series makes the connection between early UX creative processes, like wireframing and prototyping, with the tools and techniques necessary to create a successful product design. This installment delves into the power of Adobe Photoshop. lynda.com author Justin Putney shows you how to create and edit live shapes, a key component in wireframes; store and display different application states with layer comps; export images and multilayer comps for sharing with clients and developers; and much more. Watch the online video course: UX Design Tools: Photoshop.

Topics include:

  • Setting up files
  • Building live shapes with the Rectangle tool
  • Using character and paragraph styles
  • Organizing content into layers
  • Building layer comps
  • Creating and reapplying custom shapes
  • Using Smart Objects to group and store elements
  • Saving and using layer effects
  • Exporting artwork

Smart Objects

UXSmart Objects are layers that contain image data from raster or vector images, such as Photoshop or Illustrator files. Smart Objects preserve an image’s source content with all its original characteristics, enabling you to perform nondestructive editing to the layer.

User Experience

User experience (UX) involves a person’s behaviors, attitudes, and emotions about using a particular product, system or service. User experience includes the practical, experiential, affective, meaningful and valuable aspects of human-computer interaction and product ownership. Additionally, it includes a person’s perceptions of system aspects such as utility, ease of use and efficiency. User experience may be considered subjective in nature to the degree that it is about individual perception and thought with respect to the system. User experience is dynamic as it is constantly modified over time due to changing usage circumstances and changes to individual systems as well as the wider usage context in which they can be found.


User experience design most frequently defines a sequence of interactions between a user (individual person) and a system, virtual or physical, designed to meet or support user needs and goals, primarily, while also satisfying systems requirements and organizational objectives.

Typical outputs include:

  • Site Audit (usability study of existing assets)
  • Flows and Navigation Maps
  • User stories or Scenarios
  • User segmentations and Persona (Fictitious users to act out the scenarios)
  • Site Maps and Content Inventory
  • Wireframes (screen blueprints or storyboards)
  • Prototypes (For interactive or in-the-mind simulation)
  • Written specifications (describing the behavior or design)
  • Graphic mockups (Precise visual of the expected end result)

See More Resources….

Experimenting with linked Smart Objects
Free Photoshop CC – Download Adobe Photoshop free trial
Create Smart Objects | CC, CS6

Build My Site

Packaging an Android app

In this course, lynda.com author David Gassner shows you how to prepare, package, and publish your Android app on Google Play, and provides a brief overview of the alternatives offered by Amazon and Barnes & Noble. Watch the online video course: Distributing Android Apps

Topics include:

  • Packaging an Android app
  • Distributing through Google vs. Amazon vs. Barnes & Noble
  • Exporting the APK file
  • Testing the app
  • Shrinking and protecting an app with ProGuard
  • Creating and uploading screenshots to Google Play
  • Adding in-app products
  • Tracking app usage and revenue

Android Apps


Android 4.4.2 home screen

Android has a growing selection of third party applications, which can be acquired by users either through an app store such as Google Play or the Amazon Appstore, or by downloading and installing the application’s APK file from a third-party site. The Play Store application allows users to browse, download and update apps published by Google and third-party developers, and is pre-installed on devices that comply with Google’s compatibility requirements. The app filters the list of available applications to those that are compatible with the user’s device, and developers may restrict their applications to particular carriers or countries for business reasons. Purchases of unwanted applications can be refunded within 15 minutes of the time of download, and some carriers offer direct carrier billing for Google Play application purchases, where the cost of the application is added to the user’s monthly bill.

As of July 2013, there are more than one million applications available for Android in the Play Store. As of May 2013, 48 billion apps have been installed from the Google Play store.

Applications (“apps”), that extend the functionality of devices, are developed primarily in the Java programming language language using the Android software development kit (SDK). The SDK includes a comprehensive set of development tools, including a debugger, software libraries, a handset emulator based on QEMU, documentation, sample code, and tutorials. The officially supported integrated development environment (IDE) is Eclipse using the Android Development Tools (ADT) plugin. Other development tools are available, including a Native Development Kit for applications or extensions in C or C++, Google App Inventor, a visual environment for novice programmers, and various cross platform mobile web applications frameworks.

It was announced in January 2014 that Chrome HTML5 web applications should become available, using a compatibility layer from the open source Apache Cordova framework to allow such applications to be wrapped in a native application shell, enabling their distribution over Google Play.

In order to work around limitations on reaching Google services due to Internet censorship in the People’s Republic of China, Android devices sold in the PRC are generally customized to use state approved services instead.

Learn to Build a Simple Android App Interactive Video Learning Path

from: Treehouse

Build My Site

Sass Mixins | JavaScript Coding | Git Tips

It’s time for another dose of all things web with The Treehouse Show! :)

This week Nick and Jason chat about Sass mixins, JavaScript coding, git tips from the trenches, and more. You can find more learning videos similar to this one at: teamtreehouse.com

Learn how to build websites and apps, write code, or start a business at Treehouse. Learn from over 1,000 videos created by our expert teachers on web design, coding, business, and much more. Treehouse teaches the in-demand technology skills you need to land your dream job.

Join Treehouse today and get your first two weeks free.

Firefox Version 27

Firefox 27 was released on February 4, 2014. It adds improved Social API and SPDY 3.1 support, as well as enabling of TLS 1.1 and 1.2 by default. Also, it brings many bug fixes, security improvements, and developer-related changes.

Firefox 27.0.1 was released on February 13, 2014. It fixed stability issues with Greasemonkey and other JavaScript coding that used ClearTimeoutOrInterval, as well as JavaScript math correctness issues.

Future releases

Test builds can be downloaded from the Firefox development channels: “Beta”, “Aurora”, and “Nightly” (Central). as of February 7, 2014, Firefox 28 beta is in the “Beta” channel, Firefox 29 alpha is in the “Aurora” channel, and as of February 4, 2014, Firefox 30 pre-alpha is in the “Nightly” (Central) channel.

Firefox 28 is scheduled to be released on March 18, 2014. Firefox 29, scheduled to be released on April 29, 2014, might include the Australis interface.


ECMAScript is the scripting language standardized by Ecma International in the ECMA-262 specification and ISO/IEC 16262. The language is widely used for client-side scripting on the web, in the form of several well-known implementations such as JavaScript, JScript and ActionScript. The ECMAScript language includes structured, dynamic, functional, and prototype-based features.

Javascript Coding

The World of ECMAScript by John Resig

ECMAScript Harmony (6th Edition)

The Sixth Edition adds significant new syntax for writing complex applications, including classes and modules, but defines them semantically in the same terms as ECMAScript 5 strict mode. Other new features include iterators and for/of loops, Python-style generators and generator expressions, arrow functions, binary data, collections (maps, sets and weak maps), and proxies (metaprogramming for virtual objects and wrappers). As the first “ECMAScript Harmony” specification, it is also known as “ES6 Harmony”.

Here are the links from the video:

Z63 | 8 Sass mixins you must have in your toolbox

Firefox Notes – Desktop

Sass: Mixin or Placeholder?

A re-introduction to JavaScript (JS Tutorial) – JavaScript | MDN


Git tips from the trenches

A List Apart Pattern Library

Git Basics Structured Interactive Video Learning Path

from: Treehouse

Build My Site

How to Setup Your E-mail Account in iOS 7

Learn how to setup your email account on your iPhone, iPad or iPod Touch running iOS 7. Learn more about BlueHost, the world’s largest providers of cloud-based online solutions.


E-Mail protocols

e-mailThe Internet Message Access Protocol (commonly known as IMAP) is an Application Layer Internet protocol that allows an e-mail client to access e-mail on a remote mail server. The current version, IMAP version 4 revision 1 (IMAP4), is defined by RFC 3501. An IMAP server typically listens on well-known port 143. IMAP over SSL (IMAPS) is assigned well-known port number 993.

IMAP supports both on-line and off-line modes of operation. E-mail clients using IMAP generally leave messages on the server until the user explicitly deletes them. This and other characteristics of IMAP operation allow multiple clients to manage the same mailbox. Most e-mail clients support IMAP in addition to Post Office Protocol (POP) to retrieve messages; however, fewer e-mail services support IMAP. IMAP offers access to the mail storage. Clients may store local copies of the messages, but these are considered to be a temporary cache.

Incoming e-mail messages are sent to an e-mail server that stores messages in the recipient’s e-mail box. The user retrieves the messages with an e-mail client that uses one of a number of e-mail retrieval protocols. Some clients and servers preferentially use vendor-specific, proprietary protocols, but most support SMTP for sending e-mail and POP and IMAP for retrieving e-mail, allowing interoperability with other servers and clients. For example, Microsoft’s Outlook client uses MAPI, a Microsoft proprietary protocol to communicate with a Microsoft Exchange Server. IBM’s Notes client works in a similar fashion when communicating with a Domino server. All of these products also support POP, IMAP, and outgoing SMTP. Support for the Internet standard protocols allows many e-mail clients such as Pegasus Mail or Mozilla Thunderbird to access these servers, and allows the clients to be used with other servers.

See Related Resources:

Build My Site

Sass and Compass Tutorial: Foundation’s Sass File Structure

This tutorial takes a detailed look at the Sass file structure for Foundation, including Foundation’s variables, the normalize style sheet, and more. Watch more at: Foundation: Incorporating Sass and Compass.

This tutorial is a single movie from the Foundation: Incorporating Sass and Compass course presented by lynda.com author Jen Kramer. The complete course is 2 hours and 18 minutes and shows how to style your Foundation site with Sass and Compass.

Sass1. Getting Started
2. Working with Sass
3. Simple Sass Customizations
4. Advanced Sass Customizations

The Benefits of Style Sheets in Web Development

Separation of style and content has many benefits, but has only become practical in recent years due to improvements in popular web browsers’ CSS implementations.


Overall, users experience of a site utilising style sheets will generally be quicker than sites that don’t use the technology. ‘Overall’ as the first page will probably load more slowly – because the style sheet AND the content will need to be transferred. Subsequent pages will load faster because no style information will need to be downloaded – the CSS file will already be in the browser’s cache.


Holding all the presentation styles in one file significantly reduces maintenance time and reduces the chance of human errors, thereby improving presentation consistency. For example, the font color associated with a type of text element may be specified — and therefore easily modified — throughout an entire website simply by changing one short string of characters in a single file. The alternate approach, using styles embedded in each individual page, would require a cumbersome, time consuming, and error-prone edit of every file.


Sites that use CSS with either XHTML or HTML are easier to tweak so that they appear extremely similar in different browsers (Internet Explorer, Mozilla Firefox, Opera, Safari, etc.).

Sites using CSS “degrade gracefully” in browsers unable to display graphical content, such as Lynx, or those so very old that they cannot use CSS. Browsers ignore CSS that they do not understand, such as CSS 3 statements. This enables a wide variety of user agents to be able to access the content of a site even if they cannot render the style sheet or are not designed with graphical capability in mind. For example, a browser using a refreshable braille display for output could disregard layout information entirely, and the user would still have access to all page content.


If a page’s layout information is all stored externally, a user can decide to disable the layout information entirely, leaving the site’s bare content still in a readable form. Site authors may also offer multiple style sheets, which can be used to completely change the appearance of the site without altering any of its content.

Most modern web browsers also allow the user to define their own style sheet, which can include rules that override the author’s layout rules. This allows users, for example, to bold every hyperlink on every page they visit.


Because the semantic file contains only the meanings an author intends to convey, the styling of the various elements of the document’s content is very consistent. For example, headings, emphasized text, lists and mathematical expressions all receive consistently applied style properties from the external style sheet. Authors need not concern themselves with the style properties at the time of composition. These presentational details can be deferred until the moment of presentation.


The deferment of presentational details until the time of presentation means that a document can be easily re-purposed for an entirely different presentation medium with merely the application of a new style sheet already prepared for the new medium and consistent with elemental or structural vocabulary of the semantic document. A carefully authored document for a web page can easily be printed to a hard-bound volume complete with headers and footers, page numbers and a generated table of contents simply by applying a new style sheet.

See Related Resources:

Build My Site

jQuery UI Tutorial: Adding a User Interface with jQuery UI

jQuery UI is a library of jQuery and JavaScript interactions, as well as some CSS. This tutorial tours some of the jQuery UI capabilities, such as adding collapsible panels, progress bars, sliders, effects, and more, to a user interface. Watch more at: jQuery UI Widgets.

This tutorial is a single movie from jQuery UI Widgets by lynda.com author Joe Chellman. In this 33-minute course, learn how to install the JQuery UI plugin, use its prebuilt widgets on your existing webpages, and add interactivity with behaviors

1. Widgets and More with jQuery UI


jQuery UIjQuery was one of the first libraries to support an entirely different way of finding elements with JavaScript: it allows us to find groups of elements using CSS selectors.

The main function in jQuery is also called $, but because it uses CSS selectors, this function is much more powerful than Prototype’s version, and manages to roll a number of Prototype’s functions into one.

If you wanted to use jQuery to get an element by ID, you’d type the following:

var money = $(“#money”);

# indicates an ID selector in CSS, so $(“#money”) is the equivalent of typing


To get a group of elements by tag name, you’d pass $ a CSS element type selector:

var paragraphs = $(“p”);

And to get a group of elements by class, you’d use a class selector:

var tables = $(“.dataTable”);

And, as with CSS, you can combine all these simple selector types in, say, a descendant selector:

var tables = $(“#content table.dataTable”);

tables is now an array of table elements that are descendants of the element with ID content, and that have a class of dataTable.

The CSS rule parsing in jQuery is really quite spectacular, and it supports the majority of selectors from CSS1, CSS2, and CSS3, as well as XPath. This makes it possible for us to use selectors like this:

var complex = $(“form > fieldset:only-child input[@type=radio]“);

Once you break it down, that query finds all radio button input elements inside fieldsets that are direct children of form elements, but only where the fieldset is the only child of the form.

See an example of the Accordian Widget from jQuery UI on Codepen:

Check out this Pen!


See Related Resources:

Build My Site

CSS Tutorial: Creating Your First Task

In this tutorial, learn how to create your first task with Grunt.js, a task manager that helps you create efficient workflows for your JavaScript projects. Watch more at: Responsive CSS with Sass and Compass.

This tutorial is a single movie from the Responsive CSS with Sass and Compass course presented by lynda.com author Ray Villalobos. The complete course is 3 hours and 22 minutes and shows how Compass (powered by Sass) can help you build a responsive layout workflow that is easier, faster, and more compatible than CSS alone.

1. Getting Started
2. Setting Up a Workflow with Grunt.js
3. Scaffolding Our HTML
4. Sass Principles
5. Styling with Sass and Compass
6. Responsive Layout Grids with Susy

How to Setup a Grunt Project

Grunt - a Javascript Task Runner

  1. install node
  2. install ruby // for sass
  3. install sass
  4. Create “package.json” file
  5. Create Gruntfile.js file
  6. Setup and install required tasks and setup as you want them to run
  7. Open cmd/terminal and go to project-location and type “grunt” to start the tasks
    Keep calm and keep coding

Install these in project location:

npm install grunt-contrib-concat –save-dev npm install grunt-contrib-uglify –save-dev npm install grunt-contrib-imagemin –save-dev npm install grunt-contrib-sass –save-dev npm install grunt-contrib-watch –save-dev

See more about this on: Github: Grunt installation and setup for basic front-end dev stuff (sass, js-concat & images).

Command-line Interface – CLI

A command-line interface (CLI), also known as command-line user interface, console user interface, and character user interface (CUI), is a means of interacting with a computer program where the user (or client) issues commands to the program in the form of successive lines of text (command lines).

Command-line interfaces to computer operating systems are less widely used by casual computer users, who favor graphical user interfaces. Command-line interfaces are often preferred by more advanced computer users, as they often provide a more concise and powerful means to control a program or operating system.

Programs with command-line interfaces are generally easier to automate via scripting.


Npm is the official package manager for Node.js. As of Node.js version 0.6.3, npm is bundled and installed automatically with the environment. Npm runs through the command line and manages dependencies for an application. It also allows users to install Node.js applications that are available on the npm registry.

See Related Topics:

Build My Site

Underscore.js Tutorial: Sorting and Grouping

One of the benefits of working with the JavaScript library Underscore.js is that it can easily sort and group data for you. In this tutorial, find out how, as expert Joe Marini explains each process, step-by-step. Watch more at: Up and Running with Underscore.js.


This tutorial is a single movie from the Up and Running with Underscore.js course presented by lynda.com author Joe Marini. The complete course is 2 hours and shows how to simplify your code and eliminate repetitive data-related development tasks with Underscore.js, a different kind of JavaScript library.

1. Overview of Underscore.js
2. Underscore.js Collections
3. Arrays and Objects
4. Miscellaneous Underscore.js Utilities
5. Building a Practical Example

Pure Javascript/AJAX Libraries

  • Google Closure Library – Google Closure Tools is a set of tools to help developers build rich web applications with JavaScript. It was developed by Google for use in their web applications such as Gmail, Google Docs and Google Maps.

  • Joose – The Joose meta-object system is multi-paradigm. It supports class-based and prototype-based programming styles as well as class-based inheritance and role-based extension. While other JavaScript frameworks often specialize on DOM-access and AJAX, Joose specializes solely on bringing successful programming techniques to the JavaScript scripting language. Joose is thus often used in conjunction with another DOM/Ajax JavaScript framework and is tested with jQuery, YUI, Dojo, ExtJS, Prototype, Mootools and PureMVC.

  • jsPHP – jsPHP is free, open source software, dual-licensed under the MIT License or the GNU General Public License, Version 2. jsPHP is designed to provide a familiar and powerful programming interface for JavaScript programmers with a background in, or integrating with, PHP. jsPHP is a useful supplement to other JavaScript libraries and can be used in Ajax applications and dynamic web pages and web applications.

  • Microsoft’s Ajax library – The Microsoft Ajax Library is a JavaScript library that provides the features for the client portion of the ASP.NET AJAX framework. – Components – The library provides an infrastructure to build either visual or non-visual JavaScript components. A global JavaScript object – Sys.Application – is responsible for managing the lifecycle of client components.

  • MochiKit – Inspired by the Python networking framework, Twisted, it uses the concept of deferred execution to allow asynchronous behaviour. This has made it useful in the development of interactive web pages which maintain a dialog with the web server, sometimes called Ajax applications.

  • PDF.js – PDF.js or pdf.js is a JavaScript library intended to render PDF files using the HTML5 Canvas for a safer and web standards compliant web browser rendering of PDF file. The project is led by the Mozilla Foundation after Andreas Gal launched it (initially as an experiment) in 2011.

  • Rico – Rico is an open source JavaScript library for developing rich internet applications with Ajax. Rico builds on the Prototype JavaScript Framework, adding drag-and-drop, animation effects, and other tools.

  • Socket.IO – Socket.IO is a JavaScript library for realtime web applications. It has two parts: a client-side library that runs in the browser, and a server-side library for node.js. Both components have a nearly identical API. Like node.js, it is event-driven.

  • SprySpry framework – The Spry Framework is an open source Ajax framework developed by Adobe Systems which is used in the construction of Rich Internet applications. Unlike other pure JavaScript frameworks such as the Dojo Toolkit and Prototype, Spry is geared towards web designers, not web developers. On August 29, 2012, Adobe announced that it will no longer continue development of Spry and handed it over to the community on GitHub.

  • Underscore.js – Underscore.js is a JavaScript library which provides utility functions for common JavaScript tasks. It is comparable to features provided by Prototype.js and the Ruby language, but opts for a functional programming design instead of extending object prototypes. For example, Underscore.js’s _.each function delegates to the host environment’s native forEach implementation when present, or a compatible version when absent. The documentation refers to Underscore.js as “the tie to go along with jQuery‘s tux, and Backbone.js‘s suspenders.”

  • Wakanda Framework – Wakanda is an open-source web application framework for developing web and mobile applications in JavaScript. It includes a database server (WakandaDB), a JavaScript framework (WAF), and Wakanda Studio, an integrated development environment.

Build My Site