your one stop shop for all your vaping needs. From
Premium E-Liquid down to the atomizers that vaporize
them, we strive to bring you the absolute finest
products at the lowest possible prices. Since the
beginning, we have believed that the consumer deserves
more than what other companies are offering. Here at
Master Vape, we promise you will receive exceptional
customer service and so much more.
E-Liquid is our passion, and it helped us form Master
Vape into what it is today. Cloud Chaser was born late
in 2013 by two people with a passion for E-Liquid.
Using only the finest American ingredients, the company
instantly became a major player. After the immediate
success of Cloud Chaser, we decided it was time to
expand. Bringing in mods and tanks was obvious, but we
really wanted to take it a step further. Now we can
offer original equipment manufacturing to our beloved
clients.
Our customers are anyone who needs help in this
industry. From vape professionals to the beginner, we
want to be right by your side through everything. Not
only do we stand by the products we sell, we use them
everyday. All employees are trained to troubleshoot
devices and help pick the perfect e-liquid for every
individual. No one will beat our customer service, and
that is a guarantee. With any questions, comments, or
concerns please contact us at MasterVapeUSA.com


Introduction
This document specifies a **RESTful API** for WSO2 **API Manager** - Gateway. Please see [full swagger definition](https://raw.githubusercontent.com/wso2/carbon-apimgt/v6.5.176/components/apimgt/org.wso2.carbon.apimgt.rest.api.admin/src/main/resources/admin-api.yaml) of the API which is written using [swagger 2.0](http://swagger.io/) specification.
Version information
v1
Contact information
Contact: WSO2
Email<EMAIL_ADDRESS>License information
License: Apache 2.0
URL: http://www.apache.org/licenses/LICENSE-2.0.html
URI Scheme
Host: apis.wso2.com
BasePath: /api/am/gateway/v1
Scheme: [HTTPS]
Consumes
[application/json]
Produces
[application/json]


This {{restaurant.category}} is located at {{restaurant.address}}.
Rating: {{restaurant.rating}}
This {{attraction.category}} has {{attraction.num_reviews}} reviews.
Rating: {{attraction.rating}}


Brief
AMCAS 4 Schools is a new initiative to give Medical Schools greater insight into their student data. This is part of an overhaul of the old platform and this application is one facet of that product strategy. Creating this new application would give the AMCAS team a new revenue stream that was previously not available.
The old platform is out of date and had not been updated since the early 2000s. The platform was used to allow Medical School Deans & Administrators to view reports on their data and to see all student applications. This application will improve upon those reports and allow users to view their data in a dashboard. Users will be able to gleam greater insights through data visualization as well. This solution will not replace the current reports completely but will allow a new channel for those reports to be added [to this application] and updated when the time comes.
AMCAS is a service within AAMC to allow potential medical students to apply to medical schools. They contain multiple products for the application process that aid Students and Medical School Administrators. Currently, all US MD medical schools with the exception of those from Texas and some in California, are part of the AAMC family and utilize the AMCAS services to manage their student applications. This allows for standardization of application forms and processes to lessen the burden for potential students and medical schools.
My Role
In this role, I was the UX designer for the application. I worked closely with the Product Owners, Business Analyst, Project Manager, and Developers. We held weekly meetings to present designs and to discuss any new issues or new design work needed for the upcoming week. Besides the weekly meeting I was in constant collaboration with the team. UX was brought in during the initial requirements phase and we started working on the designs along side requirements gathering in an agile life cycle.
Process
We used a Lean UX approach throughout this project. We didn't want to start with a list of features and requirements. We needed to create something iteratively based on real user needs.
We focused on designing one part or feature of the application before moving onto another part or feature. Starting with the layout and navigation and then moving onto the 6 Reports. Each section took at least 3 Design Sprints before we were able to finalize the designs. Each Design Sprint was 1 week.
Lean User Testing
For each section we tested at least once with users. Our user base was difficult to get in contact with because they are usually pretty busy. We decided to only recruit 3 users for each test. We wanted to move fast and with limited time during sprints and difficulty scheduling we didn't want to waste time trying to schedule many users. We used the guerilla testing method. We did not have predetermined scripts, we gave the user an overview and asked them questions as they went through the prototype.
Discovery Phase
To gain a better understanding of what problems users encountered, user feedback was gathered by a mix of customer support emails and user interviews. We conducted 4 user interviews with 4 different medical schools.
From user feedback, there was a consensus of medical schools who found the current reports useful but would like to have more reports than just the ones provided. There were also some medical schools that did not utilize reports as is and took the data to manipulate in excel or their data analysis tool of choice.
To fill this need the team wanted to come up with a new product that would offer more flexibility and more reports than currently available. We started coming up with ideas for how this product should fit into the existing landscape of applications.
Product Strategy
The team started by conducting an exercise where everyone would write down on post-it notes their ideal solutions, current problems, or ideas to explore and then post it on the white board.
After putting up the post-it notes, we were all given 3 stickers to add to the post-its we thought were noteworthy and needed to be looked at further.
Based on this list we were able to identify what was important for a new product based on which post-its had the most stickers.
Eventually after discussion and based on the data from the session, we decided for the product to be a dashboard / reporting tool. This tool would give the user access to set reports and would allow the user to eventually create custom reports.
Success Metric
This being a new product there was no existing metric to compare our product against. Instead we opted to use the System Usability Scale (SUS) score. This is a simple 10 question survey that was given to users to determine usability of an application. SUS scores are useful because they are simple and can give valid data with very small sample sizes. Any score 68 or above is considered above average.
After the product design was finalized, we tested the prototype on 10 users and administered the SUS survey to determine success of the project.
New Global Navigation
For this new application, the first piece to tackle was how everything would be organized. The previous navigation was not holding up well over time. Based on use of the navigation in other products, there were issues that appeared when adding more links to the navigation because of limited space. The old global navigation was designed with only web in mind and not for products/applications.
Old Navigation New NavigationHome Page / New Notifications
After discussion, it was not practical to land the user on the dashboard right away as some users may not have access to certain reports such as the dashboard. Landing the user on the home page first solved that issue.
The home page includes notifications that can be set by the AMCAS team to let users know about any upcoming updates or maintenance to the product among other events. Also, included in the home page is a way for users to see statistics or information based on their student data on a regular basis.
Eventually, this feature would be configurable by the user to show them the information they would want at regular times (i.e. daily, weekly, monthly).
Reports
The application is organized by reports with each link in the navigation being an individual report. The future state is to allow the user to configure their own reports but for MVP there will be a set number of reports offered.
The first report users would most likely see and use would be the Dashboard. To identify the most important data points and their priority in the dashboard, we sent out a survey to medical schools to understand their data needs.
There are 6 reports in total, including the Map.
Dashboard SES Disadvantaged Report Time Since Undergraduate Report Aggregate Report - Choose Your Medical School Summary Report - Choose Your Medical SchoolDrill Down Views
The most important data points are displayed in the tiles. The tiles can be clicked on to view more details about the data point.
Initially the users are only concerned with their numbers and if they are improving or not. If a user notices a trend, they can then view more information by clicking into the tile to view the data in further detail.
Filters
Filtering can give the user a way to view the reports and customize them on the fly. This would be a stepping stone to full customization but for MVP, filters are only ad hoc and not able to be saved. To better understand what filters would be needed we sent out a survey.
Showing Data Together (Data Views)
Another feature which allows greater insight for users is to allow them to compare their data against the entire pool of medical school applicants at the national level. This can give them greater insight into how they are doing compared to the average.
Showing only the Schools data Showing both the Schools data and National dataDifferent Views of Same Data
Data visualization is best when viewing the data in different presentations, insights that were not seen before become apparent. A couple of the reports were designed to be viewable in different presentations.
Map
Allowing users to view their data in a geographic visualization gave them greater insight into where their students were coming from. This map shows data down to the county level. When viewing the county data further data points show up in the tiles below the map.
Conclusion
Starting from scratch and beginning in the initial stages of product development was a great learning experience though not without a steep learning curve. This product team was quite large and managing feedback and communication between everyone was a challenge on this project.
Overall, this product came together and we can use what was learned to help improve the process for product concept development in the future.
Currently, the product design has been approved and the MVP is in final stages of development as of October 2018. The SUS score of the final product design was 80 (average score of 10 users)


Next: functionp, Previous: function (Special Operator), Up: Data and Control Flow Dictionary
function-lambda-expression
function
⇒ lambda-expression, closure-p, name
function—a function.
lambda-expression—a lambda expression or nil.
closure-p—a generalized boolean.
name—an object.
Returns information about function as follows:
The primary value, lambda-expression, is function’s defining lambda expression, or nil if the information is not available. The lambda expression may have been pre-processed in some ways, but it should remain a suitable argument to compile or function. Any implementation may legitimately return nil as the lambda-expression of any function.
The secondary value, closure-p, is nil if function’s definition was enclosed in the null lexical environment or something non-nil if function’s definition might have been enclosed in some non-null lexical environment. Any implementation may legitimately return true as the closure-p of any function.
The tertiary value, name, is the "name" of function. The name is intended for debugging only and is not necessarily one that would be valid for use as a name in defun or function, for example. By convention, nil is used to mean that function has no name. Any implementation may legitimately return nil as the name of any function.
The following examples illustrate some possible return values, but are not intended to be exhaustive:
(function-lambda-expression #'(lambda (x) x)) ⇒ NIL, false, NIL OR⇒ NIL, true, NIL OR⇒ (LAMBDA (X) X), true, NIL OR⇒ (LAMBDA (X) X), false, NIL (function-lambda-expression (funcall #'(lambda () #'(lambda (x) x)))) ⇒ NIL, false, NIL OR⇒ NIL, true, NIL OR⇒ (LAMBDA (X) X), true, NIL OR⇒ (LAMBDA (X) X), false, NIL (function-lambda-expression (funcall #'(lambda (x) #'(lambda () x)) nil)) ⇒ NIL, true, NIL OR⇒ (LAMBDA () X), true, NIL NOT⇒ NIL, false, NIL NOT⇒ (LAMBDA () X), false, NIL (flet ((foo (x) x)) (setf (symbol-function 'bar) #'foo) (function-lambda-expression #'bar)) ⇒ NIL, false, NIL OR⇒ NIL, true, NIL OR⇒ (LAMBDA (X) (BLOCK FOO X)), true, NIL OR⇒ (LAMBDA (X) (BLOCK FOO X)), false, FOO OR⇒ (SI::BLOCK-LAMBDA FOO (X) X), false, FOO (defun foo () (flet ((bar (x) x)) #'bar)) (function-lambda-expression (foo)) ⇒ NIL, false, NIL OR⇒ NIL, true, NIL OR⇒ (LAMBDA (X) (BLOCK BAR X)), true, NIL OR⇒ (LAMBDA (X) (BLOCK BAR X)), true, (:INTERNAL FOO 0 BAR) OR⇒ (LAMBDA (X) (BLOCK BAR X)), false, "BAR in FOO"
Although implementations are free to return "nil, true, nil" in all cases, they are encouraged to return a lambda expression as the primary value in the case where the argument was created by a call to compile or eval (as opposed to being created by loading a compiled file).
Next: functionp, Previous: function (Special Operator), Up: Data and Control Flow Dictionary


Web development is the building and maintenance of websites; it's the work that happens behind the scenes to make a website look great, work fast and perform well with a seamless user experience. Web developers, or 'devs', do this by using a variety of coding languages.
A scripting language or script language is a programming language for a runtime system that automates the execution of tasks that would otherwise be performed individually by a human operator. Scripting languages are usually interpreted at runtime rather than compiled.
A programming language is a computer language that is used by programmers (developers) to communicate with computers. It is a set of instructions written in any specific language ( C, C++, Java, Python) to perform a specific task.
Personal Porfolio website using HTML, CSS, JavaScript.
Work in Progress.
Upcoming Soon...
Upcoming Soon...
Upcoming Soon...
Thanks, to visit my profile.
Hope you & your family is safe in this pandemic
situation.
Stay Home, Stay Safe
If you have any suggestion for me.
Below i
maintained my Email-address & in my about section i maintain HackerRank, Github, LinkedIn,
Gmail, Whatsapp Link. So, You can reach me.


Extends and builds on the 'mice' package by adding a functionality to perform multivariate predictive mean matching on imputed data as well as new functionalities to perform predictive mean matching on factor variables.
| Version: | 1.1.0 |
| Depends: | R (≥ 3.3), mice (≥ 2.46.0) |
| Imports: | RANN (≥ 2.5.1), RANN.L1 (≥ 2.5) |
| Suggests: | testthat |
| Published: | 2018-03-05 |
| Author: | Tobias Schumacher [aut, cre], Philipp Gaffert [aut], Stef van Buuren [ctb], Karin Groothuis-Oudshoorn [ctb] |
| Maintainer: | Tobias Schumacher <tobias.schumacher1 at rwth-aachen.de> |
| BugReports: | http://github.com/tobiasschumacher/miceExt/issues |
| License: | GPL-2 |
| URL: | http://github.com/tobiasschumacher/miceExt |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | miceExt results |
| Reference manual: | miceExt.pdf |
| Package source: | miceExt_1.1.0.tar.gz |
| Windows binaries: | r-devel: miceExt_1.1.0.zip, r-release: miceExt_1.1.0.zip, r-oldrel: miceExt_1.1.0.zip |
| OS X binaries: | r-release: miceExt_1.1.0.tgz, r-oldrel: miceExt_1.1.0.tgz |
| Old sources: | miceExt archive |
Please use the canonical form https://CRAN.R-project.org/package=miceExt to link to this page.


Every time we start an audiobook from Amazon and it says "This is Audible," Cora replies "Yes it is." #dadjoke #winning
4/14/2017, 10:06:31 PM
Favs: 7
Retweets: 0
link--- layout: tweet ---
Every time we start an audiobook from Amazon and it says "This is Audible," Cora replies "Yes it is." #dadjoke #winning
4/14/2017, 10:06:31 PM
Favs: 7
Retweets: 0
link


Home
<#if isAdmin>
Admin panel
#if>
Log out
Projects
<#list projects>
<#items as project>
${project?counter}
${project.title}
#items>
#list>


Your Shopping Bag
Size
QTY
Price
Need help or have questions?
Call Customer service at XXXXXXXXXXX
Chat with one of our stylists
See return and exchange policy
Enter promotional Code or Gift card
Apply
subtotal
Promotion code XXX applied
Estimated Shipping*
You qualify for free shopping because your order is over
$
50
FREE
Estimated Total
Continue Shoping
Check Out


Markdown formatted content
# Some Other Header 1 ## Some Other Header 2 Some _other_ __markdown__ ___content___. And a list numbered list: 1. one 2. two 3. three 7. four


EZ Statistics is a web tool with the goal of making statistical testing easy. It supports a range of the most commonly used parametric and non-parametric tests.
Library version:
What do you want to do?
- Check if there is a difference between the means of samples
There are several tests and which one to use depends on the properties of your data and the setup of your study:
- Independent or paired samples:
This depends on the setup of your study. Consider an example where you want to know if a Volvo is as comfortable as an Audi. You have 40 participants in your study. The independent approach is if you let 20 participants test the Volvo and fill in a questionnaire, and the other 20 participants test the Audi and fill in a questionnaire. The paired (dependent) approach is if all 40 participants first test the Volvo and fill in a questionnaire, then test the Audi and fill in a questionnaire. Another example of a dependent approach is if you measure the same variable several times (repeated measurements), for example the effect of a treatment is measured every month for a year.
- Equal or unequal variances:
If the variances of the samples differ significantly, you shall use a test for unequal variances. You can check if two samples have equal variances or not using the F-test for equal variances. If you have three or more samples, use the Bartlett's test for equal variances instead.
- Normally or not normally distributed samples:
Generally, parametric tests require that your samples are normally distributed. If one or more sample is not normally distributed, consider using a non-parametric test instead. Note that many parametric tests are fairly robust to not normally distributed samples, so unless the samples are severely non-normal you can still use the parametric tests. You can check if a sample is normally distributed using the Shapiro-Wilk Expanded test.
Use the following tables to find out which test to use:
- Calculate correlation and regression
- Find outliers
- Find outliers using the Generalized Extreme Studentized (ESD) test.
- Find condfidence intervals
- Visualizing distributions


This was fine for parsing, but of course the goal is to generate HTML, so let's just make a quick Node class to represent a DOM node.
Node
say 'hi' say 'hi' say 'hi' say 'hi' say 'hi' say 'hi' say 'hi' say 'hi' say 'hi' say 'hi' say 'hi'


Bar plots, whereas not appropriate for means, are helpful for conveying impressions of frequencies, particularly relative frequencies, ie., proportions.
Intuition: Bar plots and histograms alike can be thought of as piles of Lego pieces, put onto each each other, where each Lego piece represents (is) one observation.
Presenting tables of frequencies are often not insightful to the eye. Bar plots are often much more accessible and present the story more clearly.
In R, using ggplot2
, there are basically two ways of plotting bar plots (as far as I know). First, we can just take a data frame in its raw form and let ggplot2
count the rows so to compute frequencies and map that to the height of the bar. Second, we can do the computation of frequencies ourselves and just give the condensed numbers to ggplot2. Let’s look at each of the two ways in turn.
Way one: Give raw, unprocessed data to ggplot
First, let’s give the raw (unprocessed) data frame to ggplot2
, and let ggplot2
compute frequencies. For example:
data(Affairs, package = "AER") # package must be installed upfron
library(ggplot2)
library(dplyr)
ggplot(Affairs) +
aes(x = rating, fill = factor(affairs)) +
geom_bar(position = "fill")
# Recode: 0 -> "Iron Heart"; else -> "Player"
Affairs$halodrie <- recode(Affairs$affairs, `0` = "Iron Heart", .default = "Heart Breaker")
ggplot(Affairs) +
aes(x = rating, fill = factor(halodrie)) +
geom_bar(position = "fill")
Data comes from Fair (1978): Fair, R.C. (1978). A Theory of Extramarital Affairs. Journal of Political Economy, 86, 45–61.
Some notes. We use fill = ...
to say “put the number of ‘Heart Breakers’ and ‘Iron Hearts’ onto each other”. So the columns for ‘Heart breakers’ and for ‘Iron Hearts’ pile up on each other. Of importance, the position = "fill"
(note the quotation marks) will make “proportion bars”, so the height of the bar goes up to 100%. This is obviously only of use if different colors indicate the relative height (frequencies) of the categories in the bar. Don’t forget to make the filling variable of type factor
, otherwise the filling can go awry.
Also note that you cannot make use of qplot
here, as qplot
does not support the position
parameter (see documentation; qplot
is designed for easy, quick plotting):
qplot(data = Affairs,
x = rating, fill = halodrie, geom = "bar", position = "fill")
## Warning: `position` is deprecated
Way two: Summarise the frequencies upfront, and give the summaries to ggplot
Way two basically consists of doing the computation of the frequencies by oneself and of then giving the frequencies per category/group for plotting. See:
A2 <- count(Affairs, rating, halodrie)
A2 <- group_by(A2, rating)
A2 <- mutate(A2, prop = n / sum(n))
Now we handover A2
, the dataframe consisting of summarized data (frequencies) to qplot
:
qplot(x = rating, y = prop, fill = halodrie, data = A2, geom = "col")
Easy, right? Note that geom col
(as in column) expects single numbers; it does not count rows (as does geom_bar
). In effect, geom_col(...)
is geom_bar(stat = identity, ...)
. As our proportions sum up to 100% we do need need to care to tell about relative height plotting. Works out automatically.
To the contrary, geom_bar
won’t work:
qplot(x = rating, fill = halodrie, data = A2, geom = "bar")
Translating qplot
to ggplot
is easy enough:
ggplot(A2) +
aes(x = rating, y = prop, fill = halodrie) +
geom_col()
Some polishment:
qplot(x = rating, y = prop, fill = halodrie, geom = "col", data = A2) + theme(legend.position = "bottom") + labs(title = "Halodrie-status \nacross different levels of marital satisfaction") +
theme(plot.title = element_text(hjust = 0.5))
Now suppose, we want not showing the proportions, ie., the bars should not have height 100%, but the real count-height. position = "stack"
will accomplish that.
ggplot(A2) +
geom_col(aes(x = rating, y = n, fill = halodrie), position = "stack")
Note that this view makes it more difficult to tell in which column the proportion of “Heart Players” is high(er).
In qplot
:
qplot(data = A2,
x = rating,
y = n,
fill = halodrie,
geom = "col")
Happy plotting!


--- layout: minimal title: "About Us" permalink: /about/index.html description: "Who are we?" ---
No Internet Access is a team of Undergraduates from NITK Surathkal, India.
CTFTime ranks NIA as second in India. \o/
We host ECTF each year. We recently concluded ECTF'15 Teaser event and are gearing up for a bigger and a better ECTF'16 in the coming year.


Welcome To New Vision
BEST COLLECTION
Aliquam purus arcu, congue a gravida ac, facilisis vel erat. Maecenas pretium sem.
MOST UNIQUE IDEA EVER MADE
Aliquam purus arcu, congue a gravida ac, facilisis vel erat. Maecenas. Hover #09F
NEW DESIGN FOR YOUR WEBSITE
Aliquam purus arcu, congue a gravida ac, facilisis vel erat. Maecenas pretium sem at nisl malesuada, quis.
MOST UNIQUE IDEA EVER MADE
Please tell your friends about TemplateMo website. Thank you. Title / Text #666
Template Usage
You can feel free to edit and use New Vision template for your commercial websites. Title color is #333
NEW VISION
New Vision comes with 4 different HTML pages and provided free of charge by TemplateMo. You can add more pages if you need. Text color is #666
DOWNLOAD SITES
Phasellus dui velit, feugiat sed elit ut, facilisis aliquam metus. Ut id bibend. Button color is #C99
Featured Carousel Items


Marine, Scolab founder
« There are tons of websites which present projects, I don’t know where to look anymore »
Stakeholders, coaches, financers of social innovations and academics share this problem.
« There are tons of websites which present projects, I don’t know where to look anymore »
« When I look for projects, I always get the same ones »
« We need to have a precise vision of what’s going on at the local level »
Social Innovations Crossroad is a community of social innovation actors who put in commun their projects to highlight and develop them.
Associations, foundations, communities or citizens offer many new solutions to today’s challenges. Small as well as national projects are highlighted the same way.
Hundreds of websites already collect social innovation projects. We want this information to be more accessible. Community members’ websites are automatically scraped, they don’t have to fill again all the information.
Social Innovations Crossroad’s ambition is to connect project holders and to strengthen relations between coaches, financers of social innovations and academics.
No precise definition at the Social Innovations Crossroad ! Projects accessible in the search engine are capitalized by members of the community as part of their missions. Each of them guarantees the innovative approach of the projects they share.
To better discover, identify and localize social innovation projects in France
Begin a searchWe create a privileged space to get to know and discuss with those who coach, finance and develop social innovations in France.
Discover the members of our communityWe have invested in the conception and development of custom-made applications to scrap, aggregate, consolidate and visualize heterogeneous data.
Discover our toolboxThe search engine and the open-source softwares associated are carried by Social Innovations Crossroad community. Each member participates on an equal manner, the governance being led under the principle of “one member, one voice’’.
The Charter presents the principles, objectives and organisation of Social Innovations Crossroad’s community.
Download the Charter


CoronaVirus Tracker
Home
Tabular country data
Country stats
Get Stats by Country
Show
Total Cases:
Total Deaths:
Total Recovered:
Back


--- layout: post title: The Ultimate Guide to the X-Men Online ??? Clicker Blog categories: [] tags: [] status: publish type: post published: true meta: _original_post_id: '' _original_import_author: John Duprey author: ---
I never read the comic books but have enjoyed the cartoons and movies. http://www.clicker.com/blog/the-ultimate-guide-to-the-x-men-online-10551.html
Sent from my iPhone


{% extends "open_choice_polls/base.html" %}
{% load i18n humanize %}
{% block title %}
{# Translators: Title on Main Page #}
{% trans "List Vote" as title %}
{{ title }}
{% endblock %}
{% block content %}
{% for question in questions %}
{% if not forloop.first %}
{% endif %}
{% include "open_choice_polls/question_snippet_top.html" with question=question %}
{% include "open_choice_polls/question_snippet_phases.html" with question=question %}
{% empty %}


import Step from './step';
import Overlay from './overlay';
const Promise = require('es6-promise').Promise;
import Constant from './constants';
const DEFAULT_SCROLL_ANIMATION_DURATION = 500;
class Tutorial {
/**
*
The tutorial configuration is where the steps of a tutorial are specified,
* and also allows customization of the overlay style.
* If optional configuration parameters are not required, the steps property
* array can be passed in directly as the configuration.

*
*
Notes on implementation:

*
The elements defined in each step of a tutorial via
* StepConfiguration.selectors are highlighted using transparent overlays.

*
These elements areare overlaid using one of two strategies:

*

*
Semi-transparent overlay with a transparent section cut out over the
* element

*
Selected elements are cloned and placed above a transparent overlay

*

*
*
#1 is more performant, but issues arise when an element is not rectangularly-
* shaped, or when it has `:before` or `:after`
* pseudo-selectors that insert new DOM elements that protrude out of the
* main element.

*
#2 is slower because of deep CSS style cloning, but it will correctly render
* the entire element in question, regardless of shape or size.

*
However, there are edge cases where Firefox
* will not clone CSS margin attribute of children elements.
* In those cases, the delegate callbacks should be utilized to fix.
* Note however, that #2 is always chosen if multiple selectors are specified in
* StepConfiguration.selectors.

*
* @typedef TutorialConfiguration
* @property {StepConfiguration[]} steps - An array of step configurations (see below).
* Note that this property can be passed as the configuration if the
* optional params below are not used.
* @property {integer} [zIndex=20] - Sets the base z-index value used by this tutorial
* @property {boolean} [shouldOverlay=true] - Setting to false will disable the
* overlay that normally appears over the page and behind the tooltips.
* @property {string} [overlayColor='rgba(255,255,255,0.7)'] - Overlay CSS color
* @property {boolean} [disableCloneInteraction=true] - Setting to false will allow the
* user to interact with the cloned element (eg. click on links)
* @property {Tutorial-onCompleteCallback} [onComplete] - Callback that is called
* once the tutorial has gone through all steps.
* @property {boolean} [useTransparentOverlayStrategy=false] -

* Setting to true will use an implementation that does not rely on
* cloning highlighted elements.

* Note: This value is ignored if multiple selectors are
* specified in StepConfiguration.selectors.

*
useTransparentOverlayStrategy focuses on an element by
* resizing a transparent overlay to match its dimensions and changes the
* borders to be colored to obscure the main UI.

Strategy Details

By default, a tutorial is displayed with a semi-transparent overlay
that hides background content and highlights the selected element(s) for the
current step of the tutorial.

This is achieved by one of two exclusive strategies:

An overlay div with a semi-transparent border but with a transparent center
equal in size to the selected element.

Example: A 50x50 div is the selected element, so the overlay's transparent center
is 50x50, and its semi-transparent border fills the rest of the viewport.

A completely semi-transparent overlay fills the entire viewport, and the
selected element(s) is cloned and placed on top of this overlay, using
z-index.

Both strategies have pros & cons.

1. Clone strategy (default)

Pros: It will correctly render the entire element in question,
regardless of shape or size.

Cons: Slow because of the deep-cloning involved with CSS styling. The more
children elements that exist, the slower each step will take to render.
(This can be improved over time by pre-caching the next step in advance.)
There are also edge cases where Firefox will not clone the
CSS `margin` attribute of children elements.

In those cases, the callbacks Step.beforeCallback and
Step.afterCallback can be used to properly restore the margin.

2. Background overlay with transparent center and semi-transparent border

Pros:: More performant than the clone strategy because styles are not being cloned.

Cons: When an element is not rectangular in shape, or
when it has :before or :after pseudo-selectors
that insert new DOM elements that protrude out of the main element,
the transparent center will either reveal or occlude sections of
the element.

Note: The clone strategy is always chosen if multiple selectors are
specified in StepConfiguration.selectors.
* @property {boolean} [animateTooltips=true] - Enables tooltip bouncing at the
* beginning and end of each step.
* @property {boolean} [animateScrolling=true] -
*
If the next tooltip is not completely within the client bounds, this
* property animates the scrolling of the viewport until the next tooltip
* is centered.

*
If false, the viewport is not scrolled.</p
* @property {integer} [scrollAnimationDuration=500] - Specifies the duration
* of the scroll animation above, in milliseconds.
* Ignored if animateScrolling is false.
* @property {boolean} [allowSteppingBackward=false] - Enables returning to previous steps.
*/
/**
* @constructor
* @param {TutorialConfiguration} config - The configuration for this tutorial
* @param {string} [name] - Name of the tutorial
* @param {ChariotDelegate} [delegate] - An optional delegate that responds to
* lifecycle callbacks
*/
constructor(config, name, delegate) {
this.name = name;
this.delegate = delegate || {};
this.steps = [];
const configType = Object.prototype.toString.call(config);
let stepConfigs, overlayConfig;
if (configType === '[object Array]') {
stepConfigs = config;
overlayConfig = {};
this.animateTooltips = true;
this.animateScrolling = true;
this.scrollAnimationDuration = DEFAULT_SCROLL_ANIMATION_DURATION;
this.allowSteppingBackward = false;
} else if (configType === '[object Object]') {
if (!Array.isArray(config.steps)) {
throw new Error(`steps must be an array.\n${this}`);
}
this.zIndex = config.zIndex;
this.useTransparentOverlayStrategy = config.useTransparentOverlayStrategy;
this.animateTooltips = config.animateTooltips === undefined ? true : config.animateTooltips;
this.animateScrolling = config.animateScrolling === undefined ? true : config.animateScrolling;
this.scrollAnimationDuration = config.scrollAnimationDuration || DEFAULT_SCROLL_ANIMATION_DURATION;
this.allowSteppingBackward = config.allowSteppingBackward;
stepConfigs = config.steps;
overlayConfig = config;
} else {
throw new Error('config must be an object or array');
}
this.overlay = new Overlay(overlayConfig);
stepConfigs.forEach((stepConfig, index) => {
this.steps.push(new Step(stepConfig, index, this, this.overlay, this.delegate));
});
this._prepared = false;
this._isActive = false;
}
/**
* Indicates if this tutorial is currently active.
* return {boolean}
*/
isActive() {
return this._isActive;
}
/**
* Starts the tutorial and marks itself as active.
* @returns {Promise}
*/
start() {
if (this.zIndex !== null) {
Constant.reload({ overlayZIndex: this.zIndex });
}
if (this.steps.length === 0) {
throw new Error(`steps should not be empty.\n${this}`);
return;
}
this._isActive = true;
// render overlay first to avoid willBeingTutorial delay overlay showing up
this.overlay.render();
return Promise.resolve().then(() => {
if (this.delegate.willBeginTutorial) {
return this.delegate.willBeginTutorial(this);
}
}).then(() => {
this.currentStep = this.steps[0];
this.currentStep.render();
}).catch(() => {
this.tearDown();
});
}
/**
* Prepares each step of the tutorial, to speedup rendering.
* @returns {undefined}
*/
prepare() {
if (this._prepared) return;
this.steps.forEach(step => {
step.prepare();
this._prepared = true;
});
}
/**
* Advances to the next step in the tutorial, or ends tutorial if no more
* steps.
*
* @param {integer|Step} [step] - If step is an integer, advances to that
* step. If step is a Step instance, that step
* If no argument is passed in, the current step's index is incremented to
* determine the next step.
* @returns {undefined}
*/
next(step) {
let currentStepIndex = -1;
if (step === undefined || step === null) {
currentStepIndex = this.steps.indexOf(this.currentStep);
if (currentStepIndex < 0) {
throw new Error('step not found');
} else if (currentStepIndex === this.steps.length - 1) {
this.end();
return;
}
}
if (this.currentStep) {
this.currentStep.tearDown();
}
let nextStep;
if (step !== undefined && step !== null) {
if (typeof step === 'number') {
if (step < 0 || step >= this.steps.length) {
throw new Error(`step is outside bounds of steps array (length: ${this.steps.length})`);
}
nextStep = this.steps[step];
} else if (Object.prototype.toString.call(step) === '[object Object]') {
nextStep = step;
} else {
throw new Error('step arg must be number or object');
}
} else {
nextStep = this.steps[currentStepIndex + 1];
}
this.currentStep = nextStep;
nextStep.render();
}
/**
* Returns the one-indexed (human-friendly) step number.
*
* @param {Step} step - The step instance for which we want the index
* @returns {integer} stepNum - The one-indexed step number
*/
stepNum(step) {
if (step === null) return null;
return this.steps.indexOf(step) + 1;
}
/**
* Tears down the internal overlay and tears down each individual step
* Nulls out internal references.
* @returns {undefined}
*/
tearDown() {
this._prepared = false;
this.overlay.tearDown();
this.steps.forEach(step => {
step.tearDown();
});
this.currentStep = null;
}
/**
* Retrieves the Step object at index.
* @returns {Step} step
*/
getStep(index) {
return this.steps[index];
}
/**
* Ends the tutorial by tearing down all the steps (and associated tooltips,
* overlays).
* Also marks itself as inactive.
* @param {boolean} [forced=false] - Indicates whether tutorial was forced to
* end
* @returns {undefined}
*/
end(forced = false) {
// Note: Order matters.
this.tearDown();
return Promise.resolve().then(() => {
if (this.delegate.didFinishTutorial) {
return this.delegate.didFinishTutorial(this, forced);
}
}).then(() => {
this._isActive = false;
});
}
toString() {
return `[Tutorial - active: ${this._isActive}, ` +
`useTransparentOverlayStrategy: ${this.useTransparentOverlayStrategy}, ` +
`steps: ${this.steps}, overlay: ${this.overlay}]`;
}
}
export default Tutorial;


The Window is an empty drawing surface or container. The Window is created by the method Titanium.UI.createWindow. Unlike Views, Windows can be opened and closed and can have special display properties such as fullscreen or modal.
| Name | Description |
|---|---|
| add.html | add a child to the view hierarchy |
| addEventListener.html | add an event listener for the instance to receive view triggered events |
| animate.html | animate the view |
| close.html | close the window |
| fireEvent.html | fire a synthesized event to the views listener |
| hide.html | hide the view |
| open.html | open the window |
| remove.html | remove a previously add view from the view hiearchy |
| removeEventListener.html | remove a previously added event listener |
| show.html | make the view visible |
| toImage.html | return a Blob image of the rendered view |
| Name | Type | Description |
|---|---|---|
| anchorPoint | object | a dictionary with properties x and y to indicate the anchor point value. anchor specifies the position by which animation should occur. center is 0.5, 0.5 |
| backButtonTitle | string | title for the back button. only available in iPhone. this is only valid when the window is a child of a tab. |
| backButtonTitleImage | string | url to an image to show as the back button. only available in iPhone. this is only valid when the window is a child of a tab. |
| backgroundColor | string | the background color of the view |
| backgroundImage | string | the background image url of the view |
| barColor | string | web named color or hex value for the color of the nav bar. only available in iPhone. |
| borderColor | string | the border color of the view |
| borderRadius | float | the border radius of the view |
| borderWidth | float | the border width of the view |
| bottom | float,string | property for the view bottom position. this position is relative to the views parent. can be either a float value or a string of the width. |
| center | object | a dictionary with properties x and y to indicate the center of the views position relative to the parent view |
| fullscreen | boolean | boolean indicates if the window is fullscreen (no device chrome) |
| height | float,string | property for the view height. can be either float value or a string of the width. |
| left | float,string | property for the view left position. this position is relative to the views parent. can be either a float value or a string of the width. |
| leftNavButton | object | view to show in the left nav bar area. only available in iPhone. |
| modal | boolean | boolean to indicate if the window should be opened modal in front of other windows |
| navBarHidden | boolean | boolean to indicate if the nav bar should be hidden. this is only valid when the window is a child of a tab. |
| opacity | float | the opacity from 0.0-1.0 |
| orientationModes | array | array of orientation mode constants defined in [Titanium.UI] |
| right | float,string | property for the view right position. this position is relative to the views parent. can be either a float value or a string of the width. |
| rightNavButton | object | view to show in the right nav bar area. only available in iPhone. |
| size | object | the size of the view as a dictionary of width and height properties |
| tabBarHidden | boolean | boolean to indicate if the tab bar should be hidden. this is only valid when the window is a child of a tab. |
| title | string | title of the window. |
| titleControl | object | view to show in the title area. only available in iPhone. |
| titleImage | string | url to a image that show in the title area. only available in iPhone. |
| titlePrompt | string | title prompt for the window. only available in iPhone. |
| toolbar | array | array of button objects to show in the toolbar of the window. only available in iPhone. this is only valid when the window is a child of a tab. |
| top | float,string | property for the view top position. this position is relative to the views parent. can be either a float value or a string of the width. |
| touchEnabled | boolean | a boolean indicating if the view should receive touch events (true, default) or forward them to peers (false) |
| transform | object | the transformation matrix to apply to the view |
| translucent | boolean | boolean to indicate if the nav bar is translucent. only available in iPhone. |
| url | string | url to a JavaScript file with the windows instructions. this window will create a new JavaScript sub-context that will run in its own thread and global variable space. |
| visible | boolean | a boolean of the visibility of the view |
| width | float,string | property for the view width. can either be `auto`, a float value or a string of the width. |
| zIndex | int | the z index position relative to other sibling views |
| Name | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| blur |
fired when the window loses focus
Event properties
|
||||||||||
| click |
fired when the device detects a click (longer than touch) against the view
Event properties
|
||||||||||
| close |
fired when the window is closed
Event properties
|
||||||||||
| dblclick |
fired when the device detects a double click against the view
Event properties
|
||||||||||
| doubletap |
fired when the device detects a double tap against the view
Event properties
|
||||||||||
| focus |
fired when the window gains focus
Event properties
|
||||||||||
| open |
fired when the window is opened
Event properties
|
||||||||||
| singletap |
fired when the device detects a single tap against the view
Event properties
|
||||||||||
| swipe |
fired when the device detects a swipe (left or right) against the view
Event properties
|
||||||||||
| touchcancel |
fired when a touch event is interrupted by the device. this happens in circumenstances such as an incoming call to allow the UI to clean up state.
Event properties
|
||||||||||
| touchend |
fired when a touch event is completed
Event properties
|
||||||||||
| touchmove |
fired as soon as the device detects a movement of a touch
Event properties
|
||||||||||
| touchstart |
fired as soon as the device detects a gesture
Event properties
|
||||||||||
| twofingertap |
fired when the device detects a two-finger tap against the view
Event properties
|
Create a fullscreen window with a red background.
var window = Titanium.UI.createWindow({
backgroundColor:'red'
});
window.open({fullscreen:true});
Windows can be loaded from another Javascript file by specifying the property url and reference a file relative to your application Resources folder. It's important to note that Titanium will refuse to load Javascript files from a remote URL. Loading remote Javascript from a URL and providing it with the full capabilities of the Titanium API would be very dangerous.
When you Window is loaded from a separate Javascript file, the code will be executed in a separate Javascript context (called a "sub-context") than your app.js global context. It will also execute in its own separate thread.
The special property Titanium.UI.currentWindow is available inside a sub-context that points to the Javascript instance by reference in the global context.
By default, sub-context variables cannot access Javascript references in the global context. However, the global context can allow its sub-contexts the ability to have access to properties and functions in the global context by reference assignment. An example best illustrates how to do this.
In app.js, you could define a function and a property.
var a = 1; function b() { return "hello"; }
Now, you can create a new Window - let's call it foo.js - in your app.js.
var w = Titanium.UI.createWindow({ url:'foo.js' });
To give your new window access to both a and b, you would need to assign them to the new window reference w.
w.a = a; w.b = b;
Of course, you could give them a different name than their original names. However, what name you give them in your app.js is how you will reference them in foo.js. Now, let's look at the code for foo.js.
alert("b() = "+Titanium.UI.currentWindow.b());
In the above code, the foo.js will execute the function b in the global context and return the result. Since b is a reference (vs. a copy by value), any changes made to these Javascript references will be immediately available in all sub-contexts.
If you'd like to send events to a window from the global context and vice versa, you could use the built-in event mechanism. For example, you could define a custom event called foo. The window could listen for this event and then respond with some action. For example, in your sub-context you might define:
Titanium.UI.currentWindow.addEventListener('foo',function(e) { Titanium.API.info("foo event received = "+JSON.stringify(e)); });
You could now fire the event from app.js like this:
var window = Titanium.UI.createWindow({ url:'bar.js' }); window.open(); window.fireEvent('foo',{a:'b'});
It's worth noting two important limitations of the example above:
Windows can be animated like any normal View. To transition between 2 windows, you can use the transition property on an animation. For example, to flip right-to-left between two windows, you could do the following:
var window2 = Titanium.UI.createWindow({url:'foo.js'}); var t = Ti.UI.iPhone.AnimationStyle.FLIP_FROM_LEFT; window1.animate({view:window2,transition:t});
In the above example, the window2 view will be animated from the right-to-left over window1.
Windows can be opened or closed with animation. In the example below, we create a window that will open from small to large with a bounce effect. This is done by applying a transformation at initialization time that scales the original size of the window to 0. When the window is opened, a new 2D transformation is applied that will scale the window size from 0 to 110% of it's original size and then, after 1/20th of a second, will scale it back to it's original size at 100%. This gives the bounce effect during animation.
var t = Titanium.UI.create2DMatrix().scale(0); // create a window with the initial transform scaled to 0 var w = Titanium.UI.createWindow({ backgroundColor:'#336699', borderWidth:8, borderColor:'#999', height:400, width:300, borderRadius:10, opacity:0.92, transform:t }); // create first transform to go beyond normal size var t1 = Titanium.UI.create2DMatrix().scale(1.1); var a = Titanium.UI.createAnimation(); a.transform = t1; a.duration = 200; // when this animation completes, scale to normal size a.addEventListener('complete', function() { // we can use the identity transform to take it back to it's real size var t2 = Titanium.UI.create2DMatrix(); w.animate({transform:t2, duration:200}); });


Get started
Basic setup example
HTML
The HTML set up is pretty easy. Just create a div that will hold your canvas and a div that will hold your images.

CSS
The CSS is also very easy. Make sure the div that will wrap the canvas fits the document, and apply any size you want to your plane div element.
body {
/* make the body fits our viewport */
position: relative;
width: 100%;
height: 100vh;
margin: 0;
overflow: hidden;
}
#canvas {
/* make the canvas wrapper fits the document */
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.plane {
/* define the size of your plane */
width: 80%;
height: 80vh;
margin: 10vh auto;
}
.plane img {
/* hide the img element */
display: none;
}
Javascript
There's a bit more work in the javascript part : we need to instanciate our WebGL context, create a plane with basic uniforms parameters and use it.
window.onload = function() {
// get our canvas wrapper
var canvasContainer = document.getElementById("canvas");
// set up our WebGL context and append the canvas to our wrapper
var webGLCurtain = new Curtains("canvas");
// get our plane element
var planeElement = document.getElementsByClassName("plane")[0];
// set our initial parameters (basic uniforms)
var params = {
vertexShaderID: "plane-vs", // our vertex shader ID
fragmentShaderID: "plane-fs", // our framgent shader ID
uniforms: {
time: {
name: "uTime", // uniform name that will be passed to our shaders
type: "1f", // this means our uniform is a float
value: 0,
},
}
}
// create our plane mesh
var plane = webGLCurtain.addPlane(planeElement, params);
// use the onRender method of our plane fired at each requestAnimationFrame call
plane.onRender(function() {
plane.uniforms.time.value++; // update our time uniform value
});
}
Shaders
Here are some basic vertex and fragment shaders. Just put it inside your body tag, right before you include the library.

Et voilà !
Images uniform sampler names
Let's say you want to build a slideshow with 3 images and a displacement image to create a nice transition effect.
By default, the textures uniforms sampler will be named upon their indexes inside your plane element. If you got something like that :

Then, in your shaders, your textures samplers would have to be declared that way :
uniform sampler2D uSampler0 // bound to displacement.jpg
uniform sampler2D uSampler1 // bound to my-image-1.jpg
uniform sampler2D uSampler2 // bound to my-image-2.jpg
uniform sampler2D uSampler3 // bound to my-image-3.jpg
It is handy but you could also get easily confused.
By using a data-sampler attribute on the  tag, you could specify a custom uniform sampler name to use in your shader. With the example above, this would become :

uniform sampler2D uDisplacement // bound to displacement.jpg
uniform sampler2D uSlide1 // bound to my-image-1.jpg
uniform sampler2D uSlide2 // bound to my-image-2.jpg
uniform sampler2D uLastSlide // bound to my-image-3.jpg
Using videos as textures
Yes, videos as textures are supported ! However there are a few downsides you need to know.
First, the videos will always fit the plane : your plane's size ratio would have to be the same as your videos so they won't appear distorted (you can handle that with CSS).
We can't autoplay videos without a user gesture on most mobile devices. Unless you don't care about mobile users, you will have to start the videos playback after a user interaction like a click event.
Besides that, videos are really easy to use (and can be mixed with images as well). Let's see how we can handle them :
HTML

<video src="path/to/my-video.mp4"></video>

Like with images, you can use a data-sampler attribute to set a uniform sampler name. You can use one or more videos, or mixed them with images if you want :

<video src="path/to/my-video-1.mp4" data-sampler="firstVideo"></video>
<video src="path/to/my-video-2.mp4" data-sampler="secondVideo"></video>

Javascript
There's only one change inside our javascript : we need to tell our plane when to start playing the videos. We've got a playVideos() method that we will put inside an event listener in our onReady() method :
window.onload = function() {
// get our canvas wrapper
var canvasContainer = document.getElementById("canvas");
// set up our WebGL context and append the canvas to our wrapper
var webGLCurtain = new Curtains("canvas");
// get our plane element
var planeElement = document.getElementsByClassName("plane")[0];
// set our initial parameters (basic uniforms)
var params = {
vertexShaderID: "plane-vs", // our vertex shader ID
fragmentShaderID: "plane-fs", // our framgent shader ID
uniforms: {
time: {
name: "uTime", // uniform name that will be passed to our shaders
type: "1f", // this means our uniform is a float
value: 0,
},
}
}
// create our plane mesh
var plane = webGLCurtain.addPlane(planeElement, params);
plane.onReady(function() {
// set an event listener to start our playback
document.getElementbyId("start-playing").addEventListener("click", function() {
plane.playVideos();
});
}).onRender(function() {
// use the onRender method of our plane fired at each requestAnimationFrame call
plane.uniforms.time.value++; // update our time uniform value
});
}
And that's it. Check the video examples (and source codes) if you want to see what's possible.
Using canvas as texture
Last but not least, you can use a canvas as a texture. It is once again really easy to use.
HTML

<canvas id="canvas-texture"></canvas>

You can use multiple canvases and data-sampler attributes as well, like you'd do with images or videos.
Javascript
The javascript code remains almost the same. We just set the size of our canvas, get its context and draw a simple rotating red rectangle inside our animation loop.
window.onload = function() {
// get our canvas wrapper
var canvasContainer = document.getElementById("canvas");
// set up our WebGL context and append the canvas to our wrapper
var webGLCurtain = new Curtains("canvas");
// get our plane element
var planeElement = document.getElementsByClassName("plane")[0];
// set our initial parameters (basic uniforms)
var params = {
vertexShaderID: "plane-vs", // our vertex shader ID
fragmentShaderID: "plane-fs", // our framgent shader ID
uniforms: {
time: {
name: "uTime", // uniform name that will be passed to our shaders
type: "1f", // this means our uniform is a float
value: 0,
},
}
}
// create our plane mesh
var plane = webGLCurtain.addPlane(planeElement, params);
// our texture canvas
var textureCanvas = document.getElementById("canvas-texture");
var textureCanvasContext = textureCanvas.getContext("2d");
// set the size of our canvas
textureCanvas.width = planeElements[0].clientWidth;
textureCanvas.height = planeElements[0].clientHeight;
// use the onRender method of our plane fired at each requestAnimationFrame call
plane.onRender(function() {
plane.uniforms.time.value++; // update our time uniform value
// here we will handle our canvas texture animation
// clear scene
textureCanvasContext.clearRect(0, 0, textureCanvas.width, textureCanvas.height);
// continuously rotate the canvas
textureCanvasContext.translate(textureCanvas.width / 2, textureCanvas.height / 2);
textureCanvasContext.rotate(Math.PI / 360);
textureCanvasContext.translate(-textureCanvas.width / 2, -textureCanvas.height / 2);
// draw a red rectangle
textureCanvasContext.fillStyle = "#ff0000";
textureCanvasContext.fillRect(textureCanvas.width / 2 - textureCanvas.width / 8, textureCanvas.height / 2 - textureCanvas.height / 8, textureCanvas.width / 4, textureCanvas.height / 4);
});
}
Canvas height, perspective and performance
The canvas size will directly impact the global perspective and performance.
The perspective is calculated based on each plane position inside the canvas as well as the canvas width and height. The center of the field of view will be located at the center of your canvas, which means that with tall or wide canvas you might end with exagerated perspectives.
Also keep in mind that a wide or tall canvas will pretty much impact performance (thanks to Colin Peyrat for pointing that out).
There's a way to avoid these annoyances: set your canvas to fit the window size instead of the document size, and set the position of each plane based on the scroll inside your render loop. Check the canvas size, performance and perspective example if you want to see the differences.
Other performance tips
- Plane's videos and canvases textures are updated at each frame, which has a significant impact on performance. When those textures are not visible (if they are hidden by another texture, or if the plane is not visible in the viewport...), you should set those videos or canvases shouldUpdate property to false, and switch it back to true before displaying them.
- Be careful with each plane definition.  If you plan to use more than one plane, try to reduce the number of vertices.
  It goes the same for videos of course: try to keep them as light as possible.
- Try to use as less javascript as possible in the onRender() planes methods as this get executed at each draw call. Try not to use too many uniforms as they are updated at every draw call as well.
- If you use multiple planes with multiple textures, you should set the dimensions of your plane to fit the aspect ratio of your images in CSS (you could use the padding-bottom hack, see the multiple planes example HTML & CSS) and set the imageCover plane property to false when adding it.
Useful examples
Check their source code :
Images
Vertex coordinates helper
Simple plane
Multiple textures with a displacement shader
Multiple planes
Asynchronous textures loading
AJAX navigation
AJAX navigation with plane removal
Canvas size, performance and perspective
Videos
Simple video plane
Multiple video textures with a displacement shader


Learn More About Me
I enjoy writing code that is clean and efficient!
Skills include:
YPlease get in touch if you'd like a chat, I can be contacted on jonathanemail[@] protonmail[.]com, or click here.


Your web browser must have JavaScript enabled in order for this application to display correctly.
Landing Page
Integration Scenarios
TopMenuBar Example
1. TopMenuBar above a Bootstrap Navbar.
2. Applauncher within a Bootstrap Navbar.
3. Navitems within Topmenubar.
3.1. Navitems with Dropdown Menu within Topmenubar.
3.2. Navitems with Dropdown Menu within light-colored Topmenubar.
3.3. Navitems with Dropdown Menu within own colorful Topmenubar.
3.4. Navitems with Dropdown Menu within colorful Topmenubar and tests new bootstrap from interseroh.
3.5. Bootswatch example with interseroh bootstrap theme.


---
layout: post
title: 10 Community College Tips
date: 2012-09-12 17:17:58.000000000 -07:00
type: post
parent_id: '0'
published: true
pd: ''
status: publish
categories:
- Classroom Talk
- College Prep
- Guest Posts
tags:
- College Prep
- Community College
author:
login: k
email: k@k
display_name: mcary
first_name: ''
last_name: ''
---
Guest Post By Ken Myers
Community college is a great idea for students who
are just setting out, are on a budget, or returning to school.
Community colleges are usually much cheaper than traditional private and even state
schools. They also offer convenient locations, better class hours, and
education that equal that of any other college. In fact, I recommend that all
recent high school grads attend community college for their first two years of
school. Not only will they save money and avoid racking up huge student loans,
but they can also get a great education close to home. To make your community
college experience successful, s=however, you may need to know these few tricks
that I have picked up in my studies. These tips can apply to any college experience,
but I have found that there are some unique issues that occur only in community
colleges.
- Enroll early – Community college classes
get filled up fast. Because there are so many students and the classes are
affordable and at convenient times, they tend to get full very early. If you do
not want to take classes that are late at night or very early in the morning,
then I suggest enrolling early. I like to enroll as soon as the classes open so
I can be sure to get the ones I need.
- Pay attention to class schedules –
Speaking of getting the classes you need, sometimes classes are only available
in certain semesters. Pay attention and talk to an adviser when setting up your
schedule. I would hate for you to have to wait a whole year for one class
because you missed your opportunity.
- Get the paperwork done before - It is
very important to get all your paperwork done long before your classes ever
start. Colleges are notoriously slow at getting transcripts, test scores, and
financial aid verification done. Community colleges are even worse. It is your
responsibility to make sure everything is complete before you try to sign up
for classes.
- Check twice –When you think you have
everything done, check again. Wait until about a week before the semester is
about to start and go in and talk to EVERYONE. Financial aid, advisors, the
billing office, even print out your course schedule one more time. So much can
go wrong at the last minute and make you miss out. Do not let that happen and
check far enough ahead that you can fix the problem before it becomes
insurmountable.
- Get to know the staff –A lot of times
when you have issues you will run into unhelpful or unknowledgeable staff
members. Most are students just like you who have only been trained in the
basics. Do not let this slow you down. Get to know who is in charge, by name
and face, and request to talk to them when you have issues. You can even get
their direct phone line or email address for questions. Most of the senior
staff is very helpful and knowledgeable once you get to them, but getting to
them is the problem. When the office is not busy, that is your time to make
lasting and helpful connections. It will definitely pay off for you in the long
run.
- Look elsewhere for books –Do not be
suckered into paying high prices for your text books. Sometimes you have no
choice, like in online or pd necessary books, but most of the time you
can buy your books used for half the price! Look online or at the local college
bookstore alternative. They are usually located very close to campus and offer
great deals without the shipping charges or wait time. They even have new books
cheaper than the on-campus book store. Do not waste your money, shop smart!
- Easier to drop than add –If you are
unsure of how many hours you want to take the next semester, or even which
classes, you should always sign up for them anyway. It is much, much easier to
drop classes than it is to add them. Not only that, but once classes get full
you are out of luck. Be smart and sign up early. I’m not saying to be a class
hog and go overboard, but be wise in your choices and always assume that if you
do not act now, you will not have a chance to later.
- Do not worry about your major –Community
college is not the place to worry about your major. If you plan on continuing
on to a four year school, then you do not really have to worry about it. Of
course, you might want to choose between the art route and the science route,
but beyond that just take it easy. Everything is pretty much standard.
- Think about other campuses –If the class
you need is not available at your campus, think about looking elsewhere.
Oftentimes a community college, especially in large cities, has more than one
campus. A class may be offered there that is not offered at your home campus.
You can always drive a bit for a semester and get the class you really want or
need. As long as you are enrolled in one branch, all the other campuses should
have no problem taking you on too.
- Go
online –Due to the wonders of technology, many community classes are now
offering hybrid or online classes. Not only are they cheaper than typical
college classes, they also offer you the opportunity to get them done on your
own time and with your own learning style. Hybrid classes have you come in to
the classroom just a few times to answer questions and things and then do the
rest online. Whatever the case, online classes save you time and the drive to
campus.
Community college is a great way to get your
education started. Whether you are a first time student, a recent grad, or a
retuning adult; the education provided by community colleges is top notch and
much more affordable. Following these simple tips, you can have a successful
and fun education experience.
Author Byline:
Ken Meyers the editor in chief is a frequent contributor of http://www.gonannies.com/ Ken helps acquiring knowledge on
the duties & responsibilities of nannies to society. You can reach him at k.meyerst20 ATk .


A NSNotification object that makes retrieving internal SDLRPCRequest data easier
The request to be included in the userinfo dictionary
@property (nonatomic, copy, readonly) __kindof SDLRPCRequest *_Nonnull request;
@NSCopying var request: SDLRPCRequest { get }
Create an NSNotification object containing an SDLRPCRequest
- (nonnull instancetype)initWithName:(nonnull NSString *)name
object:(nullable id)object
rpcRequest:(nonnull __kindof SDLRPCRequest *)request;
init(name: String, object: Any?, rpcRequest request: SDLRPCRequest)
The NSNotification name
The NSNotification object
The SDLRPCRequest payload
The NSNotification
Returns whether or not the containing request is equal to a class, not including subclasses.
- (BOOL)isRequestMemberOfClass:(nonnull Class)aClass;
func isRequestMember(of aClass: AnyClass) -> Bool
the class you are questioning
Returns whether or not the containing request is a kind of class, including subclasses.
- (BOOL)isRequestKindOfClass:(nonnull Class)aClass;
func isRequestKind(of aClass: AnyClass) -> Bool
the class you are questioning


(nation started Mmm d, yyyy)
| Factor | Rate | Absolute |
|---|---|---|
| Birth Rate | ||
| Death Rate | ||
| Natural Growth Rate | ||
| Immigration Rate | ||
| Emmigration Rate | ||
| Net Immigration Rate | ||
| Net Population Growth Rate |
| Factor | Rate | Absolute |
|---|---|---|
| Hunting/Gatherting | ||
| Farming | ||
| Consumption | ||
| Net Food Production | ||
| Imports | ||
| Exports | ||
| Net Food Trade | ||
| Net Food Growth |
| Factor | Rate | Absolute |
|---|---|---|
| Prospecting | ||
| Purchased | ||
| Sold | ||
| Diplomatic Territory Gains | ||
| Territory Claimed | ||
| Territory Lost | ||
| Military Territory Gains | ||
| Net Territory Growth |


|
x = x coordinate of pixel
y = y coordinate of pixel |
| This command works like a 'color picker' in your favorite paint program. By specifying |
|
; GetColor Example
Graphics 320,200 SetBuffer BackBuffer() For t = 1 To 1000 Color Rnd(255), Rnd(255), Rnd(255) Rect Rnd(320),Rnd(200),10,10,1 Next GetColor 100,100 Print "Box at 100,100 is RGB:" + ColorRed() + "," + ColorGreen() + "," + ColorBlue() + "!" Flip While Not KeyHit(1) Wend |


ScaleoutSession
from the
configured NamedCache with the parameter session id.ScaleoutSession
with that ID exists.ScaleoutSession
.ScaleoutSession
.EnableScaleoutHttpSession
annotation.Session
implementation that can be stored in ScaleOut StateServer.SessionRepository
implementation that is backed by ScaleOut StateServer's
NamedCache API.


Teach Lessons
If not signed in -> example or ad why you should list yourself on this site and link to make an account. Otherwise
YOUR NAME
[pyyython edit button if signed in]
picture
Instrument: up to 2 on free account
Style: up to 2 on free account
Availability: manditory but can have "call or text" for availability
Price: manditory but can have "call or text" for prices
Link to band page if in a band
Ads n shit down here
Super minimal ads for GuitarCenter or something.


Gestures
Show the gestures. There are four gesture the swipe, cycle, key tap and screen tap.
Target:
Swipe
Circle
Key tap
Screen tap


- 1 Good or Bad Logging
- 2 Never log too much
- 3 Never log too little
- 4 Good things to log
- 5 Bad things to log
- 6 More Than One Logging Level
- 7 More Than One Logging Category
- 8 Use Unique Identifiers
- 9 Log Timing Infos
- 10 Use Log Queue
- 11 Always Improve Logging
1 Good or Bad Logging
How long does it take to find the root cause of a failure in your system?
- tens of minutes
- it’s very likely that your production system and tests have great logging
- tens of hours
- it’s very likely that your production system and tests have poor logging
2 Never log too much
If you log too much, you’ll need to:
- devise complex approaches to minimize disk access,
- maintain log history, archive large quantities of data,
- query these large sets of data.
- make it very difficult to find valuable information.
3 Never log too little
normally two main goals of logging:
- help with bug investigation
- and event confirmation.
If your log can’t explain the cause of a bug or whether a certain transaction took place,
you are logging too little.
4 Good things to log
- Important startup configuration
- Errors
- Warnings
- Changes to persistent data
- Requests and responses between major system components
- Significant state changes
- User interactions
- Calls with a known risk of failure
- Waits on conditions that could take measurable time to satisfy
- Periodic progress during long-running tasks
- Significant branch points of logic and conditions that led to the branch
- Summaries of processing steps or events from high level functions.
Avoid logging every step of a complex process in low-level functions.
5 Bad things to log
- Function entry.
- Don’t log a function entry unless it is significant or logged at the debug level.
- Data within a loop.
- Avoid logging from many iterations of a loop.
- It is OK to log from iterations of small loops or to log periodically from large loops.
- Content of large messages or files.
- Truncate or summarize the data in some way that will be useful to debugging.
- Benign errors.
- Errors that are not really errors can confuse the log reader.
- This sometimes happens when exception handling is part of successful execution flow.
- Repetitive errors.
- Do not repetitively log the same or similar error.
- This can quickly fill a log and hide the actual cause.
- Frequency of error types is best handled by monitoring.
- Logs only need to capture detail for some of those errors.
- Useless infos.
6 More Than One Logging Level
- You can enable certain levels at system startup, which provides a convenient control for log verbosity.
- Practically speaking, only two log configurations are needed:
- Production
- Every level is enabled except debug.
- If something goes wrong in production, the logs should reveal the cause.
- Development & Debug
- While developing new code or trying to reproduce a production issue, enable all levels.
- Production
- The classic levels are:
- Debug
- verbose and only useful while developing and/or debugging.
- Info
- the most popular level.
- should be helpful to locate warn,error and critical msg.
- usually should be <= 10% of debug or trace logs.
- eg. subsystem initializations or a request succeeds.
- Warning
- strange or unexpected states that are acceptable.
- but if not solved, it may become normal or critical error
- eg. disk usage exceeding throuds.
- Error
- something went wrong, but the process can recover.
- Critical
- the process cannot recover, and it will shutdown or restart.
- Usually, the process logs only one critical msg once shutdown or restart.
- Debug
critical and error msgs are generated when application itself goes wrong
and problems need to be fixed by external forces like developer or system admin.
the process actually died if critical msg happens while the process is still alive
but cannot provide service if error msg happens.
7 More Than One Logging Category
The classic categories are (based on functionality):
- Diagnostic log
- network request entry and exit
- external service invocation and return
- resource operation: open file handler
- error-tolerant operation
- program error: fail to connect to db
- background operation: resource clean up
- startup and close process and load configures
- do not log when exception thrown
- Statistical log
- user visits
- billing log
- resource log: network or disk usage
- Monitoring log
- administration operation
Statistical log and Diagnostic log complement each other
- Statistical log shows the symptoms of problems and Diagnostic
- log shows details and state on individual transactions.
For each log type above (request entry and exit and so on),
they should:
- write into different log files
- log different msgs with different formats
8 Use Unique Identifiers
create unique identifiers for transactions that involve processing across
many threads and/or processes to makes it much easier to trace a specific
transaction when many transactions are being processed concurrently.
- initiator of the transaction should create the ID
- initiator passes id to every component that performs work for the transaction
- the id is logged by each component when logging information about the transaction
9 Log Timing Infos
Logged timing data can help debug performance issues
- eg. determine the cause of a timeout in a large system
Logging the start and finish times of calls that can take measurable time:
- Significant system calls
- Network requests
- CPU intensive operations
- Connected device interactions
- Transactions
10 Use Log Queue
- When errors occur, the log should contain a lot of detail.
- Unfortunately, detail that led to an error is often unavailable once the error is encountered
- A good way to solve this problem is to create temporary, in-memory log queues.
- Throughout processing of a transaction, append verbose details about each step to the queue.
- If the transaction completes successfully, discard the queue and log a summary.
- If an error is encountered, log the content of the entire queue and the error.
- This technique is especially useful for test logging of system interactions.
- An open-source implementation of log queue from GitHub
11 Always Improve Logging
When problems occur, before fixing the problem:
- fix your logging so that the logs clearly show the cause.
- in development env
- while writing new code, try to refrain from using
debuggers and only use the logs. - Do the logs describe what is going on? If not,the logging is insufficient.
- while writing new code, try to refrain from using
- in production env
- if you cannot reproduce the problem, or you have a flaky test,
enhance the logs so that the problem can be tracked down when it happens again.
- if you cannot reproduce the problem, or you have a flaky test,
- in development env
- If this problem ever happens again, it’ll be much easier to identify.


@** * Yobi, Project Hosting SW * * Copyright 2013 NAVER Corp. * http://yobi.io * * @Author Jihan Kim * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **@ @(title:String, newProjectForm:Form[Project], orgUserList:List[OrganizationUser]) @import utils.TemplateHelper._ @import playRepository.RepositoryService @import models.Organization @siteLayout(title, utils.MenuType.NEW_PROJECT){


Review: Red Corner (1997) Rating: 2.5 stars (out of 4.0) ******************************** Key to rating system: 2.0 stars Debatable 2.5 stars Some people may like it 3.0 stars I liked it 3.5 stars I am biased in favor of the movie 4.0 stars I felt the movie's impact personally or it stood out ********************************* A Movie Review by David Sunga
Directed by: Jon Avnet
Written by: Robert King
Starring: Richard Gere, Bai Ling, Byron Mann, Jessey Meng
Ingredients: Beijing court, innocent Caucasian man, loyal female attorney
Synopsis: Caucasian Jack Moore (Richard Gere) is at the People's Republic of China to close a business deal with a high ranking Chinese partner involving allowing American TV into the PRC; Jack is just about to close the deal. That night he meets hot babe Hong Ling (Jessey Meng) and they go back to his hotel room to get lucky. He is suddenly awakened by the police the next morning, apparently framed for the murder of the beautiful woman.
With the exception of one escape attempt, the rest of the movie is mostly spent in the courtroom, listening to translated Chinese, where clues and surprise witnesses come up. Moore is aided by a female attorney (Bai Ling) who initially doesn't believe Moore but becomes his loyal ally. Sometimes Moore reads off quotes from a Chinese law book. Will their teamwork be enough to enable Moore to escape the messed up criminal justice system?
Opinion: Red Corner doesn't contain much in the way of plot or suspense: a jailed man waits a long time as a lot of evidence is presented.  But the ending is happy.
Says Director Jon Avnet, quoted on MGM/UA's ‘Red Corner' Web Site: "When I was in Beijing for a research trip and tried to take a still photograph of the Beijing Intermediate Courthouse, I was accosted by two soldiers with automatic weapons and persuaded not to continue my photography."
"We shot Bai Ling riding a bicycle in Tiananmen Square at considerable risk to her."
"There were people we met in Beijing who cared enough that we tell this story accurately, that they were willing to risk retribution to give us this information."
Historical Background of China and the Movies: Coincidentally or not, ‘Red Corner' opens as the real life presidential summit between Chinese President Jiang and American President Bill Clinton takes place in America. China is predicted by many to become the world's largest economy next century, and this week's presidential summit represents a warming of Sino-US ties.
The People's Republic of China contains approximately one fifth of all the humans in the world. It became communist in 1949, after a civil war. Meanwhile the defeated non-communist Chinese left the mainland and exiled themselves to Taiwan to form their own government. Communist China is now called the PRC (People's republic of China) while the island of Taiwan prefers to call itself ROC (The Republic of China on Taiwan) because it is controlled by its own separate government. The Eisenhower administration in 1954 signed the U.S.-ROC Mutual Defense Treaty which commits the US to protect Taiwan, ROC from communist aggression.
Meanwhile, at China's western border China's military invasion of Tibet occurred in 1950 resulting in the 1951 annexation of Tibet to China. A Tibetan uprising in 1959 resulted in the Tibetan leader, the Dalai Lama fleeing to exile to India.
The relationship between the US and China began to thaw when President Richard Nixon visited China in 1972. US and China signed the Shanghai Communique, in which the U.S. drops political support for Taiwan and "acknowledges that … there is but one China and that Taiwan is a part of China." In 1978 Chinese leader Deng paved the way for capitalism to exist in communist China; he placed profit incentives and economic progress above traditional Maoist goals, visiting America in 1979. Soon business put China back on the map; Mr. Deng's policies resulted in today's high economic growth rate.
China's relationship with the States soured after the July 4, 1989 Tiananmen Square incident. Then in 1995 President Clinton's decision to grant a visa to Taiwan President Lee enraged leaders of the PRC. This was followed by the 1996 Taiwan Missile Crisis, where China held war exercises and lobbed missiles around the waters surrounding Taiwan about the same time as Taiwan's first democratic presidential elections - - and the US responded by sending two aircraft carriers to the region. This occurred against the backdrop of increasing trade relations between the US and China.
This week's presidential summit between Jiang and Clinton represents an upswing in Sino-US ties and further travel up the long road to better communication.
A Warming Trend: In terms of 1997 film, look for an increasing trend of China related film this year and next year. ‘Red Corner' actress Bai Ling, is a star in her native China, and ‘Red Corner' is her first starring role in an American motion picture. Taiwanese director Ang Lee (‘The Ice Storm') and Hong Kong director John Woo (‘Face/Off') are notable examples of Chinese directors active in mainstream Hollywood cinema, but their movies this year do not deal with China themes. However, movies by other directors do: for example, two movies on Tibet (‘Seven Years in Tibet,' and ‘Kundun') and one James Bond movie with a Chinese female partner (‘Tomorrow Never Dies,' North American release date December 19) are scheduled for North American release before this year ends. Acclaimed Hong Kong fan favorite actor Chow Yun-Fat star in what I believe to be his first major Hollywood film alongside Mira Sorvino in next year's (February 1998 release date) Hollywood action thriller, ‘The Replacement Killers.'
Reviewed by David Sunga October 31, 1997
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Covid is communicable disease which outburst in Wuhan, China and acquired all reigns of the world, demolishing the humankind and converted into a pandemic.
How you manage to be safe is our priority.Learn about Covid-19 Precautions.
You cross the gate, Corona will knock you down.
Wash your hands regularly with soap or clean with alcohol-based hand rub.
Don’t touch your eyes, nose or mouth.

Always wear mask and security gears when you go outside or met with covid infected patient.
Maintain at least 1m distance between you and others.
Stay home if you feel unwell. If you have a fever, cough and difficulty breathing, seek medical attention. Call in advance.
They are out at their work so that we can stay at our home safely. We request you to take take this Pledge
They are out at their work so that we can stay at our home safely. We request you to take take this Pledge
They are out at their work so that we can stay at our home safely. We request you to take take this Pledge


{% extends "global/Page.html" %} {% load otree %} {% block title %} Story 3 {% endblock %} {% block content %} Please read the following story:
A few feet deeper into the forest, the crime scene unit found two black sneakers, a dark shirt, and a pair of black pants. The clothes' tattered condition suggested that they, like the skull and loose bones, had been removed from the body by scavengers. {{story_p1}}. {{story_p2}}.
{% formfields%}
{% next_button %} {{ form.errors }} {% endblock %}


Magni minus dolore. Id dolorum quod maiores aut omnis voluptatum quisquam facere. Provident et tempora. Consequatur nisi ducimus in consequatur ea in debitis quasi. Aut impedit nobis corporis totam aut. Deleniti quia iusto neque quia consequatur unde doloribus dicta.
Qui expedita laudantium ea delectus saepe officiis. Dolores voluptatibus laudantium explicabo ipsam sit aliquam molestiae. In aut quis qui possimus. Distinctio consequatur blanditiis voluptatem accusantium cumque sit animi et.
What we have to keep in mind is that clear determination of objectives positively affects the correct forecast.
What we have to keep in mind is that the clear determination of the objectives Affects positively the correct prediction of conditions undeniably
What we have to keep in mind is that clear determination of objectives positively affects the correct forecast.
What we have to keep in mind is that clear determination of objectives positively affects the correct forecast.
What we have to keep in mind is that the clear determination of the objectives Affects positively the correct prediction of conditions undeniably
What we have to keep in mind is that clear determination of objectives positively affects the correct forecast.


Introduction
Welcome!!!
spacetimeAthleta is a HaaS(Hardware as a Service)/SaaS(Software as a Service) platform, providing real-time biometric
sensing, tracking, predictive analytics and performance-intelligence for athletic teams.
Utilizing the latest in cellular connectivity, bio-sensors, GPS, machine learning, and artificial intelligence.
As a coach, trainer, manager and athlete you can interface with the platform through any connected device(Android, iPhone,
Desktop) in real-time from anywhere during an event. Unique in the industry the spacetimeAthleta platform can scale
to an unlimted number of athletes and teams, all in an unparalleled cost saving structure.
We think every team should have access to our platform, from tiny highschools to professional teams.
We answer questions like:
- Through analytics and machine learning, how can we maximize athletic performance as a team and as individual players?
- How do we know if our athletes are overtrained?
- How can we tell if a player is under utilized or not performing to thier physical potiental?
- How can we make predictions on performance?
- At the current state of wellness and environmental factors, is heat exhaustion potientially imminent?
- How does body temperature, heart rate, speed and distance covered correlate to performance?
- Who should really sit out this quarter vs. the next based on analysis and not "gut"?
- And.. most importantly, how can we do all this in real-time during a game, practice or event?
We are passionate about delivering the most seemless, cost enabling, and advanced athlete performance-intelligence platform
for your team!!
Currently we are in the midst of hardware design and core software architecture development. Our plan is to internally release an Alpha build by Spring 2018 with hardware prototypes to follow in late summer. We also plan to begin interviews with coaches and trainers to get their input from the onset. Stay tuned for something inspiring!
Please send us a message, we want to talk!
Sincerely,
spacetimeAthleta Team
Platform Brief
About
Lorem ipsum dolor sit amet, consectetur et adipiscing elit. Praesent eleifend dignissim arcu, at eleifend sapien imperdiet
ac. Aliquam erat volutpat. Praesent urna nisi, fringila lorem et vehicula lacinia quam. Integer sollicitudin mauris
nec lorem luctus ultrices. Aliquam libero et malesuada fames ac ante ipsum primis in faucibus.
Contact
Elements
Text
This is
bold and this is
strong. This is
italic and this is
emphasized. This is
superscript text and this is
subscript text. This is
underlined and this is code:
for (;;) { ... }
. Finally,
this is a link.
Heading Level 2
Heading Level 3
Heading Level 4
Heading Level 5
Heading Level 6
Blockquote
Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum
primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum
ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.
Preformatted
i = 0;
while (!deck.isInOrder()) {
print 'Iteration ' + i;
deck.shuffle();
i++;
}
print 'It took ' + i + ' iterations to sort the deck.';
Lists
Unordered
- Dolor pulvinar etiam.
- Sagittis adipiscing.
- Felis enim feugiat.
Alternate
- Dolor pulvinar etiam.
- Sagittis adipiscing.
- Felis enim feugiat.
Ordered
- Dolor pulvinar etiam.
- Etiam vel felis viverra.
- Felis enim feugiat.
- Dolor pulvinar etiam.
- Etiam vel felis lorem.
- Felis enim et feugiat.
Icons
Actions
Table
Default
| Name |
Description |
Price |
| Item One |
Ante turpis integer aliquet porttitor. |
29.99 |
| Item Two |
Vis ac commodo adipiscing arcu aliquet. |
19.99 |
| Item Three |
Morbi faucibus arcu accumsan lorem. |
29.99 |
| Item Four |
Vitae integer tempus condimentum. |
19.99 |
| Item Five |
Ante turpis integer aliquet porttitor. |
29.99 |
|
100.00 |
Alternate
| Name |
Description |
Price |
| Item One |
Ante turpis integer aliquet porttitor. |
29.99 |
| Item Two |
Vis ac commodo adipiscing arcu aliquet. |
19.99 |
| Item Three |
Morbi faucibus arcu accumsan lorem. |
29.99 |
| Item Four |
Vitae integer tempus condimentum. |
19.99 |
| Item Five |
Ante turpis integer aliquet porttitor. |
29.99 |
|
100.00 |


Curry's Fourth Quarter Takeover Leads Dubs to Game 5 Victory
03 Oct 2016
Category: Sport
Stephen Curry put his stamp on the NBA Finals with 17 fourth quarter points in a 104-91 win over the Cavaliers that left the Golden State Warriors one victory away from the team’s first NBA Championship in 40 years.
Curry’s heroics were part of a classic fourth quarter showdown with LeBron James. Cleveland played through their star on seemingly every possession, and James responded with a 16-point fourth quarter of his own, but it was Curry with the last laugh on this beautiful Sunday evening at Oracle Arena. The 2014-15 NBA MVP closed the game on a tear, scoring 12 of the Warriors’ final 13 points to finish up a 37-point, seven-rebound performance.
A back-and-forth battle all night, Curry put the Warriors in front for good with one of his seven 3-pointers with 7:33 left in the fourth quarter. That shot, which was the 20th lead change of the game, immediately followed a deep 3-pointer from James that had temporarily put the Cavs in front. In addition, that Curry trey ignited a 12-4 Warriors run that had the Warriors up by seven, their largest lead of the game up to that point.
But the signature play of the game – and perhaps the series – was a step-back Curry 3-pointer that followed a flashy dribbling display while being guarded by Cleveland’s Matthew Dellavedova. That shot, with 2:44 left in the game, sent the Oracle Arena crowd into an absolute frenzy, and the Warriors cruised to the victory from there.


Easel
JS
Simple Filter Example
This sample loads an image, and applies a blur filter each frame with a varying value.


2021 Mercedes GLA To Debut Online In A Few Weeks
Preliminary specs reveal it will be shorter than the outgoing model, but with a longer wheelbase.
by Adrian PadeanuA-Class hatchback, A-Class sedan, A-Class sedan long wheelbase, B-Class, GLB, CLA, and CLA Shooting Brake for a total of seven Mercedes compact cars, but an eighth one is on its way. Having racked up nearly one million sales in five years, the GLA is one of the most important vehicles in the automaker’s small car lineup and needs to step up its game to better compete with the newer BMW X2 and Audi Q2. That’s exactly what Daimler is doing as the second-generation of the city-oriented crossover will debut in a few weeks.
The 2019 Los Angeles Auto Show is merely a few days away, so we’re definitely not going to see the new GLA there. Instead, Mercedes will unveil its smallest crossover at a dedicated event that will be livestreamed on the Internet for the whole world to see. Meanwhile, the three-pointed star has allowed Autocar to share some preliminary technical specifications about the high-riding model.
Gallery: 2021 Mercedes-AMG GLA 35 spy photos
Despite being nearly 20 millimeters (0.8 inches) shorter than the outgoing model, the engineers have found a way to expand the wheelbase by 30 mm (1.2 inches), now at 2729 mm (107.4 inches). Needless to say, the extra distance between the axles will be put to good use by freeing up more legroom in the back where the passengers will sit on adjustable rear seats akin to those of the boxy GLB and the B-Class minivan.
Not only have they changed the overall length and wheelbase, but also height. The second-generation GLA will be almost 100 mm (3.9 inches) taller in an attempt to eschew the high-riding hatchback silhouette for a crossover look. Doing so has also paid dividends in terms of headroom, particularly for rear passengers.
Gallery: 2020 Mercedes GLA new spy photos
According to Autocar, the cabin will fuse elements from the A-Class and GLB, which isn’t really all that surprising seeing as how Mercedes’ latest compact cars all have pretty much the same interiors. It’s the same story with the underpinnings as it will use the same engines and gearboxes as the other members of family, all the way up to the AMGs with 302 horsepower for the “35” model, 382 hp for the “45” version, and 416 hp for the range-topping “45 S.”
Joining the conventionally powered models will be a GLA 250e EQ plug-in hybrid variant with the same electrified powertrain as the A250e and B250e. It will combine a turbocharged 1.33-liter four-cylinder gasoline engine with an electric motor for a total output of 215 hp and 450 Nm (332 lb-ft) sent to the road via an eight-speed, dual-clutch automatic transmission. It should do over 40 of WLTP-certified miles by using a 15.6-kWh lithium-ion battery pack.
The AMG Versions Have Been Spotted Already:
The next step in terms of electrification will be the EQA, a fully electric version based on the GLA slated to come out in 2021. As you may recall, the EQA concept from 2017 was a sleek three-door hatchback, but the production version will morph to a five-door crossover to capitalize on the strong demand for CUVs. It is believed the production-ready model will travel more than 300 miles (483 kilometers) between charges.
Source: Autocar