Tests recorded by General Interface Builder
eg.pubsub.APP
jsxopen
${GI}/shell.html?jsxapppath=${APP}
jsxwait_exists
gi=btnSubscribeButton
click
gi=chkMinDoc
click
gi=btnSubscribeButton
click
gi=btnPublishButton
jsxassert_value
gi=output
"This is a test message on subject sometopic. 1"


val long: Boolean
if true, this is long castling, otherwise short castling.
long - if true, this is long castling, otherwise short castling.
long


{# TALENT INDEX /templates/talent/index.html niceworld 7.18.18 #} {% extends "_layouts/site" %} {% set pageName = 'Talent' %} {% block head %} {% set title = "Talent" %} {% set description = "Our people are our strength. Our team members are experienced, innovative, intelligent, committed, and hard-working individuals who share in your purpose and sense of mission." %} {% set canon_url = siteUrl ~"talent" %} {% set og_img = siteUrl ~"imgz/social-share-default.jpg" %} {{ parent() }} {% include '_partials/scrollface' %} {% endblock %} {% block main %}
Our people are our strength. Our team members are experienced, innovative, intelligent, committed, and hard-working individuals who share in your purpose and sense of mission. We are committed to maintaining a core team that can provide the very highest level of service and solutions.
Our quarterly in-person meetings energize the team and get us
motivated to create more innovative learning solutions.
Our team is completely virtual because we believe in hiring and retaining the absolute best people, no matter their location. We are unified by an intense desire to continuously learn about learning, about the technology that enhances our work and our lives, and a deep passion for sharing what we learn with others. That’s what brought us together and what brings joy to our work every day.
We created a set of three guiding principles by which all of employees operate and why we believe
we are a Best Place to Work.
1
We apply our core values with each other and with our clients
2
We all show-up and take responsibility for our work
3
We all contribute to each other and make each other better
{{ entry.talentIndexQuoteOne }}
{{ entry.talentIndexQuoteTwo }}
In addition to our incredible team, Vivayic also leverages a network of trusted consultants to deliver specialized expertise for your project.


We are the
new
generation
is
doing fine arts. We are young and creative.
We welcome everybody, every
gen
der who loves art, do art.
We are going to bring all the
new gen
eral
information about art to you.
We are
NEW GEN ART
via (+84) 91 999 99 99 - Or email us: ng.kimkhoi2002@gmail.com


Jellyfish
Visualization & Interface Design Innovation
Control Panel
Star Coordinate
Correlation Matrix


Called when user clicks Reload button on the toolbar.
onReload = function(event)
You can add event listener during the object creation:
or after the object has been created:
The event handler is called before the default action of the event is triggered. You can cancel the default action by calling
event.preventDefault(). To perform an action
after the event is fully processed, define event.onComplete function.
See events page in utilities for more details.


Lawsuit: 92-year-old woman dies after ambulance workers drop her
by Associated PressPORTLAND, Ore. (AP) — The family of a 92-year-old Vancouver, Wash., woman who died after ambulance workers who were transporting her allegedly dropped her onto a sidewalk has filed a $4 million lawsuit.
The Oregonian/OregonLive reports the lawsuit was filed Monday in Multnomah County Circuit Court against American Medical Response Northwest.
The suit claims that Ethel Watters broke six ribs and her collarbone on Nov. 2, 2018, when the two AMR employees allowed a gurney carrying Watters to tip over.
The lawsuit says Watters was being transferred from her home to a facility that could care for her cough that had been getting worse.
The suit says Watters died 11 days later after spending five days at a hospital and six days in hospice care.
A representative from AMR declined comment Tuesday, saying the company doesn’t comment on pending litigation.


Inside Inspirations Wholesale at Christmastime 24 Nov 2019, 11:41 by Elle May Rice Inside Inspirations Wholesale1 of 6(Image: Liverpool Echo) Inside Inspirations Wholesale2 of 6(Image: Liverpool Echo) Inside Inspirations Wholesale3 of 6(Image: Liverpool Echo) Inside Inspirations Wholesale4 of 6(Image: Liverpool Echo) Inside Inspirations Wholesale5 of 6(Image: Liverpool Echo) Inside Inspirations Wholesale6 of 6(Image: Liverpool Echo)


What will $("div span") select?
This div element has two descendants, p and span:
This is a paragraph.
This is a text inside a span.
This div element has also two descendants, p and span:
This is a paragraph.
This is a span element, inside the paragraph.


# -*- coding: utf-8 -*-
# Copyright (C) 2013 by
# Fred Morstatter<EMAIL_ADDRESS># Jordi Torrents<EMAIL_ADDRESS># All rights reserved.
# BSD license.
import random
from networkx.utils import not_implemented_for
from networkx.utils import py_random_state
__all__ = ['average_clustering']
__author__ = """\n""".join(['Fred Morstatter<EMAIL_ADDRESS>'Jordi Torrents<EMAIL_ADDRESS>[docs]@py_random_state(2)
@not_implemented_for('directed')
def average_clustering(G, trials=1000, seed=None):
r"""Estimates the average clustering coefficient of G.
The local clustering of each node in `G` is the fraction of triangles
that actually exist over all possible triangles in its neighborhood.
The average clustering coefficient of a graph `G` is the mean of
local clusterings.
This function finds an approximate average clustering coefficient
for G by repeating `n` times (defined in `trials`) the following
experiment: choose a node at random, choose two of its neighbors
at random, and check if they are connected. The approximate
coefficient is the fraction of triangles found over the number
of trials [1]_.
Parameters
----------
G : NetworkX graph
trials : integer
Number of trials to perform (default 1000).
seed : integer, random_state, or None (default)
Indicator of random number generation state.
See :ref:`Randomness<randomness>`.
Returns
-------
c : float
Approximated average clustering coefficient.
References
----------
.. [1] Schank, Thomas, and Dorothea Wagner. Approximating clustering
coefficient and transitivity. Universität Karlsruhe, Fakultät für
Informatik, 2004.
http://www.emis.ams.org/journals/JGAA/accepted/2005/SchankWagner2005.9.2.pdf
"""
n = len(G)
triangles = 0
nodes = list(G)
for i in [int(seed.random() * n) for i in range(trials)]:
nbrs = list(G[nodes[i]])
if len(nbrs) < 2:
continue
u, v = seed.sample(nbrs, 2)
if u in G[v]:
triangles += 1
return triangles / float(trials)


Language Guide: Page 4
A crash course in the particular workings of microscheme
Type System
Microscheme has a strong dynamic type system. It is strong in the sense that:
- All values have a specific, definite type
- No type coersion occurs
- Procedures are generally valid for a specific set of types
- Type exceptions are raised when procedures are applied to values of the wrong type
It is dynamic in the sense that a variable is not restricted to hold values of a certain type. The type of value to which a variable name will be bound is not known until runtime, and can change as the program progresses.
The built-in types are: Number, Char, Boolean, Pair, Vector, ‘The Empty List’ aka null, which is said to have a type of its own, and Procedure. From these basic types we can infer compound types. A List is defined to be something of the type null or pair where the value of the cdr field has type List. This definition is effectively implemented by the (list? …) function in the ‘list.ms’ library.
Even though the built-in numeric type is fairly restricted (15-bit unsigned integer), a richer numeric stack can be built using combinations of pairs, vectors and numbers. For example, the 'xtypes.ms' library provides types long and fp, which represent 8-digit unsigned integers, and 4+4 digit fixed-point real numbers respectively.
For every type, there is a predicate function which answers the question 'is this value of type X'. These predicates are consistently formed by appending a question mark to the type name. For example, (number? 4) evaluates to #t. (boolean? 4) evaluates to #f. (boolean? (number? 4)) evaluates to #t.
Procedures for converting between types are formed with an arrow between the type names, e.g. (vector->list a b). These conversions are not provided for many types, but they can be written manually.


{{_("Internal Server Error")}}
{{_("Your request was not processed due to server error(s). If you are still experiencing problem. Please use the link below.")}}
{{_("Your request was not processed due to server error(s). If you are still experiencing problem. Please use the link below.")}}


Chapter 11 Plotting (I)
Sammy Davis Jr. was one of the greatest American performers of all time. If you don’t know him already, Sammy was an American entertainer who lived from 1925 to 1990. The range of his talents was just incredible. He could sing, dance, act, and play multiple instruments with ease. So how is R like Sammy Davis Jr? Like Sammy Davis Jr., R is incredibly good at doing many different things. R does data analysis like Sammy dances, and creates plot like Sammy sings. If Sammy and R did just one of these things, they’d be great. The fact that they can do both is pretty amazing.
When you evaluate plotting functions in R, R can build the plot in different locations. The default location for plots is in a temporary plotting window within your R programming environment. In RStudio, plots will show up in the Plot window (typically on the bottom right hand window pane). In Base R, plots will show up in a Quartz window.
You can think of these plotting locations as canvases. You only have one canvas active at any given time, and any plotting command you run will put more plotting elements on your active canvas. Certain high–level plotting functions like plot()
and hist()
create brand new canvases, while other low–level plotting functions like points()
and segments()
place elements on top of existing canvases.
Don’t worry if that’s confusing for now – we’ll go over all the details soon.
Let’s start by looking at a basic scatterplot in R using the plot()
function. When you execute the following code, you should see a plot open in a new window:
# A basic scatterplot
plot(x = 1:10,
y = 1:10,
xlab = "X Axis label",
ylab = "Y Axis label",
main = "Main Title")
Let’s take a look at the result. We see an x–axis, a y–axis, 10 data points, an x–axis label, a y–axis label, and a main plot title. Some of these items, like the labels and data points, were entered as arguments to the function. For example, the main arguments x and y are vectors indicating the x and y coordinates of the (in this case, 10) data points. The arguments xlab
, ylab
, and main
set the labels to the plot. However, there were many elements that I did not specify – from the x and y axis limits, to the color of the plotting points. As you’ll discover later, you can change all of these elements (and many, many more) by specifying additional arguments to the plot()
function. However, because I did not specify them, R used default values – values that R uses unless you tell it to use something else.
For the rest of this chapter, we’ll go over the main plotting functions, along with the most common arguments you can use to customize the look of your plot.
11.1 Colors
Most plotting functions have a color argument (usually col
) that allows you to specify the color of whatever your plotting. There are many ways to specify colors in R, let’s start with the easiest ways.
11.1.1 Colors by name
The easiest way to specify a color is to enter its name as a string. For example col = "red"
is R’s default version of the color red. Of course, all the basic colors are there, but R also has tons of quirky colors like "snow"
, "papayawhip"
and "lawngreen"
. Figure 11.2 shows 100 randomly selected named colors.
To see all 657 color names in R, run the code colors()
. Or to see an interactive demo of colors, run demo("colors")
.
11.1.2 gray()
| Argument | Description |
|---|---|
level |
Lightness: level = 1 = totally white, level = 0 = totally black |
alpha |
Transparency: alpha = 0 = totally transparent, alpha = 1 = not transparent at all. |
If you’re into erotic romance and BDSM, then you might be interested in Shades of Gray. If so, the function is your answer. The gray()
function takes two arguments, level
and alpha
, and returns a shade of gray. For example, gray(level = 1)
will return white. The second alpha
argument specifies how transparent to make the color on a scale from 0 (completely transparent), to 1 (not transparent at all). The default value for alpha is 1 (not transparent at all). See Figure 11.3 for examples.
11.1.3 yarrr::transparent()
I don’t know about you, but I almost always find transparent colors to be more appealing than solid colors. Not only do they help you see when multiple points are overlapping, but they’re just much nicer to look at. Just look at the overlapping circles in the plot below.
Unfortunately, as far as I know, base-R does not make it easy to make transparent colors. Thankfully, there is a function in the yarrr
package called transparent
that makes it very easy to make any color transparent. To use it, just enter the original color as the main argument orig.col
, then enter how transparent you want to make it (from 0 to 1) as the second argument trans.val
.
Here is a basic scatterplot with standard (non-transparent) colors:
# Plot with Standard Colors
plot(x = pirates$height,
y = pirates$weight,
col = "blue",
pch = 16,
main = "col ='blue'")
Now here’s the same plot using the transparent()
function in the yarrr
package:
# Plot with transparent colors using the transparent() function in the yarrr package
plot(x = pirates$height,
y = pirates$weight,
col = yarrr::transparent("blue", trans.val = .9),
pch = 16,
main = "col = yarrr::transparent('blue', .9)")
Later on in the book, we’ll cover more advanced ways to come up with colors using color palettes (using the RColorBrewer package or the piratepal()
function in the yarrr package) and functions that generate shades of colors based on numeric data (like the colorRamp2()
function in the circlize
package).
11.2 Plotting arguments
Most plotting functions have tons of optional arguments (also called parameters) that you can use to customize virtually everything in a plot. To see all of them, look at the help menu for par
by executing ?par
. However, the good news is that you don’t need to specify all possible parameters you create a plot. Instead, there are only a few critical arguments that you must specify - usually one or two vectors of data. For any optional arguments that you do not specify, R will use either a default value, or choose a value that makes sense based on the data you specify.
In the following examples, I will to cover the main plotting parameters for each plotting type. However, the best way to learn what you can, and can’t, do with plots, is to try to create them yourself!
I think the best way to learn how to create plots is to see some examples. Let’s start with the main high-level plotting functions.
11.3 Scatterplot: plot()
The most common high-level plotting function is plot(x, y)
. The plot()
function makes a scatterplot from two vectors x and y, where the x vector indicates the x (horizontal) values of the points, and the y vector indicates the y (vertical) values.
| Argument | Description |
|---|---|
x, y |
Vectors of equal length specifying the x and y values of the points |
type |
Type of plot. "l" means lines, "p" means points, "b" means lines and points, "n" means no plotting |
main , xlab , ylab |
Strings giving labels for the plot title, and x and y axes |
xlim , ylim |
Limits to the axes. For example, xlim = c(0, 100) will set the minimum and maximum of the x-axis to 0 and 100. |
pch |
An integer indicating the type of plotting symbols (see ?points and section below), or a string specifying symbols as text. For example, pch = 21 will create a two-color circle, while pch = "P" will plot the character "P" . To see all the different symbol types, run ?points . |
col |
Main color of the plotting symbols. For example col = "red" will create red symbols. |
cex |
A numeric vector specifying the size of the symbols (from 0 to Inf). The default size is 1. cex = 4 will make the points very large, while cex = .5 will make them very small. |
plot(x = 1:10, # x-coordinates
y = 1:10, # y-coordinates
type = "p", # Just draw points (no lines)
main = "My First Plot",
xlab = "This is the x-axis label",
ylab = "This is the y-axis label",
xlim = c(0, 11), # Min and max values for x-axis
ylim = c(0, 11), # Min and max values for y-axis
col = "blue", # Color of the points
pch = 16, # Type of symbol (16 means Filled circle)
cex = 1) # Size of the symbols
Aside from the x and y arguments, all of the arguments are optional. If you don’t specify a specific argument, then R will use a default value, or try to come up with a value that makes sense. For example, if you don’t specify the xlim
and ylim
arguments, R will set the limits so that all the points fit inside the plot.
11.3.1 Symbol types: pch
When you create a plot with plot()
(or points with points()
), you can specify the type of symbol with the pch
argument. You can specify the symbol type in one of two ways: with an integer, or with a string. If you use a string (like "p"
), R will use that text as the plotting symbol. If you use an integer value, you’ll get the symbol that correspond to that number. See Figure for all the symbol types you can specify with an integer.
Symbols differ in their shape and how they are colored. Symbols 1 through 14 only have borders and are always empty, while symbols 15 through 20 don’t have a border and are always filled. Symbols 21 through 25 have both a border and a filling. To specify the border color or background for symbols 1 through 20, use the col
argument. For symbols 21 through 25, you set the color of the border with col
, and the color of the background using bg
Let’s look at some different symbol types in action when applied to the same data:
11.4 Histogram: hist()
| Argument | Description |
|---|---|
x |
Vector of values |
breaks |
How should the bin sizes be calculated? Can be specified in many ways (see ?hist for details) |
freq |
Should frequencies or probabilities be plotted? freq = TRUE shows frequencies, freq = FALSE shows probabilities. |
col , border |
Colors of the bin filling (col ) and border (border ) |
Histograms are the most common way to plot a vector of numeric data. To create a histogram we’ll use the hist()
function. The main argument to hist()
is a x
, a vector of numeric data. If you want to specify how the histogram bins are created, you can use the breaks
argument. To change the color of the border or background of the bins, use col
and border
:
Let’s create a histogram of the weights in the ChickWeight dataset:
hist(x = ChickWeight$weight,
main = "Chicken Weights",
xlab = "Weight",
xlim = c(0, 500))
We can get more fancy by adding additional arguments like breaks = 20
to force there to be 20 bins, and col = "papayawhip"
and bg = "hotpink"
to make it a bit more colorful:
hist(x = ChickWeight$weight,
main = "Fancy Chicken Weight Histogram",
xlab = "Weight",
ylab = "Frequency",
breaks = 20, # 20 Bins
xlim = c(0, 500),
col = "papayawhip", # Filling Color
border = "hotpink") # Border Color
If you want to plot two histograms on the same plot, for example, to show the distributions of two different groups, you can use the argument to the second plot.
hist(x = ChickWeight$weight[ChickWeight$Diet == 1],
main = "Two Histograms in one",
xlab = "Weight",
ylab = "Frequency",
breaks = 20,
xlim = c(0, 500),
col = gray(0, .5))
hist(x = ChickWeight$weight[ChickWeight$Diet == 2],
breaks = 30,
add = TRUE, # Add plot to previous one!
col = gray(1, .8))
11.5 Barplot: barplot()
A barplot typically shows summary statistics for different groups. The primary argument to a barplot is height
: a vector of numeric values which will generate the height of each bar. To add names below the bars, use the names.arg
argument. For additional arguments specific to barplot()
, look at the help menu with ?barplot
:
barplot(height = 1:5, # A vector of heights
names.arg = c("G1", "G2", "G3", "G4", "G5"), # A vector of names
main = "Example Barplot",
xlab = "Group",
ylab = "Height")
Of course, you should plot more interesting data than just a vector of integers with a barplot. In the plot below, I create a barplot with the average weight of chickens for each week:
# Calculate mean weights for each time period
diet.weights <- aggregate(weight ~ Time,
data = ChickWeight,
FUN = mean)
# Create barplot
barplot(height = diet.weights$weight,
names.arg = diet.weights$Time,
xlab = "Week",
ylab = "Average Weight",
main = "Average Chicken Weights by Time",
col = "mistyrose")
11.5.1 Clustered barplot
If you want to create a clustered barplot, with different bars for different groups of data, you can enter a matrix as the argument to height
. R will then plot each column of the matrix as a separate set of bars. For example, let’s say I conducted an experiment where I compared how fast pirates can swim under four conditions: Wearing clothes versus being naked, and while being chased by a shark versus not being chased by a shark. Let’s say I conducted this experiment and calculated the following average swimming speed:
| Naked | Clothed | |
|---|---|---|
| No Shark | 2.1 | 1.5 |
| Shark | 3.0 | 3.0 |
I can represent these data in a matrix as follows. In order for the final barplot to include the condition names, I’ll add row and column names to the matrix with colnames()
and rownames()
swim.data <- cbind(c(2.1, 3), # Naked Times
c(1.5, 3)) # Clothed Times
colnames(swim.data) <- c("Naked", "Clothed")
rownames(swim.data) <- c("No Shark", "Shark")
# Print result
swim.data
## Naked Clothed
## No Shark 2.1 1.5
## Shark 3.0 3.0
Now, when I enter this matrix as the height = swim.data
argument to barplot()
, I’ll get multiple bars.
barplot(height = swim.data,
beside = TRUE, # Put the bars next to each other
legend.text = TRUE, # Add a legend
col = c(transparent("green", .2),
transparent("red", .2)),
main = "Swimming Speed Experiment",
ylab = "Speed (in meters / second)",
xlab = "Clothing Condition",
ylim = c(0, 4))
11.6 pirateplot()
| Argument | Description |
|---|---|
formula |
A formula specifying a y-axis variable as a function of 1, 2 or 3 x-axis variables. For example, formula = weight ~ Diet + Time will plot weight as a function of Diet and Time |
data |
A dataframe containing the variables specified in formula |
theme |
A plotting theme, can be an integer from 1 to 4. Setting theme = 0 will turn off all plotting elements so you can then turn them on individually. |
pal |
The color palette. Can either be a named color palette from the piratepal() function (e.g. "basel" , "xmen" , "google" ) or a standard R color. For example, make a black and white plot, set pal = "black" |
cap.beans |
If cap.beans = TRUE , beans will be cut off at the maximum and minimum data values |
A pirateplot a plot contained in the yarrr
package written specifically by, and for R pirates The pirateplot is an easy-to-use function that, unlike barplots and boxplots, can easily show raw data, descriptive statistics, and inferential statistics in one plot. Figure 11.5 shows the four key elements in a pirateplot:
| Element | Description |
|---|---|
| Points | Raw data. |
| Bar / Line | Descriptive statistic, usually the mean or median |
| Bean | Smoothed density curve showing the full data distribution. |
| Band | Inference around the mean, either a Bayesian Highest Density Interval (HDI), or a Confidence Interval (CI) |
The two main arguments to pirateplot()
are formula
and data
. In formula
, you specify plotting variables in the form y ~ x
, where y
is the name of the dependent variable, and x
is the name of the independent variable. In data
, you specify the name of the dataframe object where the variables are stored.
Let’s create a pirateplot of the ChickWeight data. I’ll set the dependent variable to weight
, and the independent variable to Time
using the argument formula = weight ~ Time
:
yarrr::pirateplot(formula = weight ~ Time, # dv is weight, iv is Diet
data = ChickWeight,
main = "Pirateplot of chicken weights",
xlab = "Diet",
ylab = "Weight")
11.6.1 Pirateplot themes
There are many different pirateplot themes, these themes dictate the overall look of the plot. To specify a theme, just use the theme = x
argument, where x
is the theme number:
For example, here is a pirateplot height data from the pirates
dataframe using theme = 3
. Here, I’ll plot pirates’ heights as a function of their sex and whether or not they wear a headband. I’ll also make the plot all grayscale by using the pal = "gray"
argument:
yarrr::pirateplot(formula = height ~ sex + headband, # DV = height, IV1 = sex, IV2 = headband
data = pirates,
theme = 3,
main = "Pirate Heights",
pal = "gray")
11.6.2 Customizing pirateplots
Regardless of the theme you use, you can always customize the color and opacity of graphical elements. To do this, specify one of the following arguments. Note: Arguments with .f.
correspond to the filling of an element, while .b.
correspond to the border of an element:
| element | color | opacity |
|---|---|---|
| points | point.col, point.bg | point.o |
| beans | bean.f.col, bean.b.col | bean.f.o, bean.b.o |
| bar | bar.f.col, bar.b.col | bar.f.o, bar.b.o |
| inf | inf.f.col, inf.b.col | inf.f.o, inf.b.o |
| avg.line | avg.line.col | avg.line.o |
For example, I could create the following pirateplots using theme = 0
and specifying elements explicitly:
pirateplot(formula = weight ~ Time,
data = ChickWeight,
theme = 0,
main = "Fully customized pirateplot",
pal = "southpark", # southpark color palette
bean.f.o = .6, # Bean fill
point.o = .3, # Points
inf.f.o = .7, # Inference fill
inf.b.o = .8, # Inference border
avg.line.o = 1, # Average line
bar.f.o = .5, # Bar
inf.f.col = "white", # Inf fill col
inf.b.col = "black", # Inf border col
avg.line.col = "black", # avg line col
bar.f.col = gray(.8), # bar filling color
point.pch = 21,
point.bg = "white",
point.col = "black",
point.cex = .7)
If you don’t want to start from scratch, you can also start with a theme, and then make selective adjustments:
pirateplot(formula = weight ~ Time,
data = ChickWeight,
main = "Adjusting an existing theme",
theme = 2, # Start with theme 2
inf.f.o = 0, # Turn off inf fill
inf.b.o = 0, # Turn off inf border
point.o = .2, # Turn up points
bar.f.o = .5, # Turn up bars
bean.f.o = .4, # Light bean filling
bean.b.o = .2, # Light bean border
avg.line.o = 0, # Turn off average line
point.col = "black") # Black points
Just to drive the point home, as a barplot is a special case of a pirateplot, you can even reduce a pirateplot into a horrible barplot:
# Reducing a pirateplot to a (at least colorful) barplot
pirateplot(formula = weight ~ Diet,
data = ChickWeight,
main = "Reducing a pirateplot to a (horrible) barplot",
theme = 0, # Start from scratch
pal = "black",
inf.disp = "line", # Use a line for inference
inf.f.o = 1, # Turn up inference opacity
inf.f.col = "black", # Set inference line color
bar.f.o = .3)
There are many additional arguments to pirateplot()
that you can use to complete customize the look of your plot. To see them all, look at the help menu with ?pirateplot
or look at the vignette at
| Element | Argument | Examples |
|---|---|---|
| Background color | back.col | back.col = 'gray(.9, .9)' |
| Gridlines | gl.col, gl.lwd, gl.lty | gl.col = 'gray', gl.lwd = c(.75, 0), gl.lty = 1 |
| Quantiles | quant, quant.lwd, quant.col | quant = c(.1, .9), quant.lwd = 1, quant.col = 'black' |
| Average line | avg.line.fun | avg.line.fun = median |
| Inference Calculation | inf.method | inf.method = 'hdi' , inf.method = 'ci' |
| Inference Display | inf.disp | inf.disp = 'line' , inf.disp = 'bean' , inf.disp = 'rect' |
# Additional pirateplot customizations
pirateplot(formula = weight ~ Diet,
data = ChickWeight,
main = "Adding quantile lines and background colors",
theme = 2,
cap.beans = TRUE,
back.col = transparent("blue", .95), # Add light blue background
gl.col = "gray", # Gray gridlines
gl.lwd = c(.75, 0),
inf.f.o = .6, # Turn up inf filling
inf.disp = "bean", # Wrap inference around bean
bean.b.o = .4, # Turn down bean borders
quant = c(.1, .9), # 10th and 90th quantiles
quant.col = "black") # Black quantile lines
11.6.3 Saving output
If you include the plot = FALSE
argument to a pirateplot, the function will return some values associated with each bean in the plot. In the next chunk, I’ll
# Create a pirateplot
pirateplot(formula = tattoos ~ sex + headband,
data = pirates)
# Save data from the pirateplot to an object
tattoos.pp <- pirateplot(formula = tattoos ~ sex + headband,
data = pirates,
plot = FALSE)
Now I can access the summary and inferential statistics from the plot in the tattoos.pp
object. The most interesting element is $summary
which shows summary statistics for each bean (aka, group):
# Show me statistics from groups in the pirateplot
tattoos.pp
## $summary
## sex headband bean.num n avg inf.lb inf.ub
## 1 female no 1 55 5.0 4.3 5.5
## 2 male no 2 47 4.3 3.2 5.0
## 3 other no 3 11 5.3 2.5 7.2
## 4 female yes 4 409 10.0 9.8 10.3
## 5 male yes 5 443 10.0 9.7 10.3
## 6 other yes 6 35 10.6 9.9 11.4
##
## $avg.line.fun
## [1] "mean"
##
## $inf.method
## [1] "hdi"
##
## $inf.p
## [1] 0.95
Once you’ve created a plot with a high-level plotting function, you can add additional elements with low-level functions. For example, you can add data points with points()
, reference lines with abline()
, text with text()
, and legends with legend()
.
11.7 Low-level plotting functions
Low-level plotting functions allow you to add elements, like points, or lines, to an existing plot. Here are the most common low-level plotting functions:
| Function | Outcome |
|---|---|
points(x, y) |
Adds points |
abline() , segments() |
Adds lines or segments |
arrows() |
Adds arrows |
curve() |
Adds a curve representing a function |
rect() ,polygon() |
Adds a rectangle or arbitrary shape |
text() , mtext() |
Adds text within the plot, or to plot margins |
legend() |
Adds a legend |
axis() |
Adds an axis |
11.7.1 Starting with a blank plot
Before you start adding elements with low-level plotting functions, it’s useful to start with a blank plotting space like the one I have in Figure 11.7. To do this, execute the plot()
function, but use the type = "n"
argument to tell R that you don’t want to plot anything yet. Once you’ve created a blank plot, you can additional elements with low-level plotting commands.
# Create a blank plotting space
plot(x = 1,
xlab = "X Label",
ylab = "Y Label",
xlim = c(0, 100),
ylim = c(0, 100),
main = "Blank Plotting Canvas",
type = "n")
11.7.2 points()
To add new points to an existing plot, use the points()
function. The points
function has many similar arguments to the plot()
function, like x
(for the x-coordinates), y
(for the y-coordinates), and parameters like col
(border color), cex
(point size), and pch
(symbol type). To see all of them, look at the help menu with ?points()
.
Let’s use points()
to create a plot with different symbol types for different data. I’ll use the pirates dataset and plot the relationship between a pirate’s age and the number of tattoos he/she has. I’ll create separate points for male and female pirates:
# Create a blank plot
plot(x = 1,
type = "n",
xlim = c(100, 225),
ylim = c(30, 110),
pch = 16,
xlab = "Height",
ylab = "Weight",
main = "Adding points to a plot with points()")
# Add coral2 points for male data
points(x = pirates$height[pirates$sex == "male"],
y = pirates$weight[pirates$sex == "male"],
pch = 16,
col = transparent("coral2", trans.val = .8))
# Add steelblue points for female data
points(x = pirates$height[pirates$sex == "female"],
y = pirates$weight[pirates$sex == "female"],
pch = 16,
col = transparent("steelblue3", trans.val = .8))
11.7.3 abline()
, segments()
, grid()
| Argument | Outcome |
|---|---|
h, v |
Locations of horizontal and vertical lines (for abline() only) |
x0, y0, x1, y1 |
Starting and ending coordinates of lines (for segments() only) |
lty |
Line type. 1 = solid, 2 = dashed, 3 = dotted, … |
lwd |
Width of the lines specified by a number. 1 is the default (.2 is very thin, 5 is very thick) |
col |
Line color |
To add straight lines to a plot, use abline()
or segments()
. abline()
will add a line across the entire plot, while segments()
will add a line with defined starting and end points.
For example, we can add reference lines to a plot with abline()
. In the following plot, I’ll add vertical and horizontal reference lines showing the means of the variables on the x and y axes, for the horizontal line, I’ll specify h = mean(pirates$height)
, for the vertical line, I’ll specify v = mean(pirates$weight)
plot(x = pirates$weight,
y = pirates$height,
xlab = "weight",
ylab = "height",
main = "Adding reference lines with abline",
pch = 16,
col = gray(.5, .2))
# Add horizontal line at mean height
abline(h = mean(pirates$height),
lty = 2) # Dashed line
# Add vertical line at mean weight
abline(v = mean(pirates$weight),
lty = 2) # Dashed line
To change the look of your lines, use the lty
argument, which changes the type of line (see Figure 11.9), lwd
, which changes its thickness, and col
which changes its color
You can also add a regression line (also called a line of best fit) to a scatterplot by entering a regression object created with lm()
as the main argument to abline()
:
# Add a regression line to a scatterplot
plot(x = pirates$height,
y = pirates$weight,
pch = 16,
col = transparent("purple", .7),
main = "Adding a regression line to a scatterplot()")
# Add the regression line
abline(lm(weight ~ height, data = pirates),
lty = 2)
The segments()
function works very similarly to abline()
– however, with the segments()
function, you specify the beginning and end points of the segments with the arguments x0
, y0
, x1
, and y1
. In Figure 11.10 I use segments()
to connect two vectors of data:
# Before and after data
before <- c(2.1, 3.5, 1.8, 4.2, 2.4, 3.9, 2.1, 4.4)
after <- c(7.5, 5.1, 6.9, 3.6, 7.5, 5.2, 6.1, 7.3)
# Create plotting space and before scores
plot(x = rep(1, length(before)),
y = before,
xlim = c(.5, 2.5),
ylim = c(0, 11),
ylab = "Score",
xlab = "Time",
main = "Using segments() to connect points",
xaxt = "n")
# Add after scores
points(x = rep(2, length(after)), y = after)
# Add connections with segments()
segments(x0 = rep(1, length(before)),
y0 = before,
x1 = rep(2, length(after)),
y1 = after,
col = gray(0, .5))
# Add labels
mtext(text = c("Before", "After"),
side = 1, at = c(1, 2), line = 1)
The grid()
function allows you to easily add grid lines to a plot (you can customize your grid lines further with lty
, lwd
, and col
arguments):
# Add gridlines to a plot with grid()
plot(pirates$age,
pirates$beard.length,
pch = 16,
col = gray(.1, .2), main = "Add grid lines to a plot with grid()")
# Add gridlines
grid()
11.7.4 text()
| Argument | Outcome |
|---|---|
x , y |
Coordinates of the labels |
labels |
Labels to be plotted |
cex |
Size of the labels |
adj |
Horizontal text adjustment. adj = 0 is left justified, adj = .5 is centered, and adj = 1 is right-justified |
pos |
Position of the labels relative to the coordinates. pos = 1 , puts the label below the coordinates, while 2, 3, and 4 put it to the left, top and right of the coordinates respectively |
With text()
, you can add text to a plot. You can use text()
to highlight specific points of interest in the plot, or to add information (like a third variable) for every point in a plot. For example, the following code adds the three words “Put”, “Text”, and “Here” at the coordinates (1, 9), (5, 5), and (9, 1) respectively. See Figure 11.11 for the plot:
plot(1,
xlim = c(0, 10),
ylim = c(0, 10),
type = "n")
text(x = c(1, 5, 9),
y = c(9, 5, 1),
labels = c("Put", "text", "here"))
You can do some cool things with text()
, in Figure 11.12 I create a scatterplot of data, and add data labels above each point by including the pos = 3
argument:
# Create data vectors
height <- c(156, 175, 160, 172, 159, 165, 178)
weight <- c(65, 74, 69, 72, 66, 75, 75)
id <- c("andrew", "heidi", "becki", "madisen", "david", "vincent", "jack")
# Plot data
plot(x = height,
y = weight,
xlim = c(155, 180),
ylim = c(65, 80),
pch = 16,
col = yarrr::piratepal("xmen"))
# Add id labels
text(x = height,
y = weight,
labels = id,
pos = 3) # Put labels above the points
When entering text in the labels
argument, keep in mind that R will, by default, plot the entire text in one line. However, if you are adding a long text string (like a sentence), you may want to separate the text into separate lines. To do this, add the text \n
where you want new lines to start. Look at Figure 11.13 for an example.
plot(1,
type = "n",
main = "The \\n tag",
xlab = "", ylab = "")
# Text withoutbreaks
text(x = 1, y = 1.3, labels = "Text without \\n", font = 2)
text(x = 1, y = 1.2,
labels = "Haikus are easy. But sometimes they don't make sense. Refrigerator",
font = 3) # italic font
abline(h = 1, lty = 2)
# Text with breaks
text(x = 1, y = .92, labels = "Text with \\n", font = 2)
text(x = 1, y = .7,
labels = "Haikus are easy\nBut sometimes they don't make sense\nRefrigerator",
font = 3) # italic font
11.7.5 Combining text and numbers with paste()
A common way to use text in a plot, either in the main title of a plot or using the text()
function, is to combine text with numerical data. For example, you may want to include the text “Mean = 3.14” in a plot to show that the mean of the data is 3.14. But how can we combine numerical data with text? In R, we can do this with the paste()
function:
The paste function will be helpful to you anytime you want to combine either multiple strings, or text and strings together. For example, let’s say you want to write text in a plot that says The mean of these data are XXX
, where XXX is replaced by the group mean. To do this, just include the main text and the object referring to the numerical mean as arguments to paste()
. In Figure X I plot the chicken weights over time, and add text to the plot specifying the overall mean of weights.
# Create the plot
plot(x = ChickWeight$Time,
y = ChickWeight$weight,
col = gray(.3, .5),
pch = 16,
main = "Combining text with numeric scalers using paste()")
# Add reference line
abline(h = mean(ChickWeight$weight),
lty = 2)
# Add text
text(x = 3,
y = mean(ChickWeight$weight),
labels = paste("Mean weight =",
round(mean(ChickWeight$weight), 2)),
pos = 3)
11.7.6 curve()
| Argument | Outcome |
|---|---|
expr |
The name of a function written as a function of x that returns a single vector. You can either use base functions in R like expr = $x^2$ , expr = x + 4 - 2 , or use your own custom functions such as expr = my.fun , where my.fun is previously defined (e.g.; my.fun <- function(x) {dnorm(x, mean = 10, sd = 3) ) |
from, to |
The starting (from ) and ending (to ) value of x to be plotted. |
add |
A logical value indicating whether or not to add the curve to an existing plot. If add = FALSE , then curve() will act like a high-level plotting function and create a new plot. If add = TRUE , then curve() will act like a low-level plotting function. |
lty, lwd, col |
Additional standard line arguments |
The curve()
function allows you to add a line showing a specific function or equation to a plot. For example, to add the function \(x^2\) to a plot from the x-values -10 to 10, you can run the code:
# Plot the function x^2 from -10 to +10
curve(expr = x^2,
from = -10,
to = 10, lwd = 2)
If you want to add a custom function to a plot, you can define the function and then use that function name as the argument to expr
. For example, to plot the normal distribution with a mean of 10 and standard deviation of 3, you can use this code:
# Plot the normal distribution with mean = 22 and sd = 3
# Create a function
my.fun <- function(x) {dnorm(x, mean = 2, sd = 3)}
curve(expr = my.fun,
from = -10,
to = 10, lwd = 2)
In Figure~11.14, I use the curve()
function to create curves of several mathematical formulas.
# Create plotting space
plot(1,
xlim = c(-5, 5), ylim = c(-5, 5),
type = "n",
main = "Plotting function lines with curve()",
ylab = "", xlab = "")
# Add x and y-axis lines
abline(h = 0)
abline(v = 0)
# set up colors
col.vec <- piratepal("google")
# x ^ 2
curve(expr = x^2, from = -5, to = 5,
add = TRUE, lwd = 3, col = col.vec[1])
# sin(x)
curve(expr = sin, from = -5, to = 5,
add = TRUE, lwd = 3, col = col.vec[2])
# dnorm(mean = 2, sd = .2)
my.fun <- function(x) {return(dnorm(x, mean = 2, sd = .2))}
curve(expr = my.fun,
from = -5, to = 5,
add = TRUE,
lwd = 3, col = col.vec[3])
# Add legend
legend("bottomright",
legend = c("x^2", "sin(x)", "dnorm(x, 2, .2)"),
col = col.vec[1:3],
lwd = 3)
11.7.7 legend()
| Argument | Outcome |
|---|---|
x, y |
Coordinates of the legend - for example, x = 0, y = 0 will put the text at the coordinates (0, 0). Alternatively, you can enter a string indicating where to put the legend (i.e.; "topright" , "topleft" ). For example, "bottomright" will always put the legend at the bottom right corner of the plot. |
labels |
A string vector specifying the text in the legend. For example, legend = c("Males, "Females") will create two groups with names Males and Females. |
pch, lty, lwd, col, pt.bg, ... |
Additional arguments specifying symbol types (pch ), line types (lty ), line widths (lwd ), background color of symbol types 21 through 25 (pt.bg ) and several other optional arguments. See ?legend for a complete list |
The last low-level plotting function that we’ll go over in detail is legend()
which adds a legend to a plot. For example, to add a legend to to bottom-right of an existing graph where data from females are plotted in blue circles and data from males are plotted in pink circles, you’d use the following code:
# Add a legend to the bottom right of a plot
legend("bottomright", # Put legend in bottom right of graph
legend = c("Females", "Males"), # Names of groups
col = c("blue", "orange"), # Colors of symbols
pch = c(16, 16)) # Symbol types
In Figure 11.15 I use this code to add a legend to plot containing data from males and females:
# Create plot with data from females
plot(x = pirates$age[pirates$sex == "female"],
y = pirates$tattoos[pirates$sex == "female"],
xlim = c(0, 50),
ylim = c(0, 20),
pch = 16, col = yarrr::transparent("red", .7),
xlab = "Age", ylab = "Tattoos",
main = "Adding a legend with legend()")
# Add data from males
points(x = pirates$age[pirates$sex == "male"],
y = pirates$tattoos[pirates$sex == "male"],
pch = 16, col = yarrr::transparent("blue", .7))
# Add legend
legend("bottomright",
legend = c("Females", "Males"),
col = transparent(c('red', 'blue'), .5),
pch = c(16, 16),
bg = "white")
There are many more low-level plotting functions that can add additional elements to your plots. Here are some I use. To see examples of how to use each one, check out their associated help menus.
plot(1, xlim = c(1, 100), ylim = c(1, 100),
type = "n", xaxt = "n", yaxt = "n",
ylab = "", xlab = "", main = "Adding simple figures to a plot")
text(25, 95, labels = "rect()")
rect(xleft = 10, ybottom = 70,
xright = 40, ytop = 90, lwd = 2, col = "coral")
text(25, 60, labels = "polygon()")
polygon(x = runif(6, 15, 35),
y = runif(6, 40, 55),
col = "skyblue")
text(25, 30, labels = "segments()")
segments(x0 = runif(5, 10, 40),
y0 = runif(5, 5, 25),
x1 = runif(5, 10, 40),
y1 = runif(5, 5, 25),
lwd = 2)
text(75, 95, labels = "symbols(circles)")
symbols(x = runif(3, 60, 90),
y = runif(3, 60, 70),
circles = c(1, .1, .3),
add = TRUE, bg = gray(.5, .1))
text(75, 30, labels = "arrows()")
arrows(x0 = runif(3, 60, 90),
y0 = runif(3, 10, 25),
x1 = runif(3, 60, 90),
y1 = runif(3, 10, 25),
length = .1, lwd = 2)
11.8 Saving plots to a file with pdf()
, jpeg()
and png()
Once you’ve created a plot in R, you may wish to save it to a file so you can use it in another document. To do this, you’ll use either the pdf()
, png()
or jpeg()
functions. These functions will save your plot to either a .pdf, .jpg, or .png file.
| Argument | Outcome |
|---|---|
file |
The directory and name of the final plot entered as a string. For example, to put a plot on my desktop, I’d write file = "/Users/nphillips/Desktop/plot.pdf" when creating a pdf, and file = "/Users/nphillips/Desktop/plot.jpg" when creating a jpeg. |
width, height |
The width and height of the final plot in inches. |
dev.off() |
This is not an argument to pdf() and jpeg() . You just need to execute this code after creating the plot to finish creating the image file (see examples). |
To use these functions to save files, you need to follow 3 steps:
- Execute the
pdf()
orjpeg()
functions withfile, width, height
arguments. - Execute all your plotting code (e.g.;
plot(x = 1:10, y = 1:10)
) - Complete the file by executing the command
dev.off()
. This tells R that you’re done creating the file.
The chunk below shows an example of the three steps in creating a pdf:
# Step 1: Call the pdf command to start the plot
pdf(file = "/Users/ndphillips/Desktop/My Plot.pdf", # The directory you want to save the file in
width = 4, # The width of the plot in inches
height = 4) # The height of the plot in inches
# Step 2: Create the plot with R code
plot(x = 1:10,
y = 1:10)
abline(v = 0) # Additional low-level plotting commands
text(x = 0, y = 1, labels = "Random text")
# Step 3: Run dev.off() to create the file!
dev.off()
You’ll notice that after you close the plot with dev.off()
, you’ll see a message in the prompt like “null device”. That’s just R telling you that you can now create plots in the main R plotting window again.
The functions pdf()
, jpeg()
, and png()
all work the same way, they just return different file types. If you can, use pdf()
it saves the plot in a high quality format.
11.9 Examples
Figure 11.17 shows a modified version of a scatterplot I call a balloonplot
:
# Turn a boring scatterplot into a balloonplot!
# Create some random correlated data
x <- rnorm(50, mean = 50, sd = 10)
y <- x + rnorm(50, mean = 20, sd = 8)
# Set up the plotting space
plot(1,
bty = "n",
xlim = c(0, 100),
ylim = c(0, 100),
type = "n", xlab = "", ylab = "",
main = "Turning a scatterplot into a balloon plot!")
# Add gridlines
grid()
# Add Strings with segments()
segments(x0 = x + rnorm(length(x), mean = 0, sd = .5),
y0 = y - 10,
x1 = x,
y1 = y,
col = gray(.1, .95),
lwd = .5)
# Add balloons
points(x, y,
cex = 2, # Size of the balloons
pch = 21,
col = "white", # white border
bg = yarrr::piratepal("basel")) # Filling color
You can use colors and point sizes in a scatterplot to represent third variables. In Figure 11.18, I’ll plot the relationship between pirate height and weight, but now I’ll make the size and color of each point reflect how many tattoos the pirate has
# Just the first 100 pirates
pirates.r <- pirates[1:100,]
plot(x = pirates.r$height,
y = pirates.r$weight,
xlab = "height",
ylab = "weight",
main = "Specifying point sizes and colors with a 3rd variable",
cex = pirates.r$tattoos / 8, # Point size reflects how many tattoos they have
col = gray(1 - pirates.r$tattoos / 20)) # color reflects tattoos
grid()
11.10 Test your R might! Purdy pictures
- The
BeardLengths
dataframe (contained in theyarrr
package or online at https://github.com/ndphillips/ThePiratesGuideToR/raw/master/data/BeardLengths.txt) contains data on the lengths of beards from 3 different pirate ships. Calculate the average beard length for each ship usingaggregate()
, then create the following barplot:
- Now using the entire
BeardLengths
dataframe, create the following pirateplot:
- Using the
pirates
dataset, create the following scatterplot showing the relationship between a pirate’s age and how many parrot’s (s)he has owned (hint: to make the points solid and transparent, usepch = 16
, andcol = gray(level = .5, alpha = .1)
).


FOURTH SUNDAY OF ADVENT
Entrance Antiphon
Drop down dew from above, you heavens,
and let the clouds rain down the Just One; let the earth be opened and bring forth a Saviour.
The Gloria in excelsis (Glory to God in the highest) is not said.
Collect
Pour forth, we beseech you, O Lord,
your grace into our hearts, that we, to whom the Incarnation of Christ your Son was made known by the message of an Angel,
may by his Passion and Cross be brought to the glory of his Resurrection. Who lives and reigns with you…
YEAR A FIRST READING
Isaiah 7:10-14
A reading from the Book of Isaiah In those days: The LORD spoke to Ahaz, "Ask a
sign of the LORD your God; let it be deep as Sheol or
high as heaven." But Ahaz said, "I will not ask, and I will not put
the LORD to the test." And he said, "Hear then, O house of David!  Therefore the
Lord himself will give you a sign. Behold, a young woman shall conceive and
bear a son, and shall call his name Immanuel. The word of the Lord
RESPONSORIAL PSALM
Psalm
24:1-2.3-4ab.5-6(R.cf.7c.10c) R. Let the Lord enter; he is the King of glory. The LORD's is the earth
and its fullness, the world, and all who dwell in it. It is he who set it on
the seas; on the rivers he made it firm. R. Let the Lord enter; he is the King of glory. Who shall climb the mountain of the LORD? Who shall
stand in his holy place? The clean of hands and pure of
heart, whose soul is not set on vain things. R. Let the Lord enter; he is the King of glory. Blessings from the LORD shall he receive, and right
reward from the God who saves him. Such are the people who seek him, who seek
the face of the God of Jacob. R. Let the Lord enter; he is the King of glory. SECOND READING
Romans1:1-7 A reading from the Letter of Saint Paul to the Romans Paul, a servant of Jesus Christ, called to be an
apostle, set apart for the gospel of God which he promised beforehand through
his prophets in the holy scriptures, the gospel concerning his Son, who was
descended from David according to the flesh and designated Son of God in power
according to the Spirit of holiness by his resurrection from the dead, Jesus
Christ our Lord, through whom we have received grace and apostleship to bring
about the obedience of faith for the sake of his name among all the nations,
including yourselves who are called to belong to Jesus Christ; To all God's
beloved in Rome, who are called to be saints: Grace to you and peace from God
our Father and the Lord Jesus Christ. The word of the Lord
ALLELUIA Matthew 1:23 Alleluia.
 Alleluia. GOSPEL
Matthew 1:18-24 A reading from the holy Gospel according to Matthew The birth of Jesus Christ took place in this way.   All
this took place to fulfil what the Lord had spoken by the prophet:
"Behold, a virgin shall conceive and bear a son, and his name shall be
called Emmanuel" (which means, God with us). When Joseph woke from sleep,
he did as the angel of the Lord commanded him. The Gospel of the Lord
YEAR B FIRST READING
2 Samuel 7:1-5.8b-12.14a.16 A reading from the second Book of Samuel When King David dwelt in his house, and the LORD had given him rest from
all his enemies round about, the king said to Nathan the prophet, "See
now, I dwell in a house of cedar, but the ark of God dwells in a tent."
And Nathan said to the king, "Go, do all that is in your heart; for the
LORD is with you." But that same night the word of the LORD came to
Nathan, "Go and tell my servant David, 'Thus says
the LORD: Would you build me a house to dwell in? I took you from the pasture,
from following the sheep, that you should be prince over my people The word of the Lord
RESPONSORIAL PSALM
Psalm
89:2-3.4-5.27 and 29(R.2a) R. I will sing for ever of your mercies, O Lord.
I will sing for ever of your mercies, O LORD; through
all ages my mouth will proclaim your fidelity. I have declared your mercy is
established for ever; your fidelity stands firm as the heavens. R. I will sing for ever of your mercies, O Lord. 'With my chosen one I have made a covenant; I have
sworn to David my servant: I will establish your descendants for ever, and set
up your throne through all ages.' R. I will sing for ever of your mercies, O Lord. He will call out to me: 'You are my father, my God,
the rock of my salvation.' I will keep my faithful love for him always; with
him my covenant shall last. R. I will sing for ever of your mercies, O Lord. SECOND READING
Romans 16:25-27 A reading from the Letter of Saint Paul to the Romans To him who is able to strengthen you according to
my Gospel and the preaching of Jesus Christ, according to the revelation of the
mystery which was kept secret for long ages but is now disclosed and through the
prophetic writings is made known to all nations, according to the command of
the eternal God, to bring about the obedience of faith-- to the only wise God
be glory for evermore through Jesus Christ! Amen. The word of the Lord
ALLELUIA Luke 1:38 Alleluia.
Behold, I am the handmaid of the Lord; let it be to me according to your word. Alleluia. GOSPEL
Luke 1:26-38 A reading from the holy Gospel according to Luke The angel Gabriel was sent from God to a city of The Gospel of the Lord
YEAR C FIRST READING
Micah 5:2-5a A reading from the Book of the Prophet Micah Thus says the LORD: You, O Bethlehem Ephrathah, who are little to be
among the clans of The word of the Lord
RESPONSORIAL PSALM
Psalm
80:2ac and 3b.15-16a.18-19(R.4) R. O God, bring us back; let your face shine on us,
and we shall be saved. O shepherd of R. O God, bring us back; let your face shine on us,
and we shall be saved. God of hosts, turn again, we implore; look down
from heaven and see. Visit this vine and protect it, the vine your right hand
has planted. R. O God, bring us back; let your face shine on us,
and we shall be saved.   SECOND READING
Hebrews 10:5-10 A reading from the Letter to the Hebrews Brethren: When Christ came into the world, he said,
"Sacrifices and offerings you have not desired, but a body have you
prepared for me; in burnt offerings and sin offerings you have taken no
pleasure. Then I said, 'Behold, I have come to do your will, O God,' as it is
written of me in the roll of the book." When he said above, "You have
neither desired nor taken pleasure in sacrifices and offerings and burnt
offerings and sin offerings" (these are offered according to the law),
then he added, "Behold, I have come to do your will." He abolishes
the first in order to establish the second. And by that will we have been
sanctified through the offering of the body of Jesus Christ once for all. The word of the Lord
ALLELUIA Luke 1:38 Alleluia.
Behold, I am the handmaid of the Lord: let it be to me according to your word. Alleluia. GOSPEL
Luke 1:39-45 A reading from the holy Gospel according to Luke In those days Mary arose and went with haste into
the hill country, to a city of The Gospel of the Lord
The Creed is said.
 Through Christ our Lord.
Communion Antiphon
Behold a Virgin shall conceive, and shall bear a son; and his name will be called Emmanuel.
Prayer after Communion Having received this pledge of eternal redemption,
we pray, almighty God, that as the feast day of our salvation draws ever nearer,
so we may press forward all the more eagerly to the worthy celebration of the mystery
of your Son’s Nativity. Who lives and reigns for ever and ever.


|
KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
Public Member Functions | |
| def | __init__ (self, Model, custom_settings) |
| def | ExecuteInitialize (self) |
| def | ExecuteBeforeOutputStep (self) |
| def | ExecuteAfterOutputStep (self) |
| def | GetModelManager (self) |
| def | SetMeshingStepTime (self) |
| def | GetVariables (self) |
| Public Member Functions inherited from remesh_domains_process.RemeshDomainsProcess | |
| def | InitializeDomains (self) |
| def | ExecuteInitializeSolutionStep (self) |
| def | ExecuteMeshing (domain) |
| def | RemeshDomains (self) |
| def | GetMeshingStep (self) |
| def | IsMeshingStep (self) |
Public Attributes | |
| main_model_part | |
| dimension | |
| remesh_domains_active | |
| restart | |
| step_count | |
| next_meshing | |
| Public Attributes inherited from remesh_domains_process.RemeshDomainsProcess | |
| settings | |
| settings string in json format More... | |
| echo_level | |
| meshing_frequency | |
| meshing_control_is_time | |
| step_count | |
| counter | |
| next_meshing | |
| meshing_before_output | |
| model | |
| meshing_domains | |
| number_of_domains | |
| main_model_part | |
| dimension | |
| remesh_domains_active | |
| restart | |
| model_manager | |
| def contact_domain_process.ContactDomainProcess.__init__ | ( | self, | |
| Model, | |||
| custom_settings | |||
| ) |
Reimplemented from remesh_domains_process.RemeshDomainsProcess.
| def contact_domain_process.ContactDomainProcess.ExecuteAfterOutputStep | ( | self | ) |
Reimplemented from remesh_domains_process.RemeshDomainsProcess.
| def contact_domain_process.ContactDomainProcess.ExecuteBeforeOutputStep | ( | self | ) |
Reimplemented from remesh_domains_process.RemeshDomainsProcess.
| def contact_domain_process.ContactDomainProcess.ExecuteInitialize | ( | self | ) |
Reimplemented from remesh_domains_process.RemeshDomainsProcess.
| def contact_domain_process.ContactDomainProcess.GetModelManager | ( | self | ) |
Reimplemented from remesh_domains_process.RemeshDomainsProcess.
| def contact_domain_process.ContactDomainProcess.GetVariables | ( | self | ) |
Reimplemented from remesh_domains_process.RemeshDomainsProcess.
| def contact_domain_process.ContactDomainProcess.SetMeshingStepTime | ( | self | ) |
Reimplemented from remesh_domains_process.RemeshDomainsProcess.
| contact_domain_process.ContactDomainProcess.dimension |
| contact_domain_process.ContactDomainProcess.main_model_part |
| contact_domain_process.ContactDomainProcess.next_meshing |
| contact_domain_process.ContactDomainProcess.remesh_domains_active |
| contact_domain_process.ContactDomainProcess.restart |
| contact_domain_process.ContactDomainProcess.step_count |


Recipes & Shopping
TODO Turkey
[ ]
Apple Cider Vinegar[ ]
Allspice
- Alton Brown's Classic Brined and Roasted Turkey Recipe
- Brine
[ ]
1 18-pound frozen turkey[ ]
½ gallon hot tap water[ ]
⅔ cup sugar[ ]
1 pound kosher salt[ ]
8 pounds ice (which is a gallon of water)[ ]
16 cups (128 ounces) vegetable broth
- Turkey
[X]
Fresh herbs (such as thyme, rosemary, and sage)[ ]
2 large carrots, coarsely chopped[ ]
2 celery stalks, coarsely chopped[X]
1 onion, coarsely chopped[ ]
Nonstick vegetable oil spray[X]
2 tablespoons (¼ stick) unsalted butter
- Gravy
[X]
1 cup water[X]
1 cup low-sodium chicken broth[X]
Cornstarch
- Brine
- Good Eats Roast Turkey Recipe : Alton Brown
- Brine
[X]
1 cup kosher salt[ ]
1/2 cup light brown sugar[ ]
1 gallon vegetable stock[ ]
1 tablespoon black peppercorns[ ]
1 1/2 teaspoons allspice berries[ ]
1 1/2 teaspoons chopped candied ginger[ ]
1 gallon heavily iced water
- Aromatics
[ ]
1 red apple, sliced[ ]
1/2 onion, sliced[X]
1 cinnamon stick[X]
1 cup water[X]
4 sprigs rosemary[X]
6 leaves sage[ ]
Canola oil
- Brine
Garlic Green Beans
TODO Backup Gravy
- Heinz Homestyle Roasted Turkey Gravy
- Campbell’s Turkey Gravy
TODO Stuffing
Many people really like the basic recipe on the back of 'Mrs. Cubbisons'
[X]
Nuts[ ]
Celery[X]
Swansons Chicken Broth[X]
Cranberries[ ]
Apples[X]
Onions[X]
Butter[ ]
Bread[X]
Rosemary
- Simple is Best Dressing Recipe | Bon Appetit
[X]
3/4 cup (1 1/2 sticks) unsalted butter plus more for baking dish[ ]
1 pound good-quality day-old white bread, torn into 1-inch pieces (about 10 cups)[X]
2 1/2 cups chopped yellow onions[ ]
1 1/2 cups 1/4-inch slices celery[ ]
1/2 cup chopped flat-leaf parsley[X]
2 tablespoons chopped fresh sage[X]
1 tablespoon chopped fresh rosemary[X]
1 tablespoon chopped fresh thyme[X]
2 teaspoons kosher salt[X]
1 teaspoon freshly ground black pepper[X]
2 1/2 cups low-sodium chicken broth, divided[ ]
2 large eggs
- Meriel's Famous Dressing
Combine breads in large bowl or pot. Fry bacon and remove. Fry sausage in same pan. Saute onion and celery in same pan. I add the celery after the onion is already partially sauteed so it retains a bit of crunch. Mix everything with the bread. Start with the smaller amount of each herb at this point. Add butter and mix. Taste again and consider adding more herbs to your taste. Hint: you should almost certainly add some more herbs. Add chicken stock to moisten (1-3 Cups). Taste again and consider adding more herbs. Sage is really the key herb here IMHO. 30 minutes in oven at 350, covered in foil. Microwave is ok too. Best if made up to 1 day ahead so herbs and spices obtain their full flavor and harmony. You can then either microwave it before serving or reheat it in the oven. It really makes little to no difference. If you heat it in the oven, you might want to add a bit more chicken broth to make sure it stays moist.
[ ]
6 Cups white bread, cubed[ ]
6 Cups cornbread, medium crumble (I use one entire Marie Callender's mix)[ ]
1# bacon, crisp and crumbled[ ]
1# sage sausage (Jimmy Dean - No sausage casing), cooked and crumbled[ ]
1 chopped onion[ ]
1 Cup chopped celery[X]
1/2 Cup chopped parsley[X]
1-2 Tbs. dried rosemary[X]
4-8 Tbs. dried sage[ ]
2-4 Tbs. dried basil[X]
2-4 Tbs. dried thyme[ ]
1 can cashews[X]
Salt and pepper to taste.[X]
1 stick of melted butter (1/2 cup)[X]
Chicken broth
- Top Reddit 'Savory Stuffing'
Dry the bread on two rimmed baking sheets in a 200° oven. Stir and rotate pans every 15 minutes until done. Meanwhile, in a dutch oven over medium heat, melt butter. Add celery. Cook, stirring occasionally, 4 to 6 minutes. Add onions; cook until tender, about 6 to 9 minutes more. Add garlic and sauté for a minute. Transfer mixture to a large bowl. To celery-onion mixture, add bread, sage, parsley, pecans, and chestnuts. Season with salt and pepper; toss to combine. Whisk together eggs, 2 cups of stock, and cream. Add to bread mixture and toss to combine. Continue adding stock and tossing just until stuffing is moistened but not. To stuff the bird: Microwave about 5 cups of stuffing for about 2-3 minutes on high, until it registers 120–130 degrees F. on an instant-read thermometer. Stuff it in both cavities of the turkey. Spoon remaining stuffing (or all of it) into buttered baking dish; cover with buttered aluminum foil and refrigerate. When turkey is removed from oven, place covered baking dish in oven, and bake at 375 degrees until warmed through, about 45 minutes. Uncover and bake until golden, about 15 minutes more. I tinker with this every year (hence the name). I've put golden raisins and chopped apples in it some years. This year I'm leaving out the chestnuts. Here’s a trick someone posted here a couple of weeks ago—I’m trying it this year: Place a cooking rack or broiler pan rack atop the dish in which you will bake the dressing. Place a few chicken wings or turkey wings on the rack. The juices dripping down will baste the dressing and make it taste more like it was cooked inside the bird.
[ ]
2 loaves rustic Italian bread (about 10 ounces each), cut into <1/2-inch cubes (or ~13 oz. dried bread cubes)[ ]
6 Tablespoons butter, plus more at room temperature for pan and aluminum foil[ ]
4 stalks celery, halved lengthwise and cut crosswise into 1/2-inch pieces[ ]
2 medium onions, chopped[ ]
2 medium cloves garlic, pressed[ ]
3 Tablespoons finely chopped fresh sage[ ]
1/3 cup finely-chopped fresh flat-leaf parsley[ ]
2 cups toasted pecans, coarsely chopped[ ]
14 oz. cooked, peeled chestnuts, crumbled[ ]
Coarse salt and ground pepper[ ]
3 large eggs, lightly beaten[ ]
2-4 cups chicken stock[ ]
1/2 cup heavy cream
TODO Sweet Potato Pie
[ ]
1 unbaked pie crust[ ]
1/8 teaspoon ground allspice[X]
3/4 cup evaporated milk[ ]
4 medium sweet potatoes[X]
Cool Whip[ ]
1/2 stick butter, softened[X]
1 teaspoon pure vanilla extract[X]
1/2 teaspoon ground cinnamon[X]
1/2 teaspoon salt[X]
1/4 cup sugar[X]
1/8 teaspoon ground ginger[X]
1/8 teaspoon ground nutmeg[X]
2 eggs, beaten[X]
3/4 cup brown sugar
TODO Parker House Rolls
TODO Cinnamon Rolls
TODO Mashed Potatos
[ ]
Cream[ ]
Butter[ ]
Potatos


| ||||||||||||||||||||
Sponsor AcknowledgmentsThe OpenSSL project depends on volunteer efforts and financial support from the end user community. That support comes in the form of donations and paid sponsorships, software support contracts, paid consulting services, and commissioned software development. Since all these activities support the continued development and improvement of OpenSSL we consider all these clients and customers as sponsors of the OpenSSL project.
Exceptional support:
Platinum sponsors (listed chronologically, left to right). The sustainable funding provided by these sponsorships allows long term planning:
Major support:
Very significant support:
Significant support:
Please note that we ask permission to identify sponsors and that some sponsors we consider eligible for inclusion here have requested to remain anonymous. Additional sponsorship or financial support of any kind is always welcome; for more information please contact the OpenSSL Software Foundation | ||||||||||||||||||||


Martin Lewis tells shoppers how to get £29 IKEA 6ft real Christmas tree for just £9
The Money Saving Expert spoke about the mega deal
by Sophie McCoidMartin Lewis has told This Morning viewers how to get a real 6ft Christmas tree for just £9.
During his deals segment Money Saving Expert Martin told fans how to get the deal from Ikea.
The deal tends to be very popular and all people have to do is head to the Ikea store and buy a £29 tree.
You then get a £20 voucher to spend in store next year.
Martin said: "Every year this tends to be very popular. Go into your nearest Ikea and if you buy a £29 real Christmas, you’ll get a £20 voucher to spend at any participating store between Monday 13 January and Sunday 23 February next year.
"So it’s effectively a £9 tree as long as you’d have spent £20 in the New Year anyway.
"Officially, it's on till Tuesday 24 December, but in previous years the trees have sold out before this - so go quick if you want one, as it’s likely to be popular.
"The trees are all of the same variety (Abies Nordmanniana) and they're typically about 170cm (5ft 7in) tall, but do vary in size, and there’s no delivery option, so do think about how you’ll get it home."
Last year you could get the same deal for £5, so it is an increase of £4 but Martin still thinks it's a bargain.
*This Morning continues at 10:30am on ITV on Monday


PR Construction began as a general works contractor in 2008. Over the years, the group has undertaken many challenging projects and accumulated skills, know-how and experiences in design and build solutions and related engineering works.
Today, PR Construction takes on the role of main contractor for small to medium size projects and performs project management services to coordinates specialist trades for industrial/commercial projects. We also provide design inputs and engineering solutions as value-add services to our clients.
Our objective is to provide our clients with an “I am assured” experience when we are chosen to execute their projects. Our emphasis on clear communication and follow-through procedures ensures that client’s objectives are top priority in the planning and execution of all our processes.
To be a respectable building contractor delivering beyond expectation, always.
To procure projects at competitive pricing, provide safe working conditions and deliver quality work within reasonable time frame.


Speech
Secretary of State for Education Michael Gove’s speech to the Mayor of London’s education conference.
Today marks the fiftieth anniversary of John F Kennedy’s assassination - and the death of a president who promised so much for the people of America.
It also - of course - marks the fiftieth anniversary of Lyndon B Johnson’s assumption of presidential office. LBJ’s initials do not inspire the affection in our memories that JFK’s do. But whatever else he did - and did not - do President Johnson achieved something both wonderful and powerful in office - he passed the civil rights legislation which at last allowed African-Americans the opportunity to take their place alongside white Americans as equal citizens of their republic.
When we look at America’s story the crimes of slavery, the horrors of Jim Crow, the ugliness of segregation are all - mercifully - in the past.
But even now - 50 years after Kennedy died, 50 years after Martin Luther King’s I have a dream speech, 150 years after Lincoln declared in the Gettysburg address that all men are created equal, there is still terrible inequality in America.
Black children face a tougher fight than others to get up and get on - they are less likely to succeed, more likely to fall on hard times.
As President Obama has pointed out - the struggle for civil rights goes on. And the arena in which that fight is fiercest is education. Because black children are less likely to graduate from high school, less likely to go to college and less likely to graduate from college than their peers, their futures are blighted and their horizons are narrower. That is why Barack Obama has said that school reform is the civil rights struggle of our time.
That is why he has championed reforms which create more charter schools, like our academies here, which demand minimum standards for every child, like our national curriculum tests here and which reward great teachers more generously, as our pay and conditions reforms do here.
He has been joined in that fight by African-American political leaders like Cory Booker - the newly-elected senator from New Jersey who was mayor of Newark - and Deval Patrick the highly successful 2-term governor of Massachusetts. Other Democrat leaders in cities with large African-American populations - like Rahm Emanuel - have prosecuted the struggle with rare political courage. And Republican leaders who take their heritage as Lincoln’s heirs seriously are in the fight too - which is why Jeb Bush secured so much support across all ethnic communities in Florida and why Governor Chris Christie won by a landslide in New Jersey.
I’m lucky enough to have met many of these politicians - and I admire their commitment to social justice.
Just as I admire the commitment of politicians - across party lines - in our country who are dedicated to advancing opportunity through education. Whether it’s David Laws or Andrew Adonis, Tony Blair or Boris Johnson.
Because we need to fight more energetically for social justice in this country just as they’re doing in America.
We too have anniversaries that should spur us to new action.
Sixty-five years ago, the Empire Windrush landed at Tilbury, Queen Elizabeth I’s old stomping ground - carrying to these shores the first West Indian immigrants, hoping to start a new life.
Sixty-five years on - we have to ask - have we fulfilled our promise to those new Britons?

Twenty years on - we have to ask - have we created a truly colour-blind society in which every single child in this country, no matter what their background, no matter what their ethnicity, is given an equal opportunity to succeed?
I don’t believe we have - yet.
But I do believe we are getting there - making progress - and making progress because this government is committed heart and soul to the civil rights battle of our time - the fight to give every child a great school.
For too long, there have been shocking, stubborn gaps in attainment between children from black and minority ethnic backgrounds and their peers.
These things are never simple, either to observe, or to fix.
But even as we can identify many different factors at work, one huge reality remains. The gaps in achievement between BME children and their peers have been far too large for far too long.
At key stage 1, black children show the lowest proportion of pupils achieving the expected level in reading, writing, maths and science.
At key stage 2, a smaller proportion of black pupils than of any other ethnicity achieve the level we expect to see in English and maths - a full 3 percentage points below the national average. In fact, there is a staggering gap of 14 percentage points between black pupils and the top-performing ethnic groups in terms of how many children achieve a level 4 or above in maths.
At age 16, almost 3 in 5 pupils in the country as a whole achieved 5 or more A* to C grade GCSEs or equivalent including English and mathematics last year. But only around half of all black pupils managed to do so.
At age 18, fewer black pupils than the national average achieve 2 or more A levels or equivalent qualifications.
And although 8% of all pupils studying at this level in 2009 to 2010 went on to a Russell Group university, the equivalent figure for black pupils was only 5%.
Of course, the challenges faced by BME children are all the greater when they come from materially deprived backgrounds.
We already know that children from disadvantaged backgrounds fall further behind as they move through school.
But the problem is particularly acute for black Caribbean boys. Boys from a black Caribbean background who are eligible for free school meals have been among those suffering from the worst academic performance.
Of course, there is no single change we can make that will instantly transform the education of disadvantaged or minority ethnic children.
That is why this government is determined to radically reform the whole school system.
We are determined do everything we can to make sure that every child, from every background, is given an equal opportunity to succeed.
Over the last 3 years, this has been our top priority.
By giving schools independence and autonomy so that heads and teachers are free to support and challenge all pupils, including ethnic minority pupils, to achieve their full potential.
By embedding higher standards, and higher aspirations, in a new national curriculum and new accountability measures.
By raising the quality of teaching and raising the bar for new entrants to the teaching profession.
And by finally rejecting the soft bigotry of low expectations which has governed education for too long - by refusing to accept that children from poorer homes can’t be expected to do just as well, to achieve just as highly, as their wealthier peers.
One of the first education reforms we put in place was the Academies Act - which gave many more schools the chance to enjoy greater freedoms.
When this government came to power, there were just 203 academies. They’re schools with all the freedoms of independent schools - but in the state sector - free to all. They’re free to innovate in every area, to recruit and reward the best staff, and to tailor their curriculum, school day and year to suit pupils and parents.
In the last 3 years on, the number of open academies has grown from 203 to 3,444 - with many, many more in the pipeline.
These new schools are already teaching more than 2 million pupils.
And a crucial - and often-overlooked - fact is that academies are specifically benefitting those BME pupils who most need new educational opportunities.
Many academies have far higher levels of BME pupils than the rest of the state sector, both at primary and secondary.
Almost 40% of pupils in primary sponsored academies come from minority ethnic backgrounds, compared to just 28.5% in all state-funded primaries; and 30.0% of pupils in secondary sponsored academies from minority ethnic backgrounds (compared to 24.2% in all state-funded secondary).
In some schools, the numbers are even higher.
Like Harris Girls’ Academy in East Dulwich - a school in a disadvantaged area where the proportion of students known to be eligible for free school meals is more than twice the national average; almost half of students speak English as an additional language; and around 85% are classified as coming from minority-ethnic groups, mostly black Caribbean or black African.
Yet at its last Ofsted inspection, the academy scored outstanding in all categories - and the value added scores show that students make more progress at Harris Girls’ Academy East Dulwich than at 99% of other state schools in England.
In fact, across all 27 Harris academies - set up by Lord Harris of Peckham, a Streatham boy who is determined to transform London education for the better - 44% of last year’s GCSE cohort came from black or minority ethnic backgrounds (double the figures in 2012 across the country as a whole - just 22%) and 31% just from black backgrounds (almost 10 percentage points higher than the equivalent figure for London in 2012 and fully 6 times as many as across the country as a whole in that year - where the proportion is just 5%).
ARK academies - another of this country’s leading chains - have similarly high BME levels.
In recent years the results of sponsored academies like these have gone up faster than other state-funded schools.
Their performance has continued to improve this year, in fact the longer they are open the better on average that they do.
And BME pupils in sponsored academies outperform pupils from similar backgrounds in comparable local authority maintained schools.
Last year, for example, the proportion of mixed race pupils achieving 5 or more good GCSEs or equivalent (including English and mathematics) rose by just 1.3 percentage points nationally; but by 5.7 percentage points in sponsored academies.
Earlier I mentioned Harris Girls’ Academy in East Dulwich, where around 85% of pupils are classified as coming from minority-ethnic groups. But this year, figures provided by the school show that 67% of all pupils got 5 good GCSEs including English and maths, 7 percentage points above the national average of 60%.
And across all ARK academies, the school’s own figures show that 58% of black children achieved at least 5 GCSEs at A* to C including English and maths - above the national average for all black children.
So the numbers are clear. Sponsored academies have higher proportions of black children than other state schools - and black pupils’ results are improving faster in those academies than in comparable LA maintained schools.
That’s why the academies programme is a major step forward for racial equality in this country.
It’s bringing high standards and high expectations - the sort of education traditionally available only to the privileged - to those children who have historically been left behind.
Our free schools programme is another powerful route to greater opportunity for more disadvantaged children.
Free schools are entirely new schools, set up by dedicated and passionate teachers, parents, local communities and charitable organisations in communities often poorly served for generations.
In the last 3 years, 174 free schools have opened and over 100 more are in the pipeline.
What’s more, almost half (44%) of all those free schools open so far are located in the 30% most deprived communities in this country.
These new schools are bringing choice to parents who can’t afford to pay a premium for a house in a prized catchment area.
And they are offering higher standards - free schools are outperforming the rest of the maintained sector. Three-quarters of the first cohort (those open in September 2011) were rated good or outstanding by Ofsted under its tougher new inspection framework. Just 64% of maintained schools inspected under the same inspection regime achieved that.
And free schools achieved that level of success starting from scratch - indeed over the same period only 50% of new local authority schools were rated good or outstanding.
But most important of all, just like academies, free schools are catering disproportionately to BME pupils, with higher proportions of BME pupils than the national average - and, often, higher than the average for their local area.
Overall, 40% of pupils in all mainstream free schools for which we have figures come from minority ethnic backgrounds - compared to a national average in mainstream state schools of 26%.
And the proportion of BME pupils is often disproportionately high in free schools, even compared to other neighbouring schools.
In Krishna-Avanti Primary School in Leicester, the proportion of minority ethnic pupils is more than 33 percentage points higher than in the local authority as a whole; in Rainbow Primary School in Bradford, the proportion of minority ethnic pupils is more than forty-one percentage points higher than in the local authority as a whole.
And there are examples here in London too.
At the Greenwich Free School, where all children study politics, philosophy and economics and ICT has been replaced with computer programming, 53% of children are from minority ethnic backgrounds.
At Peter Hyman’s School 21 in Newham, where science classes start in Reception and extra curriculum time is devoted to ensuring all pupils leave with exceptional English language skills, 71% of children are from minority ethnic backgrounds.
Nine in 10 pupils at the Aldborough E-ACT Free School in Redbridge and the Woodpecker Hall Primary Academy in Enfield are from a minority ethnic background - higher than in both respective local authorities.
What all these successful schools demonstrate is the importance of high expectations - specifically the vital importance of a rigorous and demanding academic curriculum for every child.
Children of every ethnicity and every socio-economic group - not just those in the most expensive schools, or in the most wealthy communities - have an absolute right to be introduced to the best that has been thought and written.
Every child should be able to enjoy the type of knowledge-rich, subject-specific curriculum which gives them the best possible preparation for university, apprenticeships, employment, and adult life.
That means physics, chemistry and biology not play-based learning, project-work and an anti-knowledge ideology.
Every child should have the chance to read great literature - from Charles Dickens to Derek Walcott - appreciate great music - from Ludwig van Beethoven to Jelly Roll Morton - and enjoy great art - from Poussin to Basquiat.
Because these great creative figures help us understand the human condition - they appeal to the emotions and the sensibilities we all share as one human race - and they are the legacy our civilisation has bequeathed to us all.
And every child should have the chance to acquire the proper rigorous qualifications that our best employers and academics value.
Far from such an insistence being oppressive and reactionary it is liberating and progressive.
But don’t just take it from me - listen to Diane Abbott, the Labour MP for Hackney North and Stoke Newington and one of this country’s most active and most respected BME campaigners, has said:
An emphasis on rigorous education and on obtaining core academic subjects is not, as is sometimes argued, contrary to the interests of working class children, and of black and minority ethnic children.
On the contrary, precisely if someone is the first in their family to stay on past school-leaving age, precisely if someone’s family doesn’t have social capital, and precisely if someone does not have parents who can put in a word for them in a difficult job market, they need the assurance of rigorous qualifications and, if at all possible, core academic qualifications.
I couldn’t have put it better myself - giving every child the chance to enjoy a traditional academic education is the most powerful lever for greater social mobility and racial equality we have.
We want to make sure that as many pupils as possible benefit from new opportunities.
Which is why in our reform of the way we hold schools accountable for results, we’re focusing particularly on the attainment of pupils who’ve been overlooked for too long.
Schools will be expected to close the gap in attainment between children from the most disadvantaged backgrounds and their peers.
We’ve introduced a new secondary accountability system which will no longer concentrate just on the proportion getting 5 GCSEs at A* to C - a flawed approach which perversely incentivised schools and teachers to narrow their focus to just a few subjects and just a few pupils on the C/D borderline.
From 2016, every school will be judged on the progress students make in a combination of 8 subjects (3 from the EBacc , maths and English and 3 other). This will mean that schools in poor areas, which achieve great results for their pupils, get particular credit. It will recognise achievement across all grades, not just between a C and a D - incentivising schools to focus on high-flyers and low-attainers alike. And it will encourage schools to offer (and pupils to study) a broad, balanced range of subjects, including the academic core which is the best possible preparation for employment and further study.
That academic core is the subjects contained in the English Baccalaureate, or EBacc - our new measure looking at how many young people study at least 5 of the essential academic subjects: English and maths, the sciences, foreign languages, history and geography.
Figures from 2012 show that black children were less likely to achieve or enter for the EBacc .
In the country as a whole, 23% of children were entered for the EBacc - but just 18% of black pupils. Sixteen per cent of young people in the country achieved it; just 11% of black children.
But across the whole system, the EBacc has seen the number of children studying those subjects starting to rise.
These increases will help drive up the number of black pupils studying these subjects, in turn - meaning that more BME children leave school with the subjects most prized by employers and universities.
And in London - under the leadership of the mayor - those schools which have the very best record in raising standards for disadvantaged and BME children have been recognised and charged with supporting others to improve. The Mayor’s Gold Club of outstanding schools is a rare - and welcome - example of principled leaders in local government not just accepting the higher standards we have been setting in Whitehall but raising the bar even higher. The beneficiaries of this ambition are the poorest and most disadvantaged children of London - especially those from BME backgrounds.
Since this government came to power we have seen the achievements of black and minority ethnic children improve.
At primary school, the proportion of black children achieving level 4 in maths has risen from 75% in 2010 to 80% in 2012 - narrowing the gap with all children.
And at secondary, the proportion of black children achieving 5 A* to C including English and maths has risen from 49% in 2010 to 55% in 2012 - narrowing the gap with all children from 6 percentage points down to 4.
We have seen more schools than ever before - with more freedoms than ever before - transform the lives of more BME children than ever before - by giving them the sort of opportunities which were once restricted to a privileged few.
But there is more - much more - still to do.
That is why it is so welcome that the Mayor of London is not just driving up standards for BME children through the Gold Club - but also helping us to establish new free schools in areas of deprivation and disadvantage.
That is why it is so welcome that more great educators from within the BME community - Lindsay Johns who works with Leaders of Tomorrow - Dr Tony Sewell of Generating Genius, Devon Hanson of Walworth Academy, and Katharine Birbalsingh who is setting up the new Michaela Community School in Brent - have been given the opportunity to help more young people thanks to our reforms.
And that is why we must not allow the pace of our reform programme to slacken.
Why we must not succumb to what Martin Luther King called the tranquilising drug of gradualism.
Because we have it in our power - in this generation - to fulfil the dream of equality which has inspired so many of the great heroes whose memories we cherish this week.
Published: 22 November 2013


{% extends "base-documentation.html" %} {% block documentation %}
Liftpass supports up to 8 virtual currencies. A virtual currency is a resource the user of the application can earn by means of interacting with the game or by purchasing in bulk via in-app purchase packages. Additionally virtual currencies are those which can be used in a later time in the application to purchase virtual goods.
Below are some examples of virtual currencies in mobile applications
| Application | Currency 1 | Currency 2 | Currency 3 | Currency 4 | Currency 5 | Currency 6 | Currency 7 | Currency 8 |
|---|---|---|---|---|---|---|---|---|
| Boom Beach | Gold | Wood | Stone | Iron | Diamonds | |||
| Zoosk | Coins |
Currencies are represented as an array of 8 elements representing the 8 virtual currencies an application can have. When defining prices for the goods in the application the JSON and CSV and support the pricing of goods as an array. For example in Boom Beach, when the price for upgrading the Gold Storage to Level 8 the price in JSON format would be represented as:
{% highlight 'json' %} { "gold-storage-8":[0, 158000, 40000, 12800, 0, 0, 0, 0] } {% endhighlight %}The first and fourth 0 represents the fact that upgrading this building costs no Gold. The 3 trailing 0's are place holders for the other currencies not actively used in Boom Beach.
Rewards are the things a user gets when they purchase an in-app purchase. The rewards that Liftpass supports are of the virtual currency type. In Boom Beach for example the reward for purchasing the $19.99 "Bag of Diamonds" the reward is 2500 diamonds. In Liftpass this is represented the same way as the price for virtual goods. The JSON equivalent that should be placed in the pricing data for the application would be:
{% highlight 'json' %} { "bag-of-diamonds": [0,0,0,0,2500,0,0,0] } {% endhighlight %}


ALL THE PRETTY HORSES (director: Billy Bob Thornton; screenwriters: Ted Tally/ based on the novel by Cormac McCarthy; cinematographer: Barry Markowitz; editor: Sally Menke; cast: Matt Damon (John Grady Cole), Henry Thomas (Lacey Rawlins), Lucas Black (Jimmy Blevins), Penélope Cruz (Alejandra), Rubén Blades (Rocha), Robert Patrick (Cole), Julio Oscar Mechoso (Captain), Miriam Colon (Alfonsa), Bruce Dern (Judge), Julio Oscar Mechoso (Captain), Sam Shepard (J. C. Franklin); Runtime: 112; Miramax Films and Columbia Pictures; 2000)
Reviewed by Dennis Schwartz
A modern day Western adapted from Cormac McCarthy's National Book Award-winning novel of 1992, which was accurately transferred to film by Ted Tally's script, as it kept the same laconic cowboy dialogue from the book intact, but was reduced considerably from the over three hour length director Billy Bob Thornton originally shot it in, to under two hours, the length the people from Miramax wanted it. It was hard to tell if the film was missing anything because of this deletion, but I did find the film to be directed with a skewed sense of rhythm. There were also too many scenes that failed to go anywhere, making the film dull at times. For a slow moving film, there was the contradiction of scenes happening too fast to be developed and fully realized. As a result, "All the Pretty Horses" failed to be engaging.
If the filmmaker was aiming for an epic, he sure didn't get it in this sometimes elegaic film. What he got is something that plays more like a slick magazine photo shoot on the travails of being a cowboy, or as a touristy travelogue of what the Old West was like, or as a stylish film that can't find what it wants to say and stumbles around in the grimness of a prosaic story about youthful aspirations. What it lacked was some emotional kick, as the scenes where the cowboys show off their spirited exuberance, seemed more portentous than not and just didn't jive with the unsure pace of the film.
What caught my attention in a positive way was how pretty the picturesque vistas were and how the film gave off some good cowboy vibes about friendship and loyalty and had some good cowboy lingo to go along with all the pretty horses and with the hot-blooded senorita played by Penélope Cruz.
The film opens in San Angelo, Texas, in 1949, where John Grady Cole's (Matt Damon) grandfather has just died, leaving the big-spread ranch John was born on to his remarried mother. She is divorced from John's dad and he left the ranch in her hands because he screwed up, and to John's bitter disappointment, she is selling the ranch to an oil company because she has no interest in it or in him, but is interested in the large sum of money she will receive. Since the young man's entire life experience is ranching and his future has just gone up in a cloud of dust, he feels he has no choice but to leave the area. He goes with his loyal sidekick Lacey Rawlins (Henry Thomas) to Mexico to look for ranch work, because that's where the pretty horses are and he can fulfill his fantasy about being a real cowboy there.
It becomes an on-the-trail film, with a love story and a revenge story filling in the life of the youthful cowboy drifters, as everything in the film gets boiled down to a simplicity that is too simple-minded to just accept without asking questions. The pardners motto is stated by John Grady after they cross the Rio Grande and enter the foreign climate of Mexico: He tells the 'doubting' Lacey "stick or quit."And, he further states. "How I was is how I am, and all I know is to stick." Now that's some wicked cowboy talk 'pardner!'
The first danger sign for the two cowboys comes by way of meeting up with a young kid on the trail, Jimmy Blevins (Lucas Black), who says he is 16 and is running away from his mean stepfather and in whom they sense trouble. He is riding a horse the cowboys think is too good for him and surmise he stole it from his stepfather. I found him to be the most interesting one in the film, as he adds his childish stubborness, volatility, homespun humor, tough backbone for fair play, silly superstitions about thunder and brings with him the hard-luck of someone who never had a chance in this world, giving this complacent film, seemingly so self-satisfied with its boring self, a chance to become energized by his maverick portrayal. When Blevens is onscreen, the shallowness of the story doesn't seem to matter, because his coming-of-age story is better than John Grady's.
The kid somehow loses his pretty horse and gun, his two most valuable possessions and winds up taking back his horse and later taking back by force his gun from the Mexican who won't give it up so easily, and thereby the kid winds up in a Mexican jail for murder. When he's out of the picture, the story starts to drag. the film then turns its attention to Matt Damon's coming-of-age story, as he and Lacey rode away from Blevins after he got back his horse, realizing the kid is wreckless and could take them down with him. They ride aimlessly into Mexico until they land jobs as ranch hands. John Grady becomes a wild mustang tamer and a lover of the sexy Alejandra (Penelope Cruz), the daughter of the wealthy Mexican rancher (Blades) and horse breeder he works for, someone with whom he forms an awkward father-son relationship with, as he counsels the ranch owner on what horses to breed (the irony being that the rancher accepts what he says about horses, but rejects him for his daughter).
Mexico becomes for John Grady a place of adventure and romance, but the romance never set off any sparks between him and Cruz, even as its love at first sight, as they scope each other out, and though the two keep telling each other how much they are in love, yet, in this case, seeing is believing...and I'm not believing what I can't see.
The story then plays like a routine melodrama, of the aristocratic father and the protective aunt (Miriam Colon), working to break up the romance to protect the girl's honor. Of the law coming after the two cowboys for being with Blevins, after the aunt and the ranch owner rat them out to the authorities. Of them being confined unfairly in a corrupt Mexican jail and being abused by the cruel police captain (Mechoso), who tortures Blevins before taking him out to be shot, and of their transfer to a slovenly penitentiary, which held some of the most unbelievable scenes yet, where John Grady gets into a staged knife fight in the mess hall with a convict, and there isn't a single prison guard in sight, if you can believe that.
There might have been a good picture in this tale, but it just never kicked in. Everything about the film felt choppy and not certain of the direction it was going in. The star-crossed lovers had no depth or sense of urgency in their lustful romance, and the film spent so much time trying to tie up all the loose-ends about the romance, and yet it had nothing much to say about it, as it always seemed hollow. The revenge tale of going after the Mexican lawman who did them wrong, was also thinly played out and had no teeth in its emotional outbursts. Though the buddy story was well-played between Damon and Thomas, as Damon showed that he could be expressive and wear his changing feelings in a credible way. His problem was, even though he could physically do the cowboy role, I was never convinced that he actually was one. But the most disheartening thing about this film, was how out of whack it seemed, as the story had no staying power, it kept going off the trail, until it looked more like a Marlboro billboard commercial than an enriching story of two decent young men living out their dream to be cowboys. Something must have gotten lost in adapting the book to film, because I couldn't find where the heartfelt story was in all the superficiality I was surrounded by. The real star of this film was the landscape, I couldn't take my eyes off it. I think Penélope Cruz can act (at least she can in an Almodovar film), but in this film she's around only as part of the beautiful scenery. I know Matt Damon can act and he shows in this film that he can let us look inside him, but I don't think he was up to being the romantic lead needed to make this film come alive. Overall the film lacked a psychological breath to get us more involved in the characters. The filmmaker only accomplished showing us simple things, things we already knew, like Mexico's justice system is corrupt while in Texas the judicial system is fair (Ummm!). After his harrowing experience in Mexico, which left him scarred, Matt Damon feels so comfortable with the Texas judicial system, that he has a heart-to-heart talk with a kind-hearted judge (Dern). After seeing that, I didn't know whether to laugh or cry.
REVIEWED ON 1/19/2001 GRADE: C
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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