|
Performs a serializing operation on all store-to-memory instructions that were issued prior the SFENCE instruction. This serializing operation guarantees that every store instruction that precedes in program order the SFENCE instruction is globally visible before any store instruction that follows the SFENCE instruction is globally visible. The SFENCE instruction is ordered with respect store instructions, other SFENCE instructions, any MFENCE instructions, and any serializing instructions (such as the CPUID instruction). It is not ordered with respect to load instructions or the LFENCE instruction.
Weakly ordered memory types can be used to achieve higher processor performance through such techniques as out-of-order issue, write-combining, and write-collapsing. The degree to which a consumer of data recognizes or knows that the data is weakly ordered varies among applications and may be unknown to the producer of this data. The SFENCE instruction provides a performance-efficient way of insuring store ordering between routines that produce weakly-ordered results and routines that consume this data.
|


{%extends 'base.html'%} {%block content%}
Welcome to Trash Talk
A Community Clean-Up Organizer Tool
{%endblock%}


"I've known Scott personally for over 10 years. In the last 6 months, I have gotten to know Scott as the professor at GMBJJWNC. He is a caring and strong leader who will help you advance in your bjj journey. Scott leads the academy from the front and is always there in a hands on way to help develop all of his students in both the kids and adult curriculums. I highly recommend GMBJJWNC to anyone interested in bettering their health in all aspects and learning the art of jiu-jitsu. Not to mention the confidence you gain by knowing you can adequately defend yourself. This academy is clean, inviting, and every student is friendly and welcoming. I look forward to gaining new friendships and training partners in the future who want to become a part of our team family."
"When I first came to a class, I was welcomed and felt like I belonged right from the start. The students look out for each other and really help drive the principles taught. Professor Scott will encourage you to push yourself and grow. His knowledge and experience is weighty and lends to easy-to-understand classes. One of the best decisions I ever made was stepping on those mats."
"I started training at the Gustavo Machado BJJ Academy in Wilson around June of 2020. I had no prior knowledge of Brazilian Jiu Jitsu before I started and had no idea how it was going to impact my life. I was searching for a way to protect myself and found something that has transformed my whole world. In the beginning, I would constantly feel anxious and uncomfortable before stepping on the mat. It was intimidating being one of the few female students but somehow I turned it into a positive experience and it gave me strength. When I am scared, tired, or simply having a bad day, Jiu Jitsu has given me the confidence and discipline needed to overcome these obstacles and more! Honestly, this is one of the best things that has happened to me.  If you have any hesitations: put them behind you, come be a part of a great team, and it will help you reach your full potential."
"I started bjj to make me a better cage fighter. I train at Gustavo Machado Wilson branch because of the people; we all work hard and push each other to get better and achieve our goals, whether it’s to use bjj to get into shape or if you want to be an active competitor. We are a tight knit family, and that’s thanks to our coach Scott Bass; he is one hell of a leader and family man, and a different kind of animal when he is on the mats. I can’t see myself training anywhere else, and can’t wait to see what our team does in the years to come."
"Great place to train! This family is like no other. If you are interested in bjj, then look no further."
"Only easy day was yesterday. Thanks for making us feel at home. Great 1st day. Y'all are an awesome family."
"Great atmosphere with an instructor who is passionate about the lifestyle. He takes the time to explain the academia about the sport along with very hard training. Very hands-on instructor who gives tons of feedback. I suggest anyone interested in taking up the Art come to this school to train. You won’t be disappointed."
"My daughter has only been going 3 months. In just that short amount of time I have seen a huge change in her schooling, self-esteem and confidence. She absolutely loves going. It’s all she talks about. She is just a happier, healthier child all the way around. Scott has done a wonderful job teaching them not only the basics of jiu-jitsu and how to defend themselves against bullies, but to have self confidence in the every day world. Highly recommend them not only for your kids, but the whole family."
"Scott is a great teacher. He is doing great with me and both of my sons. I look forward to every class I can take. My kids are waiting at the door for every lesson."
"Great place to learn jiu-jitsu!!! Scott is as passionate about teaching jiu-jitsu as he is about learning it. His level of detail and methodical approach to teaching is top notch. This is not just a jiu-jitsu school, it is a good jiu-jitsu school."
"Great place to train jiu jitsu with an awesome professor. Scott Bass is great."
"If you're looking for a fun way to lose weight... join this academy. If you're looking to learn some badass Jiu Jitsu... join this academy. If you wanna build friendships and be part of a family... join this academy. I started in November at 300lbs, the heaviest I’ve ever been. Today I’m down 17 pounds. I’ve met new people and can call each member a friend. Invest in yourself; join the Gustavo Machado Brazilian Jiu Jitsu 68th team of Wide Awake Wilson."
"Scott is amazing with my boys! They can't wait for class!!!"
"The absolute best self-defense training in Wilson. We couldn’t be happier."
"Professional and knowledgeable in all aspects of training."


Peter Rabbit and Other Stories
by Beatrix Potter
“The Tale of Mrs. Tiggy-Winkle”
Additional Information
- Year Published: 0
- Language: English
- Country of Origin: England
- Source: Beatrix Potter, The Great Big Treasury of Beatrix Potter
-
Readability:
- Flesch–Kincaid Level: 5.0
- Word Count: 1,475
- Genre: Fantasy
- ✎ Cite This
Downloads
Once upon a time there was a little girl called Lucie, who lived at a farm called Little-town. She was a good little girl—only she was always losing her pocket-handkerchiefs!
One day little Lucie came into the farm-yard crying—oh, she did cry so! “I’ve lost my pocket-handkin! Three handkins and a pinny!
The Kitten went on washing her white paws; so Lucie asked a speckled hen—
“Sally Henny-penny, have YOU found three pocket-handkins?”
But the speckled hen ran into a barn, clucking—
“I go barefoot, barefoot, barefoot!”
And then Lucie asked Cock Robin sitting on a twig. Cock Robin looked sideways at Lucie with his bright black eye, and he flew over a stile and away.
Lucie climbed upon the stile and looked up at the hill behind Little-town—a hill that goes up—up—into the clouds as though it had no top!
And a great way up the hillside she thought she saw some white things spread upon the grass.
Lucie scrambled up the hill as fast as her short legs would carry her; she ran along a steep path-way—up and up—until Little-town was right away down below—she could have dropped a pebble down the chimney!
Presently she came to a spring, bubbling out from the hillside.
Some one had stood a tin can upon a stone to catch the water—but the water was already running over, for the can was no bigger than an egg-cup! And where the sand upon the path was wet—there were footmarks of a VERY small person.
Lucie ran on, and on.
The path ended under a big rock. The grass was short and green, and there were clothes-props cut from bracken stems, with lines of plaited rushes, and a heap of tiny clothes pins—but no pocket-handkerchiefs!
But there was something else—a door! straight into the hill; and inside it some one was singing—
“Lily-white and clean, oh!
With little frills between, oh!
Smooth and hot-red rusty spot
Never here be seen, oh!”
Lucie knocked-once-twice, and interrupted the song. A little frightened voice called out “Who’s that?”
Lucie opened the door: and what do you think there was inside the hill?—a nice clean kitchen with a flagged floor and wooden beams— just like any other farm kitchen. Only the ceiling was so low that Lucie’s head nearly touched it; and the pots and pans were small, and so was everything there.
There was a nice hot singey smell; and at the table, with an iron in her hand, stood a very stout short person staring anxiously at Lucie.
Her print gown was tucked up, and she was wearing a large apron over her striped petticoat.
“Who are you?” said Lucie. “Have you seen my pocket-handkins?”
The little person made a bob-curtsey—“Oh yes, if you please’m; my name is Mrs. Tiggy-winkle; oh yes if you please’m, I’m an excellent clear-starcher!” And she took something out of the clothesbasket, and spread it on the ironing-blanket.

And she ironed it and folded it, and put it on one side.
Then she took something else off a clothes-horse—“That isn’t my pinny?” said Lucie.
“Oh no, if you please’m; that’s a damask table-cloth belonging to Jenny Wren; look how it’s stained with currant wine! It’s very bad to wash!” said Mrs. Tiggy-winkle.
Mrs. Tiggy-winkle’s nose went sniffle sniffle snuffle, and her eyes went twinkle twinkle; and she fetched another hot iron from the fire.
“There’s one of my pocket-handkins!” cried Lucie—“and there’s my pinny!”
Mrs. Tiggy-winkle ironed it, and goffered it, and shook out the frills.
“Oh that IS lovely!” said Lucie.
“And what are those long yellow things with fingers like gloves?”
“Oh that’s a pair of stockings belonging to Sally Henny-penny—look how she’s worn the heels out with scratching in the yard! She’ll very soon go barefoot!” said Mrs. Tiggy-winkle.
“Why, there’s another hankersniff— but it isn’t mine; it’s red?”
“Oh no, if you please’m; that one belongs to old Mrs. Rabbit; and it DID so smell of onions! I’ve had to wash it separately, I can’t get out that smell.”
“There’s another one of mine,” said Lucie.

“And what are you dipping into the basin of starch?”
“They’re little dicky shirt-fronts belonging to Tom Titmouse—most terrible particular!” said Mrs. Tiggy-winkle. “Now I’ve finished my ironing; I’m going to air some clothes.”
“What are these dear soft fluffy things?” said Lucie.
“Oh those are woolly coats belonging to the little lambs at Skelghyl.”
“Will their jackets take off?” asked Lucie.
“Oh yes, if you please’m; look at the sheep-mark on the shoulder. And here’s one marked for Gatesgarth, and three that come from Little-town. They’re ALWAYS marked at washing!” said Mrs. Tiggy-winkle.
And she hung up all sorts and sizes of clothes—small brown coats of mice; and one velvety black moleskin waist-coat; and a red tail-coat with no tail belonging to Squirrel Nutkin; and a very much shrunk blue jacket belonging to Peter Rabbit; and a petticoat, not marked, that had gone lost in the washing—and at last the basket was empty!
Then Mrs. Tiggy-winkle made tea—a cup for herself and a cup for Lucie. They sat before the fire on a bench and looked sideways at one another. Mrs. Tiggy-winkle’s hand, holding the tea-cup, was very very brown, and very very wrinkly with the soap-suds; and all through her gown and her cap, there were HAIRPINS sticking wrong end out; so that Lucie didn’t like to sit too near her.
When they had finished tea, they tied up the clothes in bundles; and Lucie’s pocket-handkerchiefs were folded up inside her clean pinny, and fastened with a silver safety-pin.
And then they made up the fire with turf, and came out and locked the door, and hid the key under the door-sill.
Then away down the hill trotted Lucie and Mrs. Tiggy-winkle with the bundles of clothes!
All the way down the path little animals came out of the fern to meet them; the very first that they met were Peter Rabbit and Benjamin Bunny!
And she gave them their nice clean clothes; and all the little animals and birds were so very much obliged to dear Mrs. Tiggy-winkle.
So that at the bottom of the hill when they came to the stile, there was nothing left to carry except Lucie’s one little bundle.
Lucie scrambled up the stile with the bundle in her hand; and then she turned to say “Good-night,” and to thank the washer-woman.—But what a VERY odd thing! Mrs. Tiggy-winkle had not waited either for thanks or for the washing bill!
She was running running running up the hill—and where was her white frilled cap? And her shawl? And her gown and her petticoat?
And HOW small she had grown— and HOW brown—and covered with PRICKLES!
Why! Mrs.
* * * * * *
(Now some people say that little Lucie had been asleep upon the stile—but then how could she have found three clean pocket-handkins and a pinny, pinned with a silver safety-pin?
And besides—I have seen that door into the back of the hill called Cat Bells—and besides I am very well acquainted with dear Mrs. Tiggy-winkle!)


--- title: Linear Regression author: Vinay Singh date: '2020-03-09' slug: linear-regression categories: - R - Regression tags: - regression - plot - R Markdown ---
Linear Regression is one of the most simple, intuitive, and widely used modeling technique which primarily predicts a quantitative response and thus falls under classification of Supervised Learning. A search on Google Scholar for the term “Linear Regression” returns 4+ million result and there are many good quality courses available online explaining Linear Regression for free. Today there are many sophisticated techniques available for predictive and prescriptive analytics but a solid foundation in Linear Regression is must to understand nuances of modeling before dealing with more advanced techniques.
In it’s simplest form, linear model is expressed as:
\[y = \beta_0 + \beta_1x_1 + \beta_2x_2 + ….. + \beta_kx_k + \epsilon\]
where:
We will use “climate_change” data provided in course The Analytical Edge offered by MIT through edX for this exercise.
There have been many studies documenting that the average global temperature has been increasing over the last century. The consequences of a continued rise in global temperature will be dire. Rising sea levels and an increased frequency of extreme weather events will affect billions of people.
In this problem, we will attempt to study the relationship between average global temperature and several other factors.
The file climate_change.csv contains climate data from May 1983 to December 2008. The available variables include:
We start with loading all required packages we need for data analysis.
library(tidyverse)
library(psych)
library(broom)
library(modelr)
library(ggridges)
library(ggrepel)
library(lubridate)
library(reshape)
library(kableExtra)
Reading data into R is super easy. The read_csv
function allows to read a .csv file into R and takes care of headers and data types automatically. If you need to pass some parameters you can always do that, however most the times it’s not required. You can learn more about read_csv
or any other function by typing ?read_csv
in your R console. It’s worthy to note that read_csv
return a “tibble” whereas read.csv
function returns a data-frame.
# reading data into R
climate <- read_csv("climate_change.csv")
# printing header of climate data
knitr::kable(head(climate)) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
| Year | Month | MEI | CO2 | CH4 | N2O | CFC-11 | CFC-12 | TSI | Aerosols | Temp |
|---|---|---|---|---|---|---|---|---|---|---|
| 1983 | 5 | 2.556 | 345.96 | 1638.59 | 303.677 | 191.324 | 350.113 | 1366.102 | 0.0863 | 0.109 |
| 1983 | 6 | 2.167 | 345.52 | 1633.71 | 303.746 | 192.057 | 351.848 | 1366.121 | 0.0794 | 0.118 |
| 1983 | 7 | 1.741 | 344.15 | 1633.22 | 303.795 | 192.818 | 353.725 | 1366.285 | 0.0731 | 0.137 |
| 1983 | 8 | 1.130 | 342.25 | 1631.35 | 303.839 | 193.602 | 355.633 | 1366.420 | 0.0673 | 0.176 |
| 1983 | 9 | 0.428 | 340.17 | 1648.40 | 303.901 | 194.392 | 357.465 | 1366.234 | 0.0619 | 0.149 |
| 1983 | 10 | 0.002 | 340.30 | 1663.79 | 303.970 | 195.171 | 359.174 | 1366.059 | 0.0569 | 0.093 |
When we’re dealing with an unknown dataset, it’s always a good first step to look at the structure of the dataset. R provides a function str()
exactly for this purpose.
str(climate)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 308 obs. of 11 variables:
## $ Year : num 1983 1983 1983 1983 1983 ...
## $ Month : num 5 6 7 8 9 10 11 12 1 2 ...
## $ MEI : num 2.556 2.167 1.741 1.13 0.428 ...
## $ CO2 : num 346 346 344 342 340 ...
## $ CH4 : num 1639 1634 1633 1631 1648 ...
## $ N2O : num 304 304 304 304 304 ...
## $ CFC-11 : num 191 192 193 194 194 ...
## $ CFC-12 : num 350 352 354 356 357 ...
## $ TSI : num 1366 1366 1366 1366 1366 ...
## $ Aerosols: num 0.0863 0.0794 0.0731 0.0673 0.0619 0.0569 0.0524 0.0486 0.0451 0.0416 ...
## $ Temp : num 0.109 0.118 0.137 0.176 0.149 0.093 0.232 0.078 0.089 0.013 ...
## - attr(*, "spec")=
## .. cols(
## .. Year = col_double(),
## .. Month = col_double(),
## .. MEI = col_double(),
## .. CO2 = col_double(),
## .. CH4 = col_double(),
## .. N2O = col_double(),
## .. `CFC-11` = col_double(),
## .. `CFC-12` = col_double(),
## .. TSI = col_double(),
## .. Aerosols = col_double(),
## .. Temp = col_double()
## .. )
We can see there are 11 “numerical” variables with 308 observations.
Next, we will use summary()
function to get a quick summary of dataset.
summary(climate)
## Year Month MEI CO2
## Min. :1983 Min. : 1.000 Min. :-1.6350 Min. :340.2
## 1st Qu.:1989 1st Qu.: 4.000 1st Qu.:-0.3987 1st Qu.:353.0
## Median :1996 Median : 7.000 Median : 0.2375 Median :361.7
## Mean :1996 Mean : 6.552 Mean : 0.2756 Mean :363.2
## 3rd Qu.:2002 3rd Qu.:10.000 3rd Qu.: 0.8305 3rd Qu.:373.5
## Max. :2008 Max. :12.000 Max. : 3.0010 Max. :388.5
## CH4 N2O CFC-11 CFC-12 TSI
## Min. :1630 Min. :303.7 Min. :191.3 Min. :350.1 Min. :1365
## 1st Qu.:1722 1st Qu.:308.1 1st Qu.:246.3 1st Qu.:472.4 1st Qu.:1366
## Median :1764 Median :311.5 Median :258.3 Median :528.4 Median :1366
## Mean :1750 Mean :312.4 Mean :252.0 Mean :497.5 Mean :1366
## 3rd Qu.:1787 3rd Qu.:317.0 3rd Qu.:267.0 3rd Qu.:540.5 3rd Qu.:1366
## Max. :1814 Max. :322.2 Max. :271.5 Max. :543.8 Max. :1367
## Aerosols Temp
## Min. :0.00160 Min. :-0.2820
## 1st Qu.:0.00280 1st Qu.: 0.1217
## Median :0.00575 Median : 0.2480
## Mean :0.01666 Mean : 0.2568
## 3rd Qu.:0.01260 3rd Qu.: 0.4073
## Max. :0.14940 Max. : 0.7390
In a single line code we can see statistical numerical summary of all variables in dataset. This step is very helpful in identifying outliers or any anomaly in data.
Before we start with model building, it makes sense to get ourselves familiarized with the data. This initial step is known as “Exploratory Data Analysis” or EDA for short. There are no hard and fast rules for this phase. It depends on your intuition and asking meaningful questions as you learn more about the data itself. Lets begin by analyzing each variable one by one.
Temperature is the response variable in this exercise.
# adding Year-Month variable as date
climate1 <- climate %>%
mutate(year_month = ymd(paste(climate$Year, climate$Month, truncated = 1)))
# plotting Tempearture-Year
ggplot(climate1, aes(year_month, Temp)) +
geom_line() +
geom_smooth(se=FALSE, linetype = "dotted") +
labs(title = "Temperature (1983-2010)",
x = "Year",
y = "Temperature") +
theme_minimal()
We can see from the plot that there has been a steady rise in temperature over the years but since 2005 the curve has plateaued off. If its a permanent shift in the trend or seasonality, we don’t know and discussing it is beyond the scope of this post. However, lets see if there’s any seasonality to temperature across the year.
# adding right and left hand sided labels
climate1 <- climate1 %>%
mutate(label_rt = if_else(Month == 12 & Year%%2 == 0,
as.character(Year), NA_character_)) %>%
mutate(label_lt = if_else(Month == 1 & Year%%2 != 0,
as.character(Year), NA_character_))
# creating label zones for left and right sided
x_lt <- c(NA,1)
x_rt <- c(12,NA)
# Temperature Month-wise plot for each year in data
ggplot(climate1, aes(as.factor(Month), Temp)) +
geom_point(aes(color = as.factor(Year))) +
geom_line(aes(group = as.factor(Year),
color = as.factor(Year)),
alpha = 0.7) +
labs(title = 'Temperature by month') +
xlab("Months") +
ylab("Temperature") +
geom_text_repel(aes(label = label_rt, color = as.factor(Year)),
nudge_x = 1, xlim = x_rt) +
geom_text_repel(aes(label = label_lt, color = as.factor(Year)),
nudge_x = 1, xlim = x_lt) +
scale_x_discrete(expand=c(0.1,0),
breaks=c("1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12"),
labels=c("1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12"),
limits=c("-1","1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12", "13"), drop=FALSE) +
theme(legend.position = "none")
We can see that generally the temperature has been steadily rising across years (same as last plot) but I find this plot is little bit cluttered, so lets try another approach and plot a ‘Temperature-density’ distribution.
ggplot(climate1, aes(x = Temp, y = as.factor(Year))) +
geom_density_ridges_gradient(aes(fill = ..x..),
scale = 3, size = 0.3, alpha = 0.) +
geom_vline(xintercept = 0.5, alpha = 0.5, color = "red", linetype = "dotted") +
scale_fill_gradientn(colours = c("#87CEFA", "#FFFFE0", "#FF0000"),
name = "Temp") +
labs(title = 'Temperature density',
subtitle = "Temperature is difference in degrees Celsius between the \n average global temperature in that period and a reference value") +
theme(legend.position = c(0.9,0.2)) +
xlab("Temperature") +
ylab("Year") +
theme_classic()
The plot reveals that for last few decades we have a permanent shift towards higher temperature. Although there is a dip from 2005 through 2008 as we did see in other plots, we notice that that extreme temperatures (>0.5°C) occurred in all years since 2000.
MEI i.e. “Multivariate El Nino Southern Oscillation index by Year” is a prime predictor for global climate disruptions. MEI is a time series type of data and its a combination of multiple variables which contains both atmospheric and oceanic variables. Real time monitoring of MEI enables goverments to tackle regional issue affected by climate and plan for food and water supply, health and safety etc.
climate1 %>%
arrange(year_month) %>%
ggplot() +
geom_line(aes(year_month, MEI, color = MEI), size = 1) +
scale_color_gradient2(low = 'blue', high = 'red') +
labs(title = "Multivariate El Nino Southern Oscillation index by Year",
caption = "Source: ESRL/NOAA Physical Sciences Division") +
xlab("Year") +
ylab("MEI") +
theme(plot.title = element_text(hjust = 0.5)) +
theme_minimal()
There is definitely a seasonality to MEI but not a continuous positive or negative trend over the years.
Carbon dioxide is a Greenhouse house which traps the solar enegery and helps warm up the planet. Since Industrial revolution humans have significantly contributed to natrually occurring \(CO_2\) levels which might have significant impact on increasing Global temperature. The \(CO_2\) levels have been constantly increasing in atmosphere since this data is collected. In model building it’d be interesting to know how does temperature correlate with \(CO_2\) levels.
climate1 %>%
arrange(year_month) %>%
ggplot(aes(year_month, CO2)) +
geom_line() +
geom_smooth(se = FALSE, linetype = "dotted", color = "red") +
labs(title = "Carbon-dioxide by Year",
caption = "Source: ESRL/NOAA Global Monitoring Division") +
xlab("Year") +
ylab("CO2 (ppmv)") +
theme(plot.title = element_text(hjust = 0.5)) +
theme_classic()
Methane is also a Greenhouse gas and traps more energy than Carbon dioxide. We can see that its levels are on constantly rise too, however we notice that the curve has somewhat flattened around 2000.
climate1 %>%
arrange(year_month) %>%
ggplot(aes(year_month, CH4)) +
geom_line() +
geom_smooth(se=FALSE, linetype = "dotted", color = "red") +
labs(title = "Methane by Year",
caption = "Source: ESRL/NOAA Global Monitoring Division") +
xlab("Year") +
ylab("CH4 (ppmv)") +
theme(plot.title = element_text(hjust = 0.5)) +
theme_classic()
Nitrous Oxide, another Green House gas, has lot more Global Warming Potential (GWP) than \(CO_2\) or \(N_2O\). As we can see all 3 biggest man-made contributor to Greenhouse gases are on constant rise.
climate1 %>%
arrange(year_month) %>%
ggplot() +
geom_line(aes(year_month, N2O)) +
labs(title = "Nitrous Oxide by Year",
caption = "Source: ESRL/NOAA Global Monitoring Division") +
xlab("Year") +
ylab("N2O (ppmv)") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5))
We can see from the plots below that after rising steadily through 1995-2000 there is a decline in levels of CFC-11 and CFC-12. Read more about Kyoto protocol and Montreal protocol to understand the drivers behind this decline.
cfc11 <- climate1 %>%
arrange(year_month) %>%
ggplot() +
geom_line(aes(year_month, `CFC-11`)) +
labs(title = "CFC-11",
caption = "Source: ESRL/NOAA Global Monitoring Division") +
xlab("Year") +
ylab("CFC-11 (ppbv)") +
theme_classic()
cfc12 <- climate1 %>%
arrange(year_month) %>%
ggplot() +
geom_line(aes(year_month, `CFC-12`)) +
labs(title = "CFC-12",
caption = "Source: ESRL/NOAA Global Monitoring Division") +
xlab("Year") +
ylab("CFC-12 (ppbv)") +
theme_classic()
gridExtra::grid.arrange(cfc11, cfc12, nrow=1)
TSI pattern exhibits a 10 year cycle or at least that’s what it looks like from the plot. I was interested to know more about it so I googled “total solar irradiance cyclic?” and it took me to Solar Cycle wiki page which explains that “The solar cycle or solar magnetic activity cycle is the nearly periodic 11-year change in the Sun’s activity (including changes in the levels of solar radiation and ejection of solar material) and appearance (changes in the number and size of sunspots, flares, and other manifestations).”
climate1 %>%
arrange(year_month) %>%
ggplot(aes(year_month, TSI)) +
geom_line() +
labs(title = "Total Solar Irradiance (TSI)",
caption = "Source: SOLARIS-HEPPA project") +
xlab("Year") +
ylab("TSI (W/m^2)") +
theme_classic()
Well at first glance it looks like something is off. The peak around 1992 looks like an anomaly or some data issue. However, if you go to Godard Institure for Space Studies at NASA website, you’ll notice that there is no problem with this data. It is accurate and a bit of research will tell you that in 1991 Mount Pinatubo erupted causing Aerosols to form a global layer of sulfuric acid haze which caused global temperatures to drop by 0.5°C.
climate1 %>%
arrange(year_month) %>%
ggplot() +
geom_line(aes(year_month, Aerosols)) +
labs(title = "Mean Stratospheric Aerosol Optical Depth at 550 nm",
caption = "Source: Godard Institute for Space Studies at NASA") +
xlab("Year") +
ylab("AOD")
In Machine Learning its pretty common to divvy up data between training and testing set. Training set is primarily used to understand the relationship between a) response and predictor variables and b) relationship among predictors. We then use the generated hypothesis on testing dataset to check the strength of model.
There are many ways to split up data. One way could be to just randomly split data in whatever ratio makes sense either 60/40 or 80/20. This approach makes sense if there isn’t a particular pattern in the response variable. However, say if you have a qualitative response variable such as “Yes” or “No”, “Democrat” or “Republican” etc., in that case you want to make sure that the testing and training dataset retain the same proportion of “response” as in original dataset. There are multiple approaches to do that and we will discuss some of those in upcoming posts.
For climate dataset, we’ll put data for all years including and before year 2006 in training set and the rest in testing set.
climate_train <- climate %>%
filter(Year <= 2006)
climate_test <- climate %>%
filter(Year > 2006)
Simple Linear Regression looks like this: \[Y = \beta_0 + \beta_1X + \epsilon\] where ‘Y’ is the response variable and ‘X’ is the predictor variable. In essence there is only one predictor variable. To build a simple linear regression lets use \(CO_2\) as predictor variable.
Before we build a Simple Linear model, lets understand what a “Baseline model” is and build one. A Baseline model predicts a unique value for a quantitative response variable or the most common value for qualitative/classification response variables. For example, if you’re predicting rainfall for next month, a baseline model will use average of all monthly rainfall data as a prediction, however, if you’re trying to predict who wins the next soccer world cup, a baseline model will look at team with highest wins and it’ll simply predict that team to win. In this particular example, baseline model will always predict the average temperature, which is:
mean(climate_train$Temp)
## [1] 0.2477993
Plotting Baseline model against \(CO_2\) will look like:
climate_train_baseline <- climate_train %>%
mutate(baseline_temp = mean(Temp))
ggplot(climate_train_baseline, aes(CO2, baseline_temp)) +
geom_point(alpha = 0.2) +
stat_smooth(geom = "line", se = FALSE, color = "red", alpha = 0.8) +
labs(title = "Baseline Temperature-CO2 model",
x = "CO2",
y = "Baseline Temperature") +
theme(plot.title = element_text(hjust = 0.5))
Basically, as stated above, this model will always predict same value for Temperature regardless of \(CO_2\) value. The error of this model, defined as difference between actual and predicted values, can be calculated as following:
climate_train_baseline <- climate_train_baseline %>%
mutate(error = Temp - baseline_temp)
ggplot(climate_train_baseline, aes(CO2, error)) +
geom_point(aes(color = ifelse(error > 0, "red", "blue"))) +
scale_color_identity() +
labs(title = "Error plot for Baseline model",
x = "CO2",
y = "Error")
We can see that we have, both, the positive and negative type of errors and they are distributed uniformly on both sides of zero. Above is a great plot to analyze errors visually but to compare the accuracy and strength of models we use few other statistics such as ‘Sum of Squared Errors’, ‘Root Mean Squared Errors’, ‘R-square’ etc.
The ‘Sum of Squared Errors’ (SSE) for baseline model is calculated as:
\[SSE = \sum_{i=1}^N(X_i - \bar{X})^{2} \]
(SSE_baseline <- sum(climate_train_baseline$error^2))
## [1] 9.285256
Note that SSE of Baseline model is also known as SST i.e Sum of Squared Total Errors.
SSE is a good indicator of model accuracy but it’s dependent on number of observations (N). So if we double the observation the model SSE will double as well which is NOT good for assessing accuracy of model, hence we use ‘Root Mean Squared Error’ (RMSE) which is basically square root of SSE divided by N.
\[RMSE = \sqrt[]{\frac{SSE}{N}}\]
(RMSE_baseline <- sqrt(SSE_baseline/nrow(climate_train_baseline)))
## [1] 0.1808164
Now we understand our baseline model so we’re ready to build our Simple Linear model.
\[Temp = \beta_0 + \beta_1*CO_2 + \epsilon \]
model1 <- lm(Temp ~ CO2, data = climate_train)
We can look at summary of model by using summary()
function
summary(model1)
##
## Call:
## lm(formula = Temp ~ CO2, data = climate_train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.31912 -0.07819 -0.00129 0.05805 0.43420
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.2646515 0.2096815 -20.34 <2e-16 ***
## CO2 0.0124855 0.0005799 21.53 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1116 on 282 degrees of freedom
## Multiple R-squared: 0.6218, Adjusted R-squared: 0.6204
## F-statistic: 463.6 on 1 and 282 DF, p-value: < 2.2e-16
We observe that coefficient of \(CO_2\) is 0.012 which means that for every increase of 10 ppmv of \(CO_2\), the temperature difference will increase by 0.12°C. The p value establishes that coefficient is significant.
Note: \(R^2\) ( = 1 - \(\frac{SSE}{SST}\)) depends on SSE and SST (SST is SSE of baseline). \(R^2\) value of model built using training dataset is anywhere between 0 and 1. A value of 0 means no improvement over Baseline and 1 means perfect Predictive model. In other words, \(R^2\) tells us how better our model is than Baseline model. The \(R^2\) for Simple model is 0.6218 which is significant improvement over Baseline model.
The summary()
function also outputs ‘Adjusted \(R^2\)’, which adjusts the ‘Multiple \(R^2\)’ to account for the number of independent variables used relative to the number of data points. ‘Multiple \(R^2\)’ will always increase if you add independent variable whereas ‘Adjusted \(R^2\)’ will decrease if you add independent variable which decreases the quality of the model.
Lets calculate SSE and RMSE for Simple Linear model:
climate_train <- climate_train %>%
add_predictions(model1) %>%
mutate(error_simple = Temp - pred)
(SSE_simple_model = sum(climate_train$error_simple^2))
## [1] 3.511885
(RMSE_simple_model = sqrt(SSE_simple_model)/nrow(climate_train))
## [1] 0.0065986
We can see that Simple Model has significantly less SSE and RMSE compared to Baseline model.
We’re working with a single variable model and we can already see its much better than baseline model. Now lets plot the estimate versus actual data points for a Temperature-Carbon-dioxide plot.
aug_model1 <- augment(model1, climate_train)
ggplot(aug_model1, aes(CO2, Temp)) +
geom_point(color = "red") +
geom_smooth(method = "lm", color = "blue", se = FALSE) +
geom_segment(aes(x = CO2, xend = CO2,
y = Temp, yend = aug_model1$.fitted), alpha = 0.5) +
ggtitle("Regression Error") +
theme_classic()
The summary()
function is great to see relevant stats of a model but accessing the results from summary()
is difficult as it’s not in a data frame or tibble format. Luckily, we can just do that using tidy()
function from broom
package. It’s a very handy tool for writing reports or futher analysis.
tidy(model1)
## # A tibble: 2 x 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) -4.26 0.210 -20.3 3.13e-57
## 2 CO2 0.0125 0.000580 21.5 1.74e-61
There are few ways we can assess accuracy of the model built against the raw data.
We can see that the \(R^2\) is 0.6217783 and adjusted \(R^2\) is 0.6204371 but we don’t know if its better or not since we haven’t build any other model. But we know its an improvement of ~62% over baseline model. We can look up all three values using glance()
function from broom()
package.
glance(model1)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.622 0.620 0.112 464. 1.74e-61 2 221. -436. -425.
## # … with 2 more variables: deviance <dbl>, df.residual <int>
As we can see R-squared value is 0.622 (1 is perfect prediction), Residual Standard Error (RSE) is 0.112 (minimize as much as possible), and F-statistics is 463.594 (larger the better).
We have our model ready, now we can use this model on to predict temperature changes on unseen data and assess its accuracy.
climate_test <- climate_test %>%
add_predictions(model1)
climate_test %>%
select(Temp, pred)
## # A tibble: 24 x 2
## Temp pred
## <dbl> <dbl>
## 1 0.601 0.516
## 2 0.498 0.527
## 3 0.435 0.537
## 4 0.466 0.560
## 5 0.372 0.562
## 6 0.382 0.555
## 7 0.394 0.536
## 8 0.358 0.505
## 9 0.402 0.491
## 10 0.362 0.494
## # … with 14 more rows
Calculate Mean Squared Error (MSE)
# MSE (Mean Square Error)
climate_test %>%
summarise(MSE = mean((Temp - pred)^2))
## # A tibble: 1 x 1
## MSE
## <dbl>
## 1 0.0438
We’re going to compare model1 against other models in next section.
A Multiple Linear Regression is in the form of: \[Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + ….. + \beta_kX_k + \epsilon \]
We can build a model where Temperature depends on all other variables except Year and Month.
Lets take a look at the summary()
of this model.
summary(model2)
##
## Call:
## lm(formula = Temp ~ MEI + CO2 + CH4 + N2O + `CFC-11` + `CFC-12` +
## TSI + Aerosols, data = climate_train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.25888 -0.05913 -0.00082 0.05649 0.32433
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.246e+02 1.989e+01 -6.265 1.43e-09 ***
## MEI 6.421e-02 6.470e-03 9.923 < 2e-16 ***
## CO2 6.457e-03 2.285e-03 2.826 0.00505 **
## CH4 1.240e-04 5.158e-04 0.240 0.81015
## N2O -1.653e-02 8.565e-03 -1.930 0.05467 .
## `CFC-11` -6.631e-03 1.626e-03 -4.078 5.96e-05 ***
## `CFC-12` 3.808e-03 1.014e-03 3.757 0.00021 ***
## TSI 9.314e-02 1.475e-02 6.313 1.10e-09 ***
## Aerosols -1.538e+00 2.133e-01 -7.210 5.41e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.09171 on 275 degrees of freedom
## Multiple R-squared: 0.7509, Adjusted R-squared: 0.7436
## F-statistic: 103.6 on 8 and 275 DF, p-value: < 2.2e-16
This is not a bad model. Our \(R^2\) increased from 0.622 to 0.751 and there are few significant predictors. It appears to be a better model than the simple linear model, however, there is a problem associated with this model, Collinearity.
Collinearity or Multicollinearity exists when there are two or more highly correlated variables in the predictor set. Because of this high collinearity among variables, it’s difficult to explain the variation in the dataset and which variable caused it. In short, we need to deal with this issue and the easiest way is to drop one or few highly collinear variables.  However, there is a better way to visualize collinearity matrix using corrplot
package.
library(corrplot)
x <- cor(climate_train)
corrplot.mixed(x, lower = "number", upper = "square", number.cex = 0.7,
order = "hclust")
We can see that variable \(N_2O\) and \(CH_4\) have high correlation with other variables, so we can drop them from the dataset and build another model.
model3 <- lm(Temp ~ MEI + CO2 + `CFC-11` + `CFC-12` + TSI + Aerosols,
data = climate_train)
summary(model3)
##
## Call:
## lm(formula = Temp ~ MEI + CO2 + `CFC-11` + `CFC-12` + TSI + Aerosols,
## data = climate_train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.26799 -0.06002 -0.00323 0.05651 0.33074
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.223e+02 1.991e+01 -6.139 2.86e-09 ***
## MEI 6.421e-02 6.465e-03 9.932 < 2e-16 ***
## CO2 4.061e-03 1.928e-03 2.106 0.036112 *
## `CFC-11` -4.314e-03 1.109e-03 -3.891 0.000125 ***
## `CFC-12` 2.430e-03 6.431e-04 3.778 0.000194 ***
## TSI 8.852e-02 1.461e-02 6.060 4.44e-09 ***
## Aerosols -1.567e+00 2.132e-01 -7.347 2.28e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.09201 on 277 degrees of freedom
## Multiple R-squared: 0.7475, Adjusted R-squared: 0.742
## F-statistic: 136.6 on 6 and 277 DF, p-value: < 2.2e-16
There is another method in R to work through this. R provides a step function which returns a model with optimized AIC. If we use model2 which contains all variables, step will figure out which variables to drop to maximize the accuracy of the model.
model4 <- step(model2)
## Start: AIC=-1348.16
## Temp ~ MEI + CO2 + CH4 + N2O + `CFC-11` + `CFC-12` + TSI + Aerosols
##
## Df Sum of Sq RSS AIC
## - CH4 1 0.00049 2.3135 -1350.1
## <none> 2.3130 -1348.2
## - N2O 1 0.03132 2.3443 -1346.3
## - CO2 1 0.06719 2.3802 -1342.0
## - `CFC-12` 1 0.11874 2.4318 -1335.9
## - `CFC-11` 1 0.13986 2.4529 -1333.5
## - TSI 1 0.33516 2.6482 -1311.7
## - Aerosols 1 0.43727 2.7503 -1301.0
## - MEI 1 0.82823 3.1412 -1263.2
##
## Step: AIC=-1350.1
## Temp ~ MEI + CO2 + N2O + `CFC-11` + `CFC-12` + TSI + Aerosols
##
## Df Sum of Sq RSS AIC
## <none> 2.3135 -1350.1
## - N2O 1 0.03133 2.3448 -1348.3
## - CO2 1 0.06672 2.3802 -1344.0
## - `CFC-12` 1 0.13023 2.4437 -1336.5
## - `CFC-11` 1 0.13938 2.4529 -1335.5
## - TSI 1 0.33500 2.6485 -1313.7
## - Aerosols 1 0.43987 2.7534 -1302.7
## - MEI 1 0.83118 3.1447 -1264.9
We can numerically compare quality of all four models.
list(model1 = broom::glance(model1),
model2 = broom::glance(model2),
model3 = broom::glance(model3),
model4 = broom::glance(model4))
## $model1
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.622 0.620 0.112 464. 1.74e-61 2 221. -436. -425.
## # … with 2 more variables: deviance <dbl>, df.residual <int>
##
## $model2
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.751 0.744 0.0917 104. 1.94e-78 9 280. -540. -504.
## # … with 2 more variables: deviance <dbl>, df.residual <int>
##
## $model3
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.747 0.742 0.0920 137. 9.15e-80 7 278. -540. -511.
## # … with 2 more variables: deviance <dbl>, df.residual <int>
##
## $model4
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.751 0.745 0.0916 119. 1.77e-79 8 280. -542. -509.
## # … with 2 more variables: deviance <dbl>, df.residual <int>
It is interesting to note that the step function does not address the collinearity of the variables, except that adding highly correlated variables will not improve the \(R^2\) significantly. The consequence of this is that the step function will not necessarily produce a very interpretable model - just a model that has balanced quality and simplicity for a particular weighting of quality and simplicity (AIC). Looking at the data above its clear that model2, model3 and model4 are roughly same in terms of quality.
Personally I’d use model3 for its interpretability and also because it addresses collinearity issue head on.
So far we compared the models numerically which is great but we should also assess model strength visually. We will choose model3 for this analysis. In each model a visual study of residuals can provide valuable insights.
aug_model3 <- augment(model3, climate_train)
ggplot(aug_model3, aes(.resid)) +
geom_histogram(aes(y = ..density..), color = "black", fill = "white") +
stat_function(fun = dnorm, color = "red",
args = list(mean = mean(aug_model3$.resid, na.rm = TRUE),
sd = sd(aug_model3$.resid, na.rm = TRUE))) +
xlab("Residuals from model3")
The plot clearly shows that the “residuals” of the model follow normal distribution which is as per our expectation.
ggplot(aug_model3, aes(.fitted, .resid)) +
geom_ref_line(h = 0) +
geom_point(aes(color = as.factor(Year)), alpha = 0.6) +
geom_smooth(se = FALSE) +
ggtitle("Residuals vs Fitted") +
xlab("Fitted values (Predictions)") +
ylab("Residuals (Actual - Predicted values)") +
labs(color = "Year")
In this plot we expect a sort of horizontal line at .resid = 0 and equal and homogeneous distribution of points on either side of line. Above model satisfies both requirement. If there was a non-linear relationship between predictor variables and the response variable then it’d shows up in this plot.
ggplot(aug_model3, aes(.fitted, .std.resid)) +
geom_ref_line(h = 0) +
geom_point(aes(color = as.factor(Year)), alpha = 0.6) +
geom_smooth(se = FALSE) +
ggtitle("Standardized Residual vs Fitted") +
xlab("Fitted values (Predictions)") +
ylab("Standardized Residuals") +
labs(color = "Year")
Interpretation of above plot is similar to Residual vs. Fitted values
Scale-Location plot explains if the residuals are spread evenly along the range of predictors. This plot is used to check the assumption of equal variance (homoscedasticity). We have scattered points equally on both side of line and the line is roughly horizontal and both of these two are good indicator of a robust and accurate model.
ggplot(aug_model3, aes(.fitted, sqrt(abs(.std.resid)))) +
geom_ref_line(h = 0) +
geom_point(aes(color = as.factor(Year)), alpha = 0.6) +
geom_smooth(se = FALSE) +
ggtitle("Scale-Location") +
xlab("Fitted values (Predictions)") +
ylab("sqrt(Standardized Residuals)") +
labs(color = "Year")
We plotted residuals to check for their normality in first plot of this section. We can also use Q-Q plot. If data points fall on an imaginary straight line that indicates normal distribution while any skewness is not a good sign. The plot clearly shows a normal distribution, there are some data points towards the head and tail observations which deviate from the normal line but that’s not too bad. In real world data, this is expected.
ggplot(aug_model3, aes(sample = .resid)) +
stat_qq(alpha = 0.3) +
stat_qq_line(color = "blue") +
ggtitle("Normal Q-Q Plot") +
xlab("Theoretical Quantiles") +
ylab("Sample Quantiles")
In Regression we always look for outliers with our belief being that outliers cause distortion to our model and must be avoided at all costs. However, that’s nor true at all, infact outliers can explain something deep about the environment or structure of dataset and should be studied very carefully. Also outliers don’t necessarily influence regression model as much as we think. Sometimes you’d notice that it doesn’t matter if you include or exclude the outlier from the dataset, their impact is marginal. However there is another set of observations which may impact the quality of model even if you change the observation little bit. Obviously we’re very interested in studying these observations and their impact. That’s where this plot comes in picture. I’m using base R for these two plots.
From Residual vs. Leverage plot we can’t even see the Cook’s distance line as all observations are well within Cook’s distance lines. It indicates absence of any influential observation.
plot(model3, which = 4, id.n = 5)
# id.n identifies "n" top outlier observations
plot(model3, which = 5, id.n = 5)
Having analyzed the model on training data both, numerically and visually, we’re now ready to make prediction on the testing dataset. We will use model3 for predictions.
(climate_test <- climate_test %>%
add_predictions(model3)) %>%
select(Temp, pred, everything())
## # A tibble: 24 x 12
## Temp pred Year Month MEI CO2 CH4 N2O `CFC-11` `CFC-12` TSI
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0.601 0.488 2007 1 0.974 383. 1800. 321. 248. 539. 1366.
## 2 0.498 0.462 2007 2 0.51 384. 1803. 321. 248. 539. 1366.
## 3 0.435 0.442 2007 3 0.074 385. 1803. 321. 248. 539. 1366.
## 4 0.466 0.440 2007 4 -0.049 386. 1802. 321. 248. 539. 1366.
## 5 0.372 0.454 2007 5 0.183 387. 1796. 320. 247. 538. 1366.
## 6 0.382 0.423 2007 6 -0.358 386. 1782. 320. 247. 537. 1366.
## 7 0.394 0.421 2007 7 -0.290 384. 1772. 320. 246. 537. 1366.
## 8 0.358 0.403 2007 8 -0.44 382 1779. 320. 246. 537. 1366.
## 9 0.402 0.349 2007 9 -1.16 381. 1794. 321. 246. 537. 1366.
## 10 0.362 0.354 2007 10 -1.14 381. 1802. 321. 246. 537. 1366.
## # … with 14 more rows, and 1 more variable: Aerosols <dbl>
Comparing MSE of model3 versus model1:
climate_test %>%
gather_predictions(model1, model3) %>%
group_by(model) %>%
summarise(MSE = mean((Temp-pred)^2))
## # A tibble: 2 x 2
## model MSE
## <chr> <dbl>
## 1 model1 0.0438
## 2 model3 0.0104
This clearly shows that when we use model1 and model3 for out of sample prediction, model3 is still a much better model with very low MSE.
In this post we learned:
Please know the purpose of the post was as stated above and not to make any comment on current politics around climate change. I leave it up to the climate science experts, free economy market and political leadership to figure that out.


Kate Meets an Old Friend in New Batwoman Episode 7 Promo
by Tudor LeonteA new promo for the upcoming Batwoman Episode 7 has made its way to the web. Next week, Kate will have to deal with her past as she encounters an old friend. The synopsis of “Tell Me the Truth” reads:
Kate (Ruby Rose) and Sophie (Meagan Tandy) must reconcile with their past as Kate questions just how much she can trust her former lover. Kate and Luke (Camrus Johnson) have an encounter with an old friend. Mary (Nicole Kang) grapples with the fate of the Kane family as Catherine (Elizabeth Anweis) seeks Jacob’s (Dougray Scott) help. Alice (Rachel Skarsten) and a new cohort are in on yet another nefarious plan, but her motives are more than they seem.
Michael Allowitz directed the episode written by Caroline Dries and Natalie Abrams. You can watch the new Batwoman Episode 7 promo in the player below. Then check out the promotional photos in the gallery below.
RELATED – Listen to Alice’s Long and Sad Tale in New Batwoman Episode 5 Promo
After a dishonorable discharge from military school and years of brutal survival training, Kate returns home when the Alice in Wonderland gang targets her father and his security firm, by kidnapping his best Crow officer Sophie Moore (Meagan Tandy). Although remarried to wealthy socialite Catherine Hamilton-Kane (Elizabeth Anweis), who bankrolls the Crows, Jacob still struggles with the family he lost, while keeping Kate — the daughter he still has — at a distance.
Based on the characters from DC, Batwoman comes from Berlanti Productions in association with Warner Bros. Television with executive producers Greg Berlanti, Caroline Dries, as well as Geoff Johns, and Sarah Schechter. Additionally, David Nutter and Marcos Siega executive produced the pilot.
The next episode of Batwoman airs November 17 on The CW.


From:
To:
Patient:
Relatives:
Reason for contact:
Status:
Care Provider:
Completed activities:
{{ tag.display }}
No additional information
Questionnaires:
More details
ua
Notes:
Planned activities:


Browser Hotkey Test
All Posts
define hotkey
post 1
post 2
post 3
post 4
post 5
post 6
post 7
post 8
post 9
post 10


I am currently building a dino, pls let me do my job
Why does python live on land? It's above C level.
Ive got a really good UDP joke to tell you, but I don't know if you'll get it
The more I C, the less I see.
Why is it that women find C to be more attractive than Java?Because C doesn't treat them like objects.
This has been a while, maybe try refreshing the page?


9. Unit Tests
The Three Laws of TDD
"TDD asks us to write unit tests first, before we write production code."
First Law You may not write production code until you have written a filing unit test.
Second Law You may not write more of a unit test than is sufficient to fail, and not compiling is failing.
Third Law You may not write more production code than is sufficient to pass the currently failing test.
"The tests and the production code are written together, with the tests just a few seconds ahead of the production code."
"If we work this way, those tests will cover virtually all of our production code."
Keeping Tests Clean
"having dirty tests is equivalent, if not worse than, having no tests. The problem is that tests must change as the production code evolves. The dirtier the tests, the harder they are to change."
"Test code is just as important as production code. It is not a second-class citizen. It requires thought, design, and care. It must be kept as clean as production code."
Tests Enable the -ilities
"It is unit tests that keep our code flexible, maintainable, and reusable. The reason is simple. If you have tests, you do not fear making changes to the code! Without tests every change is a possible bug."
"The higher your test coverage, the less you fear."
"So having an automated suite of unit tests that cover the production code is the key to keeping your design and architecture as clean as possible. Tests enable all the -illities, because tests enable change."
"The dirtier your tests, the dirtier your code becomes. Eventually you lose the tests, and your code rots."
Clean Tests
"What makes a clean test? Three things. Readability, readability, and readability. Readability is perhaps even more important in unit tests than it is in production code. What makes tests readable? The same thing that makes all code readable: clarity, simplicity, and density of expression."
[In this chapter there is an example about how to craft your own functions and use them in tests in order to make tests more easier to understand at first look.]
Domain-Specific Testing Language
"Rather than using the APIs that programmers use to manipulate the system, we build up a set of functions and utilities that make use of those APIs and that make the tests more convenient to write and easier to read."
"This testing API is not designed up front; rather it evolves from the continued refactoring of test code that has gotten too tainted by obfuscating detail."
A Dual Standard
"The code within the testing API does have a different set of engineering standards than production code. It must still be simple, succinct, and expressive, but it need not be as sufficient as production code."
[There is an example in this section, consider searching it if you are curious - page 128]
"There are things that you might never do in a production environment that are perfectly fine in a test environment. Usually they involve issues of memory or CPU efficiency. But they never involve issues of cleanliness."
One Assert per Test
"I think the single assert rule is a good guideline. I usually try to create a domain-specific testing language that supports it [...]. But I am not afraid to put more than one assert in a test. I think the best thing we can say is that the number of asserts in a test ought to be minimized."
Single Concept per Test
"Perhaps a better rule is that we want to test a single concept in each test function. We don't want long test functions that go testing one miscellaneous thing after another."
"So probably the best rule is that you should minimize the number of asserts per concept and test just one concept per test function."
F.I.R.S.T.
"Clean tests follow five other rules that form the above acronym:"
Fast Tests should be fast. They should run quickly. When tests run slow, you won't want to run them frequently. If you don't run them frequently, you won't find problems early enough to fix them easily. You won't feel as free to clean up the code. Eventually the code will begin to rot.
Independent Tests should not depend on each other. One test should not set up the conditions for the next test. You should be able to run each test independently and run the tests in any order you like. When tests depend on each other, then the first one fail causes a cascade of downstream failures, making diagnosis difficult and hiding downstream defects.
Repeatable Tests should be repeatable in any environment. You should be able to run the tests in the production environment, in the QA environment, and on your laptop while riding home on the train without a network. If your tests aren't repeatable in any environment, then you'll always have an excuse for why they fail. You'll also find yourself unable to run the tests when the environment isn't available.
Self-Validating The tests should have a boolean output. Either they pass or fail. You should not have to read through a log file to tell whether the tests pass. You should not have to manually compare two different text files to see whether the tests pass. If the tests aren't self-validating, then failure can become subjective and running the tests can require a long manual evaluation.
Timely The tests need to be written in a timely fashion. Unit tests should be written just before the production code that makes them pass. If you write tests after the production code, then you may find the production code to be hard to test. You may decide that some production code is too hard to test. You may not design the production code to be testable.


Our sister company, Leviathan acquired the project to build
They were looking for a clean and simple way to show their guests about their company
The way CGI would do this -> an interactive displays with insights into the company
An added bonus: Their guests feel like the company is up to cool stuff
Requirements
Create a stand alone application
It had be interactive, with a clean and concise user interface
The content had to be controlled via a CMS
Deliver the app before their office opened - short turn around
Upfront Challenges
Make boring content be somewhat interesting - easily consumed
Building a stand alone application
No actual touch device to test on
Implementation
First Steps
Pick the stack:
Electron
React + Redux
WebGL
Wordpress using WP-JSON
Implementation
Starting the work
Talk with the team involved
Find a boilerplate
Familiarize with the new tools
Conceptualize the app's architecture
Implementation
Specific Challenges
Getting the animations just right. GSAP or CSS? 🤔
Ensuring the app works like it should on a touch device
Adding some amount of 'native' feel to app. 'Not a website...'
Keeping a high FPS. The app is the user's sole focus
Missing client feedback 👻
Implementation
Code Details
Getting the data needed for the app
A common pattern used through out the app for the transitioning of components
...How the app's components would be shown/hidden in CSS
This is what controls which components to show and the 'level' that the application is at


Man taken to hospital after Oldbury smash
The crash happened on Churchbridge last night (November 18) at around 7.30pm
by Charlotte Regen, https://www.birminghammail.co.uk/authors/charlotte-regen/A man has been hospitalised after a van and car crashed.
Medics rushed to the scene on Churchbridge, Oldbury, at around 7.30pm, last night (Monday, November 18).
The van driver was taken to Sandwell hospital as a precaution after he suffered minor injuries.
A man and a woman - who were in the car - were discharged at the scene.
A spokesman for West Midlands Ambulance Service said: “We were called at 7.30pm last night to Churchbridge in Oldbury to reports of a crash between a van and car.
"We sent an ambulance and two paramedic officers to the scene where they assessed three patients. One man, who was the driver of the van was taken to Sandwell Hospital as a precaution following treatment for minor injuries.
"Another man, who was the driver of the car, and a woman, who was the passenger in the same vehicle were discharged on scene.”
To keep up-to-date with crime in your community, join the Black Country Crime Watch Facebook group where you will be alerted to any suspicious or criminal behaviour happening in your area.


Berlin (/bərˈlɪn/, German: [bɛɐ̯ˈliːn] ( listen)) is the capital and the largest city of Germany as well as one of its constituent 16 states. With a population of approximately 3.5 million people,[4] Berlin is the second most populous city proper and the seventh most populous urban area in the European Union.[5] Located in northeastern Germany on the banks of rivers Spree and Havel, it is the centre of the Berlin-Brandenburg Metropolitan Region, which has about 6 million residents from more than 180 nations.[6][7][8][9] Due to its location in the European Plain, Berlin is influenced by a temperate seasonal climate. Around one-third of the city's area is composed of forests, parks, gardens, rivers and lakes.[10]
Read More...Hamburg, (/ˈhæmbɜːrɡ/; German pronunciation: [ˈhambʊɐk] ( listen), local pronunciation [ˈhambʊɪ̯ç] ( listen); Low German/Low Saxon: Hamborg - [ˈhambɔːç] ( listen)), officially Freie und Hansestadt Hamburg[6] (Free and Hanseatic City of Hamburg), is the second largest city in Germany and the eighth largest city in the European Union.[7] It is the second smallest German state by area. Its population is over 1.7 million people, and the wider Hamburg Metropolitan Region covers more than 5.1 million inhabitants. The city is situated on the river Elbe. The official long name reflects its history as a member of the medieval Hanseatic League, as a free imperial city of the Holy Roman Empire, a city-state, and one of the 16 states of Germany. Before the 1871 Unification of Germany, it was a fully sovereign state. Prior to the constitutional changes in 1919, the civic republic was ruled by a class of hereditary grand burghers or Hanseaten. Though repeatedly destroyed by great fires, floods and military conflicts including WW2 bombing raids, the city managed to recover and emerge wealthier after each catastrophe.
Read More...Germany (Listeni/ˈdʒɜːrməni/; German: Deutschland, pronounced [ˈdɔʏtʃlant]), officially the Federal Republic of Germany (German: Bundesrepublik Deutschland, About this sound listen (help·info)),[d][8] is a federal parliamentary republic in central-western Europe. It includes 16 constituent states, covers an area of 357,021 square kilometres (137,847 sq mi), and has a largely temperate seasonal climate. With about 82 million inhabitants, Germany is the most populous member state of the European Union. After the United States, it is the second most popular immigration destination in the world.[9][10] Germany's capital and largest metropolis is Berlin, while its largest conurbation is the Ruhr (main centres: Dortmund and Essen). Other major cities include Hamburg, Munich, Cologne, Frankfurt, Stuttgart, Düsseldorf and Leipzig. Various Germanic tribes have inhabited the northern parts of modern Germany since classical antiquity. A region named Germania was documented before 100 AD. During the Migration Period the Germanic tribes expanded southward. Beginning in the 10th century, German territories formed a central part of the Holy Roman Empire.[11] During the 16th century, northern German regions became the centre of the Protestant Reformation.
Read More...


--- title: JITB -- Java-based Flash player runs 30x Adobe's layout: post ---
Wow, that's gotta be embarrassing for Adobe ;-)


Welcome to Quindar Server-side Logging
NodeJS does not come with logging on its own. However, you can install 2 NPM packages (dependencies)
that logs transactions and debugging messages
- Winston - similar to log4j or Java logging API, you can add debugging message. Refer to for details.
- Morgan - it will log every console.log message to a pre-defined log file. Refer to for details.
- Log rotation - this will allow you to rotate log files once they are full. In other words, older log messages will be replaced by newer log messages to conserve disk space. For example, if you have a 2GB log file to store all log messages, over time your log file will grow to 2GB file size. With log rotation, older log contents will be removed, and newer log contents will continue to insert into the log file to maintain the 2Gb file size. Refer to https://github.com/holidayextras/file-stream-rotator for examples.


kelp-engine
src
kep
collisionDetection
finephase
Classes
|
Namespaces
Contact.h File Reference
#include "
../../Core.h
"
#include "
../../RigidBody.h
"
Include dependency graph for Contact.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Classes
class
kep::Contact
Namespaces
kep
Generated by
1.8.13


Book type
The book resource represents the properties of a book within the system.
Tasks on Book
The following tasks are available for Book resources.
| Task | Return Type | Example |
|---|
JSON representation
Here is a JSON representation of Book.
{
"id": "string",
"title": "string",
"description": "string",
"authors": [ {"@type": "author"} ],
"purchaseUrl": "url",
"lastModifiedDateTime": "datetime",
"costs": {"@type": "costStructure" }
}
Properties
| Property | Type | Description |
|---|---|---|
| id | String | Unique identifier for the book. |
| title | String | The title of the book. |
| description | String | Descriptive text for the book, including an abstract. |
| authors | Collection(Author) | A collection of author resources that represent the authors of the book. |
| purchaseUrl | String - URL | A fully qualified URL to the purchase page for this book. |
| lastModifiedDatetime | DateTime | The date and time the book record was last modified. |
| costs | Costs | A collection of properties that define the cost structure for the book. |


{% load otree staticfiles %} {% load static %}
This experiment lasts for {{ Constants.num_rounds}} periods. Throughout the experiment you will be in a group with {{ Constants.players_per_group }} other participants. The composition of the group will remain the same through out the experiment. At the start of each period one of the two participants will be assigned to role A and the other to role B. You will be informed of your role on the header of each screen. This is illustrated in the images below.
In each period, Player A makes the first decision and has to pick one of two options: or .
In addition to affecting directly the earnings of the different participants. The decision whether to keep of give (can or will depending on treat) the history score of the individual assigned to role A. In every round, individual in role A will be able to see the last three decisions made by the person in role A when he was in
Before making her decision, Player A observes Player B's history score. The history score provides information on whether Player B chose or the last {{ Constants.history }} times she was in the role of Player A. {% if player.treat >= 2 %} How the history score comes about is explained in more detail below. {% endif %}
Figure 1 (on the right) illustrates the screen Player A sees when making her decision. On the
right-hand side panel she chooses an option between
and .
{% if player.treat == 1 %}
On the left-hand side panel she sees player B's and her own history scores.
{% elif player.treat >= 2 %}
On the left-hand side panel she sees player B's history score.
{% endif %}
{% if player.treat == 1 %}
The
shown for Player B’s history score implies that Player B chose
the last time she was an A Player
and choose the two times before that.
Your score
implies that you chose
the last three times you were an A Player.
{% elif player.treat >= 2 %}
The
shown for Player B’s history score implies that the last time Player B was an A Player the provided
feedback indicates that she chose
while for the two times before that the feedback indicates that she chose
.
{% endif %}
{% if player.treat == 1 %}
After Player A has made her choice, Player B observes this choice. Player B sees a screen as
shown on Figure 2 (on the right). In the example shown in this screen, Player A chose
and the associated payoffs are displayed.
{% elif player.treat >= 2 %}
After Player A has made her choice, Player B observes this choice and sends a report indicating
which option player A chose. Players B can choose what to report:
or . So, the report does not always
need to reflect the actual decisions made by player A. This report is then added to A's history score.
When choosing which report to send, Player B sees a screen as shown on Figure 2 (on the right). In
the example shown in this screen, Player A chose and the
associated payoffs are displayed.
{% endif %}
In each period you are Player A you will receive feedback on player B's history score. However,
you will only see your own history score in some cases.
In each period you are player B, you will receive feedback on your own history score in some cases
but will not see player A's history score in any case.
Specifically, in each period, independent of whether you are player A or B, you will see your
own history score with 10% probability (there is a 90% chance that you do not see your own
history score in that period). Below we show you the screens for player A (Figure 3) and player B
(Figure 4) when they receive feedback about their own history score.
After the experiment has finished (at the end of period {{ Constants.num_rounds}}), the computer will randomly choose {{ Constants.chosen_rounds}} periods. The points you received in these {{ Constants.chosen_rounds}} periods (independently of which role you played) will determine your earnings from this experiment.
{% if player.treat == 2 %}In addition, we will rank all {{ Constants.players_per_group }} players according to their history scores and inform the player on top that she has the best history score. To decide who has the best history score, the computer will randomly choose, for each player, 10 instances where that player was in the role of Player A. Then, it will count the number of times, within these ten periods, the history score reports . The player with the highest number of 's will have the best history score and will be informed about it. In case of a tie (2 or more players have the same highest score) the computer randomly chooses one of the players with the highest score as the one with the best history score and informs her about it.
{% elif player.treat == 3 %}In addition, we will rank all {{ Constants.players_per_group }} players according to their history scores and give a bonus of {{ Constants.bonus }} to the player on top that has the best history score. To decide who has the best history score, the computer will randomly choose, for each player, 10 instances where that player was in the role of Player A. Then, it will count the number of times, within these ten periods, the history score reports . The player with the highest number of 's will have the best history score and will earn the bonus. In case of a tie (2 or more players have the same highest score) the computer randomly chooses one of the players with the highest score as the one with the best history score and gives her the bonus.
{% endif %}


Witness Statement of the claimantIn the County Court Business Centre Online Civil Money Claims Claim number: 000LR095 |
| Claimant | {{ partyName( 'claimant' ) }} |
| Defendant | {{ partyName( 'defendant' ) }} |
|
Witness |
{{ partyName( 'claimant' ) }}
101 Regents Road Accountant |
Corrections to my claim
1. I said in my claim that I first spoke to Alex on the 16th of October, it was in fact the 16 of September.
What went wrong
2. As you can see in Exhibit A1, lorem ipsum dolor sit amet, consectetur adipiscing elit.
3. Proin laoreet, lorem et rutrum convallis, urna nisl efficitur neque, mattis condimentum ex ipsum non urna. Ut euismod libero ac dolor tempor.
Why the other party is to blame
4. Exhibit A2 clearly shows that usce quis pharetra metus. Vivamus egestas sodales metus ac faucibus. In pretium suscipit nisi vel dictum. Etiam sed egestas neque. Vestibulum lacus ex, fermentum non velit at, placerat rhoncus lorem. Duis a turpis metus.
How it cost me £1,500
5. The repair estimate shown in Exhibit A3 shows vestibulum urna vitae mauris ultrices auctor. Morbi id magna turpis. Nam pellentesque, nulla non rutrum porta, libero orci maximus eros.
How I would like the situation to be resolved
6. I have already had the repairs made, so I would like Alex to reimburse me the £1,500 it cost me.
Disagreements with their timeline
7. They said:
15/01/2018 - I hadn't had a reply so I told them I would be making a money claim.
You said:
I sent my email on 13/01/2018.
See exhibit A4.
8. They said:
15/01/2018 - I hadn't had a reply so I told them I would be making a money claim.
You said:
I sent my email on 13/01/2018.
See exhibit A4.
Further details
9. Duis in odio eget ipsum ultricies tincidunt. Sed ut dui mi. Quisque fringilla vitae mauris non dignissim. Donec vitae turpis metus. Mauris commodo nulla at dui elementum, nec imperdiet urna semper.
10. Praesent convallis pellentesque condimentum. In elit ante, suscipit eget erat vitae, tempus rutrum augue. Vestibulum mollis pellentesque lorem, ut aliquet diam tristique at.
11. I believe that the facts stated in this witness statement are true.
{{ partyName( 'claimant' ) }}
{{ now | date('subtract', 5, 'days' ) | date }}
| For further details of the courts www.gov.uk/find-court-tribunal | © Crown copyright Page 1 of 1 |


Simple interface routines to facilitate the handling of network objects with complex intertemporal data. This is a part of the "statnet" suite of packages for network analysis.
| Version: | 0.9.0 |
| Depends: | R (≥ 3.0.0), network (≥ 1.13) |
| Imports: | statnet.common, methods |
| LinkingTo: | network |
| Suggests: | testthat |
| Published: | 2016-01-15 |
| Author: | Carter T. Butts [aut], Ayn Leslie-Cook [aut], Pavel N. Krivitsky [aut], Skye Bender-deMoll [aut, cre], Zack Almquist [ctb], David R. Hunter [ctb], Li Wang [ctb], Kirk Li [ctb], Steven M. Goodreau [ctb], Jeffrey Horner [ctb], Martina Morris [ctb] |
| Maintainer: | Skye Bender-deMoll <skyebend at uw.edu> |
| License: | GPL-3 |
| URL: | http://statnet.org |
| NeedsCompilation: | yes |
| Materials: | ChangeLog |
| In views: | gR |
| CRAN checks: | networkDynamic results |
| Reference manual: | networkDynamic.pdf |
| Vignettes: |
networkDynamic Example |
| Package source: | networkDynamic_0.9.0.tar.gz |
| Windows binaries: | r-devel: networkDynamic_0.9.0.zip, r-release: networkDynamic_0.9.0.zip, r-oldrel: networkDynamic_0.9.0.zip |
| OS X binaries: | r-release: networkDynamic_0.9.0.tgz, r-oldrel: networkDynamic_0.9.0.tgz |
| Old sources: | networkDynamic archive |
| Reverse depends: | EpiModel, ndtv, networkDynamicData, tergm, tsna |
| Reverse imports: | ITNr, netdiffuseR, OutbreakTools, PAFit, statnet |
| Reverse suggests: | sand |
Please use the canonical form https://CRAN.R-project.org/package=networkDynamic to link to this page.


Don't have an account yet? Sign up.
Login with Facebook
Build and strengthen your portfolio with our educational materials and tools


| set_envvar {xfun} | R Documentation |
Set environment variables from a named character vector, and return the old values of the variables, so they could be restored later.
set_envvar(vars)
vars |
A named character vector of the form |
The motivation of this function is that Sys.setenv()
does not
return the old values of the environment variables, so it is not
straightforward to restore the variables later.
Old values of the variables (if not set, NA
).
vars = xfun::set_envvar(c(FOO = "1234")) Sys.getenv("FOO") xfun::set_envvar(vars) Sys.getenv("FOO")


Star on GitHub
Angular image cropper
A really simple cropper for angular with action buttons and no external dependencies.


--- layout: page title: About header-img: "img/about-bg.png" ---
My name is Makoa, and I'm a Full-time Software Engineer student based in Wahiawa, Hawaii


Got dubbed the “creative child” of the family.
Gained a reputation for breaking every electronic I touched and solemnly swore to never have a career dealing with technology.
Circled the world on a boat and the bad luck with electronics continue as my ipad got thrown into a garbage compressor while out to dinner in Japan.
Hesitantly took a web design class to fill a science requirement. Discovered this gibberish code isn’t so scary after all. In fact, it’s kind of fun!
Graduated DePaul University.
Enrolled in the Web and Graphic Design program at Hennepin Technical College.
Fell in love with design.
Can't. Stop. Coding.
Will forever notice fonts, color schemes, and layouts on every street sign passed, restaurant menu looked at, and website visited.


Sales Pal
Contacts
Task List
Back
Contacts
Add New
Add New
Last Name:
First Name:
Phone:
Email:
Update
Delete
Back
Ray Wolske
Edit
Ray Wolske
333-333-3333
<EMAIL_ADDRESS>Ray Woulske
Last Name:
First Name:
Phone:
Email:
Back
Jacob Graceffa
Edit
Jacob Graceffa
333-333-3333
<EMAIL_ADDRESS>Jacob Graceffa
Last Name:
First Name:
Phone:
Email:
Back
Tasks
Add New
Task
Task:
Task
Task:
Delete?
Task
Task:
Task:
Update Task
Go Home


#include <epicsTypes.h>
#include <postfix.h>
#include "NDPluginDriver.h"
#include "NDArrayRing.h"
Go to the source code of this file.
|
| #define | NDCircBuffControlString "CIRC_BUFF_CONTROL" /* (asynInt32, r/w) Run scope? */ |
| |
| #define | NDCircBuffStatusString "CIRC_BUFF_STATUS" /* (asynOctetRead, r/o) Scope status */ |
| |
| #define | NDCircBuffTriggerAString "CIRC_BUFF_TRIGGER_A" /* (asynOctetWrite, r/w) Trigger A attribute name */ |
| |
| #define | NDCircBuffTriggerBString "CIRC_BUFF_TRIGGER_B" /* (asynOctetWrite, r/w) Trigger B attribute name */ |
| |
| #define | NDCircBuffTriggerAValString "CIRC_BUFF_TRIGGER_A_VAL" /* (asynFloat64, r/o) Trigger A value */ |
| |
| #define | NDCircBuffTriggerBValString "CIRC_BUFF_TRIGGER_B_VAL" /* (asynFloat64, r/o) Trigger B value */ |
| |
| #define | NDCircBuffTriggerCalcString "CIRC_BUFF_TRIGGER_CALC" /* (asynOctetWrite, r/w) Trigger calculation expression */ |
| |
| #define | NDCircBuffTriggerCalcValString "CIRC_BUFF_TRIGGER_CALC_VAL" /* (asynFloat64, r/o) Trigger calculation value */ |
| |
| #define | NDCircBuffPresetTriggerCountString "CIRC_BUFF_PRESET_TRIGGER_COUNT" /* (asynInt32, r/w) Preset number of triggers 0=infinite*/ |
| |
| #define | NDCircBuffActualTriggerCountString "CIRC_BUFF_ACTUAL_TRIGGER_COUNT" /* (asynInt32, r/w) Actual number of triggers so far */ |
| |
| #define | NDCircBuffPreTriggerString "CIRC_BUFF_PRE_TRIGGER" /* (asynInt32, r/w) Number of pre-trigger images */ |
| |
| #define | NDCircBuffPostTriggerString "CIRC_BUFF_POST_TRIGGER" /* (asynInt32, r/w) Number of post-trigger images */ |
| |
| #define | NDCircBuffCurrentImageString "CIRC_BUFF_CURRENT_IMAGE" /* (asynInt32, r/o) Number of the current image */ |
| |
| #define | NDCircBuffPostCountString "CIRC_BUFF_POST_COUNT" /* (asynInt32, r/o) Number of the current post count image */ |
| |
| #define | NDCircBuffSoftTriggerString "CIRC_BUFF_SOFT_TRIGGER" /* (asynInt32, r/w) Force a soft trigger */ |
| |
| #define | NDCircBuffTriggeredString "CIRC_BUFF_TRIGGERED" /* (asynInt32, r/o) Have we had a trigger event */ |
| |
| #define | NDCircBuffFlushOnSoftTrigString "CIRC_BUFF_FLUSH_ON_SOFTTRIGGER" /* (asynInt32, r/w) Flush buffer immediatelly when software trigger obtained */ |
| |
| #define | FIRST_NDPLUGIN_CIRC_BUFF_PARAM NDCircBuffControl |
| |
◆ FIRST_NDPLUGIN_CIRC_BUFF_PARAM
| #define FIRST_NDPLUGIN_CIRC_BUFF_PARAM NDCircBuffControl |
◆ NDCircBuffActualTriggerCountString
| #define NDCircBuffActualTriggerCountString "CIRC_BUFF_ACTUAL_TRIGGER_COUNT" /* (asynInt32, r/w) Actual number of triggers so far */ |
◆ NDCircBuffControlString
| #define NDCircBuffControlString "CIRC_BUFF_CONTROL" /* (asynInt32, r/w) Run scope? */ |
◆ NDCircBuffCurrentImageString
| #define NDCircBuffCurrentImageString "CIRC_BUFF_CURRENT_IMAGE" /* (asynInt32, r/o) Number of the current image */ |
◆ NDCircBuffFlushOnSoftTrigString
| #define NDCircBuffFlushOnSoftTrigString "CIRC_BUFF_FLUSH_ON_SOFTTRIGGER" /* (asynInt32, r/w) Flush buffer immediatelly when software trigger obtained */ |
◆ NDCircBuffPostCountString
| #define NDCircBuffPostCountString "CIRC_BUFF_POST_COUNT" /* (asynInt32, r/o) Number of the current post count image */ |
◆ NDCircBuffPostTriggerString
| #define NDCircBuffPostTriggerString "CIRC_BUFF_POST_TRIGGER" /* (asynInt32, r/w) Number of post-trigger images */ |
◆ NDCircBuffPresetTriggerCountString
| #define NDCircBuffPresetTriggerCountString "CIRC_BUFF_PRESET_TRIGGER_COUNT" /* (asynInt32, r/w) Preset number of triggers 0=infinite*/ |
◆ NDCircBuffPreTriggerString
| #define NDCircBuffPreTriggerString "CIRC_BUFF_PRE_TRIGGER" /* (asynInt32, r/w) Number of pre-trigger images */ |
◆ NDCircBuffSoftTriggerString
| #define NDCircBuffSoftTriggerString "CIRC_BUFF_SOFT_TRIGGER" /* (asynInt32, r/w) Force a soft trigger */ |
◆ NDCircBuffStatusString
| #define NDCircBuffStatusString "CIRC_BUFF_STATUS" /* (asynOctetRead, r/o) Scope status */ |
◆ NDCircBuffTriggerAString
| #define NDCircBuffTriggerAString "CIRC_BUFF_TRIGGER_A" /* (asynOctetWrite, r/w) Trigger A attribute name */ |
◆ NDCircBuffTriggerAValString
| #define NDCircBuffTriggerAValString "CIRC_BUFF_TRIGGER_A_VAL" /* (asynFloat64, r/o) Trigger A value */ |
◆ NDCircBuffTriggerBString
| #define NDCircBuffTriggerBString "CIRC_BUFF_TRIGGER_B" /* (asynOctetWrite, r/w) Trigger B attribute name */ |
◆ NDCircBuffTriggerBValString
| #define NDCircBuffTriggerBValString "CIRC_BUFF_TRIGGER_B_VAL" /* (asynFloat64, r/o) Trigger B value */ |
◆ NDCircBuffTriggerCalcString
| #define NDCircBuffTriggerCalcString "CIRC_BUFF_TRIGGER_CALC" /* (asynOctetWrite, r/w) Trigger calculation expression */ |
◆ NDCircBuffTriggerCalcValString
| #define NDCircBuffTriggerCalcValString "CIRC_BUFF_TRIGGER_CALC_VAL" /* (asynFloat64, r/o) Trigger calculation value */ |
◆ NDCircBuffTriggeredString
| #define NDCircBuffTriggeredString "CIRC_BUFF_TRIGGERED" /* (asynInt32, r/o) Have we had a trigger event */ |


Voyager cancellation has PO number and line item number. What do these correspond to in the XML?
XSLT calls notificationdata/line/referencenumber as "Order Number". The same value populates line/line_reference.
Also:
Order Number most likely maps to PO number.
What maps to "line item number"?
XSLT calls notificationdata/line/referencenumber as "Order Number". The same value populates line/line_reference.
There is however also a field <poline>
with children
Out of the box field
for future reference: there's a typo in quantity field name
What is the point of these variables, which are declared but never used?
Value of field "Cancellation Note" is
Per documentation, one notice is generated per line, so no for-each is necessary and all fields nested in line can be called directly
Ugh, and what about line/number? Could this be the "Line Item Number"? <number>PO-254486</number>
Ugh, and what is the relationship between notificationdata/line and notificationdata/po, which contains polinelist/poline? Both contain the field numberofitemsordered, but the value in line is 0 and the value in po_line is 2.
itemsoredered occurs in notificationdata/line_details, how does that relate?
There's also quantity.
referenced
by None at 2021-07-16 20:26:31.renamed
by None at 2021-07-16 20:27:22.referenced
by None at 2021-07-15 23:21:02.merged
by None at 2021-07-15 23:21:02.closed
by None at 2021-07-15 23:21:02.head_ref_deleted
by None at 2021-07-15 23:21:03.referenced
by None at 2021-07-16 14:44:30.merged
by None at 2021-07-16 14:44:30.closed
by None at 2021-07-16 14:44:30.head_ref_deleted
by None at 2021-07-16 14:44:30.referenced
by None at 2021-07-16 15:01:50.merged
by None at 2021-07-16 15:01:50.closed
by None at 2021-07-16 15:01:51.head_ref_deleted
by None at 2021-07-16 15:01:51.labeled
by None at 2021-07-16 15:28:20.referenced
by None at 2021-07-16 16:05:54.merged
by None at 2021-07-16 16:05:54.closed
by None at 2021-07-16 16:05:54.head_ref_deleted
by None at 2021-07-16 16:05:54.referenced
by None at 2021-07-16 16:15:20.merged
by None at 2021-07-16 16:15:20.closed
by None at 2021-07-16 16:15:20.head_ref_deleted
by None at 2021-07-16 16:15:21.assigned
by None at 2021-07-16 15:48:24.referenced
by None at 2021-07-16 15:50:18.referenced
by None at 2021-07-16 15:51:49.closed
by None at 2021-07-16 16:16:29.deployed
by Trey Pendragon at 2021-07-16 17:09:49.deployed
by Trey Pendragon at 2021-07-16 17:10:40.referenced
by Christina Chortaria at 2021-07-16 17:56:43.merged
by Christina Chortaria at 2021-07-16 17:56:43.closed
by Christina Chortaria at 2021-07-16 17:56:43.head_ref_deleted
by Christina Chortaria at 2021-07-16 17:56:44.deployed
by Trey Pendragon at 2021-07-16 13:31:04.deployed
by Trey Pendragon at 2021-07-16 14:45:44.deployed
by Trey Pendragon at 2021-07-16 15:02:24.deployed
by Trey Pendragon at 2021-07-16 22:22:38.convert_to_draft
by Eliot Jordan at 2021-07-16 17:17:12.head_ref_force_pushed
by Eliot Jordan at 2021-07-16 18:12:28.renamed
by Eliot Jordan at 2021-07-16 18:14:52.ready_for_review
by Eliot Jordan at 2021-07-16 18:15:48.labeled
by None at 2021-07-16 18:00:06.assigned
by Trey Pendragon at 2021-07-16 18:35:06.unlabeled
by None at 2021-07-16 19:00:25.labeled
by None at 2021-07-16 19:00:29.assigned
by None at 2021-07-16 19:42:32.referenced
by None at 2021-07-16 19:48:58.closed
by Trey Pendragon at 2021-07-16 21:01:49.referenced
by Trey Pendragon at 2021-07-16 21:01:50.This error was triggered during the scsb import job from S3. Errno::EBADF: Bad file descriptor @ iogetpartial - /data/marcliberationfiles/incremental784722875000642120210709160754[020]new86.tar.gz
labeled
by Christina Chortaria at 2021-07-16 21:24:33.For deployment when Alma over blacklight catalog goes up.
renamed
by Kevin Reiss at 2021-07-17 00:00:34.The error from solr:
org.apache.solr.common.SolrException: Unable to index docs with children: the schema must include definitions for both a uniqueKey field and the '_root_' field, using the exact same fieldType
referenced
by James R. Griffin III at 2021-07-16 20:20:23.merged
by James R. Griffin III at 2021-07-16 20:20:23.closed
by James R. Griffin III at 2021-07-16 20:20:23.closed
by James R. Griffin III at 2021-07-16 20:20:23.Deployed to locator-staging.princeton.edu. Deploy to production on 7/27.
referenced
by Kevin Reiss at 2021-07-15 23:07:40.merged
by Kevin Reiss at 2021-07-15 23:07:40.closed
by Kevin Reiss at 2021-07-15 23:07:40.head_ref_deleted
by Kevin Reiss at 2021-07-15 23:07:41.Closed by #2556
closed
by Eliot Jordan at 2021-07-16 18:35:45.deployed
by Trey Pendragon at 2021-07-16 18:26:08.referenced
by None at 2021-07-16 18:43:54.merged
by None at 2021-07-16 18:43:54.closed
by None at 2021-07-16 18:43:54.head_ref_deleted
by None at 2021-07-16 18:43:54.Coverage increased (+0.07%) to 96.813% when pulling 881f29b5360dc116f1166c7a9dc0f878d32212b5 on alma into 9564b07d6d648faedeb7501dac59d8fac711093d on main.
deployed
by Trey Pendragon at 2021-07-16 12:42:41.deployed
by Trey Pendragon at 2021-07-16 18:44:54.Seems like it works, but it is a little bit confusing seeing the button there and then go away. Maybe we should ticket the UX of this change. Seeing available with no button may be confusing to the user. Maybe instead of the button just disappearing it should say "On Site Access" but that is for another time...
mentioned
by Kevin Reiss at 2021-07-16 15:03:46.subscribed
by Kevin Reiss at 2021-07-16 15:03:46.deployed
by Trey Pendragon at 2021-07-16 19:26:26.alma branch was rebased and this needs to be also...
Coverage remained the same at 96.813% when pulling 31202b7091eec56ab09536a1cab0a363cc8c6abb on issues-1260-jrgriffiniii-load-test into 881f29b5360dc116f1166c7a9dc0f878d32212b5 on alma.
head_ref_force_pushed
by James R. Griffin III at 2021-07-16 18:38:30.head_ref_force_pushed
by James R. Griffin III at 2021-07-16 18:42:47.head_ref_force_pushed
by James R. Griffin III at 2021-07-16 18:44:42.head_ref_force_pushed
by James R. Griffin III at 2021-07-16 20:04:42.renamed
by James R. Griffin III at 2021-07-16 20:05:22.ready_for_review
by James R. Griffin III at 2021-07-16 20:05:27.referenced
by Christina Chortaria at 2021-07-16 19:19:03.merged
by Christina Chortaria at 2021-07-16 19:19:03.closed
by Christina Chortaria at 2021-07-16 19:19:03.head_ref_deleted
by Christina Chortaria at 2021-07-16 19:19:04.referenced
by None at 2021-07-16 20:24:00.merged
by None at 2021-07-16 20:24:00.closed
by None at 2021-07-16 20:24:00.head_ref_deleted
by None at 2021-07-16 20:24:01.this change has been manually put in place on both load balancer machines.
referenced
by Trey Pendragon at 2021-07-16 21:01:48.merged
by Trey Pendragon at 2021-07-16 21:01:48.closed
by Trey Pendragon at 2021-07-16 21:01:49.head_ref_deleted
by Trey Pendragon at 2021-07-16 21:01:49.So do staging and prod write to different subdirectories?
Yes.
👍🏻 this seems great but I'm not sure why the test is failing
head_ref_force_pushed
by Trey Pendragon at 2021-07-16 20:12:16.head_ref_force_pushed
by Trey Pendragon at 2021-07-16 17:23:10.ready_for_review
by Trey Pendragon at 2021-07-16 17:24:33.renamed
by Trey Pendragon at 2021-07-16 17:25:00.referenced
by Trey Pendragon at 2021-07-16 16:42:41.closed
by Eliot Jordan at 2021-07-16 17:02:15.referenced
by Eliot Jordan at 2021-07-16 17:02:15.merged
by Eliot Jordan at 2021-07-16 17:02:15.closed
by Eliot Jordan at 2021-07-16 17:02:15.head_ref_deleted
by Eliot Jordan at 2021-07-16 17:02:16.closed
by Kevin Reiss at 2021-07-15 23:09:53.closed
by Kevin Reiss at 2021-07-16 14:44:11.closed
by Shaun Ellis at 2021-07-16 15:06:35.Related to #926. I spoke to circ staff on reserve items, if the on_reserve=y flag is set they don't want the items to have any local request options including digitization. The item is reserved for class use. They requested that the button just be suppressed on the record page, spoke to @hectorcorrea about whether or not that is possible, needs some research. If we need to handle this in the form, I asked circulation if we should just send these items to resource sharing or just provide no options.
This should remove the Request button from the Show page (https://github.com/pulibrary/orangelight/pull/2576) for items on reserves.
mentioned
by Hector Correa at 2021-07-16 14:49:42.subscribed
by Hector Correa at 2021-07-16 14:49:42.labeled
by Kevin Reiss at 2021-07-16 14:49:47.labeled
by Kevin Reiss at 2021-07-16 14:49:52.referenced
by Kevin Reiss at 2021-07-16 16:26:31.merged
by Kevin Reiss at 2021-07-16 16:26:31.closed
by Kevin Reiss at 2021-07-16 16:26:31.@mzelesky I think this relates to the circ desk issue that came up with staff at engineering yesterday. Will have to fix post go-live prior to the catalog release if we can.
mentioned
by None at 2021-07-16 14:10:15.subscribed
by None at 2021-07-16 14:10:15.labeled
by Kevin Reiss at 2021-07-16 18:04:53.head_ref_force_pushed
by None at 2021-07-16 18:11:42.referenced
by Kevin Reiss at 2021-07-16 18:22:44.merged
by Kevin Reiss at 2021-07-16 18:22:44.closed
by Kevin Reiss at 2021-07-16 18:22:44.Yes, I think we have now to inject the Library Name Label in front on the shelf location label.
assigned
by None at 2021-07-16 15:13:07.closed
by None at 2021-07-16 19:36:31.labeled
by Kevin Reiss at 2021-07-16 21:24:49.labeled
by Kevin Reiss at 2021-07-16 21:25:13.this was done
closed
by Christina Chortaria at 2021-07-16 19:47:03.


| |||||||||
|
| |||||||||
Stress
Stress is a scourge of the modern day living. "We are in the phase of tremendous growth of knowledge, rapid social change, and technical innovations. For many people, the pace of change is too fast, resulting in stress, " writes Toffler in "Future shock'. Unfortunately a growing number of students are becoming victims of stress and taking to harmful habits like popping sleeping pills, smoking and even consuming alcohol. These habits though may provide momentary relief and a sense of `high’, are extremely harmful and getting into them would be most foolish and akin to getting into a vicious circle. Therefore it is very important to identify the stress symptoms and seek help to overcome them as early as possible. Stress is universal and could be disabling human phenomenon. However it can also be a stimulant to growth. In fact `optimum amount of stress is necessary to achieve the best results'. It is the high degree of stress persisting for relatively longer periods that is damaging for our physical and mental health. For example, imagine being totally cool about a forthcoming examination or an interview. What happens? You are not likely to be alert and motivated to work for being successful. On the other hand, if you come under too much of stress, it may cause confusion, disturbed thinking, distorted perception, insomnia and such other symptoms that would result in poor performance/outcome. Thus, stress could be friendly and useful also and what really matters is how you perceive a situation and go about managing it. Sometimes situations may look similar but their management totally differs. For example you may be performing very well at school and regarded as one of the best students. And yet when you prepare for the engineering or medical entrance tests, you know, that your performance at school does not guarantee your selection in such highly completive examinations. Therefore you have to work much harder under greater psychological pressure for such competitive exams because you would be competing with equally bright or even better students. After all in all the competitive examinations the merit (ranks) counts and not the percentage of marks. If you accept the challenge with healthy spirit and work hard under examination pressure then the stress becomes friendly and helps you to achieve your goal. On the other hand, if you are not mentally prepared to cope with the demands of such situations, you are likely to experience severe stress that may hamper your performance in the examination. Coping up with examination stress:As the examination time comes closer, many students approach me with uneasy symptoms like lack of sleep and hunger, anxiety, depression or a strange unknown fear. Attributing all such symptoms, which arise out of stress, to the impending examination may not be justified. A combination of factors such as the family environment, parental attitudes and expectations, friends, social circle, individual emotions and aspirations also play their role in causing stress. Fear of failure too, adds up and multiplies your tensions. After all nowadays the competition is so intense that even after scoring more than 75% in say class 10th you may not get into the stream of your choice at +2 level. Similarly thousands of students aspire to join professions like medicine and engineering and prepare to get through the various entrance exams. However a fraction of them finally manage to get through.  No matter how good a student you are or how well you have prepared for your examination no sooner you allow yourself to be overwhelmed by the situation and come under stress the battle is lost even before it begins. Stress causes depression, forgetfulness, irritability and aloofness. It would make you feel tired and listless and bring down your efficiency. Parents sometimes buy tonics for there children to help them overcome the stress. However these, even if effective are short-term remedies. It is important to remember and let me reiterate again that stress is not a disease but in medical jargon, a natural response of the body to all non-specific demands. Therefore no tonic or tranquilizer is going to prevent you from getting stressed, what would really help is the identification of the reason or the situation which is causing stress and preparing yourself to face it in the best possible way. You may simply be unable to manage your time and get stressed or you may have set a timetable for yourself that is too difficult to follow and you end up feeling low and depressed for not being able to follow the regimen. A little introspection here would help you develop an insight into the problem and cope up with the stress. Proper planning and time management can prove to be the best stress busters for at least students like you, and help you overcome your stress completely. I have dealt with both this topics separately in ACC.
You may also choose or develop your own strategy for coping with stress. Rather, I am sure that you already use them without being consciously aware. You might use one or many of the strategies that are used in general to cope-up with or reduce stress in life. One is Confrontational Strategy where you stand your ground and fight till you achieve what you aspire. If you want X (e.g., get through medical or engineering) you might go through the examination again and yet again improving your skills. Another strategy could be, problem solving. It involves devising a plan to deal with the situation. Yet another strategy to cope with stress is emotional - focused strategy i.e., positive reappraisal (looking for silver lining). Following such a plan to reduce stress, you may search for alternate career options, and tell yourself "if not that so what? I would make it somewhere else." Biofeedback may also be used for monitoring and controlling the physiological aspects of stress. Above all I would suggest regular practice of Yoga and other relaxation techniques, which not only helps in reducing stress but also in improving your memory and concentration. It is scientifically proven that Meditation could elicit dramatic physiological changes, including decreased heart rate, lower blood pressure and reduced oxygen consumption if practiced regularly. In my own research on University students I found that even simple deep breathing exercise for 15 minutes significantly reduces stress symptoms. Relaxation is associated with deep, long breaths, which can be induced by intentionally creating such a breathing pattern. To begin with you may take long, cleaning breath inhaling and exhaling through the mouth. Later, as you practice, deep-breath lasting 8-12 seconds replace short, shallow breaths. This technique in a varied form is used during 'Shav Asana'. Don't wait. Make a schedule of the day and include 'Yoga' in your daily routine - it will definitely help you. The greatest of all stress therapies in the form of Bhagvat-Gita provides a great many insights for stress reduction. It does not forbid materialistic success and growth but warms us of the possible mental stress if we link the 'work with fruits'. Therefore it recommends "Nishkam Karm" i.e., work hard to achieve the goal but do not get attached to the expectations of its (work) outcome. ^ TOP | |||||||||
|
© 2000-2001 Apyl Software & Systems Ltd. All rights Reserved. |