Cookbook - How to Get Started¶
You might have come here to see some examples. Very well... But have a quick look at Examples! page too!
Start the Node¶
from pyrlang import Node, Atom, GeventEngine # or AsyncioEngine
def main():
eng = GeventEngine() # or AsyncioEngine
node =<EMAIL_ADDRESS>cookie="COOKIE", engine=eng)
fake_pid = node.register_new_process()
# To be able to send to Erlang shell by name first give it a
# registered name: `erlang:register(shell, self()).`
# To see an incoming message in shell: `flush().`
node.send(sender=fake_pid,
receiver=(Atom('erl@<IP_ADDRESS>'), Atom('shell')),
message=Atom('hello'))
eng.run_forever()
if __name__ == "__main__":
main()
Here event_engine
is a pluggable adapter which allows Pyrlang to run both
with gevent (GeventEngine
)
and asyncio-driven (AsyncioEngine
)
event loops. Pyrlang in this case performs mostly
protocols handling, while event engine will open connections, start tasks
and sleep asynchronously.
Connect nodes¶
Note
You can initiate the connection from either Erlang or Python side
automatically by sending to a remote name using tuple format
{Name, Node}
or sending to a remote pid (if you have it).
You can initiate the connection between nodes from Erlang side in a different
way. To do this on Erlang side you can use net_adm:ping
.
net_adm:ping('py@<IP_ADDRESS>').
Also you could send a message to {Name, Node}
, where Node
is an
atom like<EMAIL_ADDRESS>, and Name
is a pid or some registered name,
which exists on the Python side.
{Name<EMAIL_ADDRESS>! hello.
If the process exists on Python side, its inbox_
field (which will be a
Gevent or Asyncio Queue) will receive your message.
Exiting a Pyrlang "Process"¶
A Pyrlang "process" can exit if:
you call Process.exit
you call Node.exit_process
you link to some other process and it exits
remote node calls
erlang:exit
with its pid
Because registering a process in the process dictionary introduces
an extra reference to your object, be sure to tell it explicitly
to unregister: call Process
's method
exit()
.
A more general way to handle both local (by pid or name) and remote processes
(by pid) would be to use Node
's method
exit_process()
. It can send exit messages to
remotes too.
RPC call from Erlang¶
Python node has the special named process running, called 'rex'
, which is
necessary for Erlang RPC to work. You can send an RPC call to Python from
Erlang. In the following example Pyrlang.logger
module has a tty
function which will transparently pass all args to the print
operator.
<EMAIL_ADDRESS>'Pyrlang.logger', 'tty', ["Hello World"]).
Note
You do not need to import module to perform the call, this will be done by Rex.
Note
Module and function name can be atoms, strings (non-unicode) or binaries.
Function call result or error will be sent back to the caller. In case of error, Erlang exit exception will be created with the exception value from Python.
Rex
also supports gen_server style calls from Erlang:
gen_server:call({rex<EMAIL_ADDRESS>{call, 'Pyrlang.logger', tty, ["Hello"], self()}).
Send from Python locally¶
You can send messages using the method
Node.send(_sender, receiver, message)
, which can deliver messages
locally or remotely.
node.send(sender=None, # argument unused
receiver=term.Atom('my_erlang_process'),
message=(123, 4.5678, [term.Atom('test')]))
Send from Python to a remote¶
You can send messages to a remote pid. Sender pid is unused and can be None. The node connection will be established automatically.
node.send(sender=None,
receiver=receiver_pid,
message=Atom('hello'))
You can send messages to a remote named process, for this use tuple send format
like {Name, Node}
. For remote sends sender pid is REQUIRED,
even if it is a fake pid (see example below how to create a fake pid).
To try this, open an Erlang shell and register shell with the name 'shell'
:
<EMAIL_ADDRESS>1> erlang:register(shell, self())
Now we can try and send the message from Python (node connection will be established automatically):
fake_pid = node.register_new_process(None) # create a fake pid
node.send(sender=fake_pid,
receiver=(Atom('erl@<IP_ADDRESS>'), Atom('shell')),
message=Atom('hello'))
<EMAIL_ADDRESS>2> flush().
Shell got hello
ok
<EMAIL_ADDRESS>3>
Send to a Python object¶
A python object inherited from Process
will be
a Greenlet (i.e. running in parallel with the rest of the system).
A process is able to register itself (optional) with a name and handle
incoming messages.
Messages sent to a pid or name will be automatically routed to such a
process and arrive into its self.inbox_
. The Process base class will
constantly call self.handle_inbox()
so you can check the messages yourself.
class MyProcess(Process):
def __init__(self) -> None:
Process.__init__(self)
node.register_name(self, Atom('my_process')) # optional
def handle_one_inbox_message(self, msg):
print("Incoming", msg)
%% Now sending from Erlang is easy:
%% Note that this is syntax for sending to atom names, not to pids!
<EMAIL_ADDRESS>1> {my_process<EMAIL_ADDRESS>! hello.
%% If you know the Python pid in Erlang (if you communicated it
%% from your Python node), then send directly to it:
<EMAIL_ADDRESS>1> PyProcessPid ! hello.
Remote Calculations on Python Node¶
Problem:
While it is possible to subclass the Process
class and implement a Erlang-like process, often existing Python code
exposes just a functional API or a class which has to be created for the
calculation to be performed.
Often you would like to use some functional API without sending the results
over the wire until they are ready.
Solution: A notebook-like remote execution API, where intermediate call results are stored in history log and can be referred by name or index.
There is helper Erlang module called py.erl
, please use it and see
Remote Calling Python from Erlang for an example.
See also
Example3 in Examples! demonstrates this.
Batch Remote Calculations on Python Node¶
Problem: Often you would like to use some functional API without sending the results over the wire until they are ready. Moreover sometimes you might want to run same batch on multiple nodes, this is possible now too.
Batch remote calculations API allows you to prebuild your calculation as a data structure on Erlang side and then execute it remotely on one or more Pyrlang nodes, sending you the final result. Intermediate call results are stored in history log and can be referred by name or index.
It is possible to apply the same batch of calls to multiple nodes.
See also
Example4 in Examples! demonstrates this.
Gen_server-like Processes¶
To have a Process
descendant which responds to
gen_server:call
, inherit your class from GenServer
.
When calling GenServer
constructor in your __init__
specify an
additional parameter accepted_calls
which is a list of strings.
Functions with these names will be mapped to incoming gen_server:call
and their result will be transparently 'replied' back to the caller.
class MyProcess(GenServer):
def __init__(self) -> None:
GenServer.__init__(self, accepted_calls=['hello'])
def hello(self):
return self.pid_
When you perform a gen_server:call
with an atom, the atom becomes Python
method name:
# 1> gen_server:call(Pid, my_method)
# becomes a call to
class MyClass:
def my_method(self):
pass # return None -> atom 'undefined' in Erlang
When you perform a gen_server:call
with a tuple where first element is an
atom, the atom becomes Python method name, and following tuple elements become
python *args.
# 1> gen_server:call(Pid, {my_method, 1000, "hello"})
# becomes a call to
class MyClass:
def my_method(self, i: int, s: bytes):
pass # return None -> atom 'undefined' in Erlang
Linking/Monitoring from Erlang to Python¶
See example6 in Examples! for demo on linking a Pyrlang "process" to Erlang process, then killing it and observing an EXIT signal coming back.
See example7 in Examples! for demo on a Pyrlang "process" monitoring a Erlang process, then killing it and observing the monitor message.


BREAKING John Lewis Christmas advert 2019 teaser shows glimpse of Excitable Edgar
Excitable Edgar seems to be the main character of this year's top-secret John Lewis Christmas advert
by Emmeline SaundersThe John Lewis Christmas advert 2019 is just days away from dropping, after weeks of speculation about what it will contain this year.
And it seems the retail giant has gone back to its creative roots for what appears to be an animated advert featuring a character called Excitable Edgar.
With the ad launching on Thursday November 14, we've got less than two days to wait and see the whole thing.
But, as with every year, a snippet of the main commercial has been teased on Twitter .
The 10-second clip shows a child's hand knocking at a big wooden door.
The hand reaches up and taps the dragon head-shaped iron knocker, as snow falls off its head.
The door then slowly swings open a crack, showing a glimpse of a warm and inviting room inside.
Text at the end of the clip then flashes up, bearing the words: "Meet Edgar 14.11.19."
The hashtag #ExcitableEdgar has been used to hype up excitement around the ad, which may well have cost in the region of £8million, as with other John Lewis offerings.


Parliamentary panel discusses WhatsApp snooping issue for 3 hours
The meeting was marked by sharp differences among its members over whether to take up the issue or not, and the panel discussed the matter only after a vote in the favour.
A meeting of a parliamentary committee, headed by Congress leader Shashi Tharoor, discussed WhatsApp snooping for three hours on Wednesday.
The meeting was marked by sharp differences among its members over whether to take up the issue or not, and the panel discussed the matter only after a vote in the favour.
Sources said that the BJP was not in favour of a discussion on the data privacy issue, while the opposition demanded it. As the heated discussion ensued, Tharoor called for a vote. Initially, the vote ended in a tie, but then Tharoor used his tie-breaker vote as chairman to initiate the discussion. During this two-hour debate on whether to have a discussion or not, secretaries to Home, and Electronics and Information Technology ministries were kept waiting.
Tharoor had earlier written a letter to the members of the Parliamentary Standing Committee on Information Technology, saying the alleged use of technology for snooping on Indian citizens was a matter of "grave concern" and it would be discussed at its meeting on Wednesday.
Senior government officials briefed its members on the issue of "Citizens' data security and privacy".
In October, Facebook-owned WhatsApp said Indian journalists and human rights activists were among those globally spied upon by unidentified entities, using an Israeli spyware -- Pegasus.
Earlier in the day, top official sources said WhatsApp had written to the government expressing "regret" over the Pegasus snooping row, and has assured it that the social media giant is taking all security measures to address concerns.
The sources in the government told India Today TV the government has asked it to reinforce its security wall, and that no more breaches in the messaging platform will be tolerated.


/* @flow */
import isFunction from 'lodash/isFunction';
import { Promise } from 'bluebird';
import { mapProperties } from './utils';
export const SELF_THEN_CHILDREN = 'SELF_THEN_CHILDREN';
export const PROPERTIES_MODE = 'PROPERTIES_MODE';
export const CALL_ORDER = {
SELF_THEN_CHILDREN: SELF_THEN_CHILDREN,
PROPERTIES_MODE: PROPERTIES_MODE
};
export default class CommandNode {
commands: Object;
context: Object;
properties: Object;
id: string;
children: Array<CommandNode>;
constructor(
commands: Object,
context: Object,
properties: Object,
id: string,
children: Array<CommandNode> = []
) {
this.commands = commands;
this.context = context;
this.properties = properties;
this.id = id;
this.children = children;
}
callFuncs(): Object {
return mapProperties(
this.properties,
(value: any): any => (isFunction(value) ? value(this.context) : value)
);
}
/**
* Execute this CommandNode and call it's children.
*
* By default this executes and it's children in parallel.
* Each child would also by default execute it's own children
* in parallel, so the entire command tree will execute in
* parallel and resolve when the last straggler resolves.
*
* But there are many cases where you wish to block and
* complete execution before progressing down the tree.
* eg. booting a server before communicating with it.
*
* So a Dryad may pass a callOrder flag in the commands to
* specify one of several modes of blocking.
*
* {
* callOrder: CALL_ORDER.SELF_THEN_CHILDREN
* }
*
* The modes are:
*
* SELF_THEN_CHILDREN - First execute this, when it resolves
* then call the children (in parallel).
* This is useful if the Dryad is something like booting a
* process that the children will need to call communicate with.
* Wait until the process is booted before proceeding.
*
* PROPERTIES_MODE - Special case for dryads in properties.
* The children of Properties are:
*
* [dryadicProperty1, dryadicProperty2 ... PropertiesOwner].
*
* So this mode specifies that each of the dryadicProperties
* needs to complete before proceeding to the PropertiesOwner.
*
* Default is this and children in parallel.
*/
call(
stateTransitionName: string,
middlewares: Array<Function>,
updateContext: Function
): Promise<*> {
// console.log('CommandNode.call', stateTransitionName, this.context.id, this.commands, this.commands.callOrder || 'parallel');
const execSelf = this.execute(
stateTransitionName,
middlewares,
updateContext
);
const call = child =>
child.call(stateTransitionName, middlewares, updateContext);
if (!this.commands.callOrder) {
return Promise.all([execSelf].concat(this.children.map(call)));
}
switch (this.commands.callOrder) {
case SELF_THEN_CHILDREN:
return execSelf.then(() => {
// TODO: remove this return and the tests should fail
return Promise.all(this.children.map(call));
});
case PROPERTIES_MODE:
return execSelf.then(() => {
// the properties dryads
return Promise.all(this.children.slice(0, -1).map(call)).then(() =>
call(this.children.slice(-1)[0])
);
});
default:
throw new Error(
`callOrder mode not recognized: ${this.commands.callOrder}`
);
}
}
/**
* Execute this CommandNode's commands
*/
execute(
stateTransitionName: string,
middlewares: Array<Function>,
updateContext: Function
): Promise<*> {
let properties = this.callFuncs();
const calls = middlewares.map((middleware: Function) => {
return middleware(this.commands, this.context, properties, updateContext);
});
return Promise.all(calls).then(
() => {
updateContext(this.context, { state: { [stateTransitionName]: true } });
},
(error: Error) => {
// log error
updateContext(this.context, {
state: { [stateTransitionName]: false, error }
});
error.message = `${error.message} in ${this.context.id}`;
return Promise.reject(error);
}
);
}
}
|


|
Introduction to R Bern R Bootcamp |
from TED.com
In this practical you’ll do basic statistics in R. By the end of this practical you will know how to:
glm()
and lm()
.summary()
, anova()
, and names()
.lme4
and BayesFactor
packages.Open your BernRBootcamp
R project. It should already have the folders 1_Data
and 2_Code
. Make sure that all of the data files listed in the Datasets
section are contained in the 1_Data
folder.
Open a new R script and save it as a new file called statisticsII_practical.R
in the 2_Code
folder. At the top of the script, using comments, write your name and the date. The, load the set of packages listed in the Functions
section with library()
.
For this practical, we’ll use the gap.csv
data. This dataset contains data from three years on economic and health variables of 139 countries. Using the following template, load the data into R and store it as a new object called gap
.
gap <- read_csv(file = "XX")
print()
, summary()
, and head()
, explore the data to make sure it was loaded correctly.lm()
healthExp
) and child mortality (childMort
) using a regression with child mortality as the criterion and health expenditure as the predictor. Simply complete the code below.mort_lm <- lm(formula = XX ~ XX,
data = XX)
Print your mort_lm
object to see the main results.
Use the summary()
function to return a data frame containing the main results of the linear regression. Evaluate the test results: Does health expenditure significantly predict child mortality? How much variance is explained by health expenditure (Tip: look for Multiple R-squared)?
 One way to confirm this is via a simple plot by plugging the two variables into the code below (don’t worry you learn how to do fancier plots in the next sessions).
plot(gap$XX, gap$XX, log = "xy")
gdpPercap
) as a second predictor.mort_lm <- lm(formula = XX ~ XX + XX,
data = XX)
Have the results changed? Which predictor is more strongly related to child mortality? Evaluate using summary()
.
GDP per capita is the better predictor of child mortality. Now play around a bit. Find out if the two predictors interact or whether any of the other numeric
(!) variables significantly improve the prediction of child mortality.
lm()
lm()
. Technically, an ANOVA is a regression using dummy variables to code each of the predictor levels in the ANOVA. To see this, predict child mortality using continent
and print the resulting model.mort_anova <- lm(formula = XX ~ continent,
data = XX)
mort_anova
continent
except the first (Africa
), which in this case is represented by the intercept ((Intercept)
). Running an ANOVA we are, of course, usually interested in the main effect of the variable continent
rather than that of the individual levels of the continent
variable. To get the main effect and a typical ANOVA output, simply apply the anova()
function to the linear model object.mort_anova <- lm(formula = XX ~ continent,
data = XX)
anova(mort_anova)
anova()
function.glm()
Logistic regressions (and regular regressions) can be run using glm()
, R’s general linear model function. It works just like the regular lm()
function, adding only a family
argument that specifies the probabilistic function linking the predictors and the criterion. For logistic regression this is family = 'binomial'
to specify a logistic link function.
Prior running a logistic regression, you will have to create your criterion, as there is currently no categorical, two-valued (binary) variable included in the dataset. Create a variable called co2_largermed
in the gap
dataset that carries a 1
if CO2 emissions per person are higher than the median value of that variable and 0
if they are smaller or equal. (Tip: Use mutate()
, case_when()
, and median(x, na.rm = TRUE)
).
Now run a logistic regression predicting co2_largermed
using population (pop
) and GDP per capita (gdpPercap
) and evaluate the result using summary()
. See code below. (Note: Don’t worry about the warning, if you receive one)
co2_glm <- glm(formula = co2_largermed ~ XX + XX,
data = XX,
family = "XX")
summary(co2_glm)
Not very surprisingly, both high population (pop
) and high GDP per capita (gdpPercap
) seem to be associated with higher than median CO2 emission. However, it is possible that the interaction of the two variables is driving the effect, i.e., that CO2 emissions are large only for countries with high GDP per capita and high population. Test this by also including the interaction effect via var_1 * var_2
.
Indeed, it seems that interaction is most important for the prediction of CO2 emissions. But again there is a caveat. By default R implements the interaction of two predictors using their uncentered product as the interaction term. As a result the interaction term will be highly correlated with the original predictors, rendering it difficult to interpret the results. To deal with this issue, create new, centered versions of pop
and gdpPercap
called pop_cent
and gdpPercap_cent
using mutate()
and scale(scale = FALSE)
.
Now, evaluate the model formula co2_largermed ~ pop + gdpPercap + pop_scaled:gdpPercap_scaled
, which implements the interaction of the scaled and centered variables, (i.e., run the logistic regression with the above formula and apply summary()
).
All three, the two variables and their interaction, significantly predict higher than median CO2 emissions. This was obscured before because of the inter-correlation between the predictors. If you like, you can confirm that both models, with centered and uncentered interactions, predict the criterion equally well using rsq()
from the rsq
package. The rsq()
function computes the overall R-squared value for generalized linear models.
co2_cent_glm <- glm(formula = co2_largermed ~ pop + gdpPercap +
pop_cent:gdpPercap_cent,
data = gap,
family = "binomial")
co2_noncent_glm <- glm(formula = co2_largermed ~ pop * gdpPercap,
data = gap,
family = "binomial")
rsq(co2_cent_glm)
rsq(co2_noncent_glm)
lm()
and glm()
contain a lot of result objects. To see those, inspect the final mort_lm
object of section B using names()
.names(XX)
lm
object includes among others objects the vector of residuals, i.e., the error committed in predicting each point of the criterion. Using the residuals central assumptions of a regression can be tested, namely that the true relationship is linear and that error variance is of equal size across the entire predictor space. Evaluate the two assumptions by plotting the residuals (y-axis) onto the fitted values (x-axis). If both assumptions are true, then the residuals should scatter equally broad across the range of fitted values with an average of roughly zero.plot(mort_lm$XX, mort_lm$XX)
mort_lm <- lm(formula = log(XX) ~ log(XX) + log(XX),
data = XX)
So far we have ignored the fact that there were three measurements for each country and that those data should be modeled as repeated measurements. One way to do this is via linear mixed-effects models.
mort_lmer <- lmer(formula = childMort ~ gdpPercap + (1|country),
data = gap)
mort_lmer
and evaluate using summary()
. Notice any difference to the typical lm()
outputs?There are, at least, two important observations. First, there are no p-values associated with the t-values, which is due to the fact that mixed-effects models require complex adjustments for the degrees of freedom required to determine p-values. Second, there are two sections of effects, random and fixed. The random effects refer to the ones estimated on the country level, whereas the fixed effects refer to ones estimated irrespective of country.
anova()
compare the mort_lmer
to the standard lm()
model predicting child mortality with GDP per capita. A significant result will indicate that the model without random intercepts is significantly worse than the model with random intercepts.Finally, let us turn to new (old) kid in town, Bayesian statistics. With today’s computing power, long existing Bayesian statistics have become a viable alternative for practically all Frequentist (i.e., classic) analysis approaches. In R, Bayesian methods for linear models have been made available among others through the BayesFactor
package.
regressionBF
function of the BayesFactor
package predicting child mortality using GDP per capita. (Note: Contrary to other functions regressionBF()
and other BayesFactor
functions require that NAs are removed beforehand).# Bayesian lm
mort_blm <- regressionBF(formula = childMort ~ gdpPercap,
data = gap %>%
filter(!is.na(childMort)))
Evaluate mort_blm
by printing it. You’ll see a very different output showing only the BayesFactor, a metric specifying the amount of evidence in the data against the hypothesis of the predictor having no effect on the criterion.
What is missing from the output are the actual estimates for the predictor. To extract those, you need to sample from the posterior distribution and then average across the samples.
# sample from posterior
post <- posterior(mort_blm, iterations = 1000)
# get estimates
colMeans(as.matrix(post))
lm()
. How similar are they?# Examples of regression models on the diamonds dataset -------------
library(tidyverse)
library(broom)
library(BayesFactor)
library(lme4)
# First few rows of the diamonds data
diamonds
# Regression ----------------------------
# Q: Run regression predicting price by carat and depth
price_lm <- lm(formula = price ~ carat + depth,
data = diamonds)
# Print coefficients
price_lm$coefficients
# Regular summary
summary(price_lm)
# Tidy version
tidy(price_lm)
# Q: Run regression predicting price by carat and depth and their interaction
price_lm <- lm(formula = price ~ carat * depth,
data = diamonds)
# Print coefficients
price_lm$coefficients
# Regular summary
summary(price_lm)
# Tidy version
tidy(price_lm)
# ANOVA ----------------------------
# Q: Run ANOVA predicting price by color and cut
# transform to factor
dimaonds$cut = as.factor(diamonds$cut)
dimaonds$color = as.factor(dimaonds$color)
# Run model
price_lm <- lm(formula = price ~ cut + color,
data = diamonds)
# Print coefficients
price_lm$coefficients
# Regular summary
summary(price_lm)
# Tidy version
tidy(price_lm)
# ANOVA version
anova(price_lm)
# Mixed-effects regression ----------------------------
# Q: Run mixed-effect regression predicting carat and depth with the impact of carat varying across color.
# Run model
price_lme <- lmer(formula = price ~ carat + depth + (1 + carat|color),
data = diamonds)
# Regular summary
summary(price_lme)
# Bayesian regression ----------------------------
# Q: Run Bayesian regression predicting carat and depth
# Run model
price_Blm <- regressionBF(formula = price ~ carat + depth,
data = diamonds)
# Regular summary
price_Blm
| File | Rows | Columns | Description |
|---|---|---|---|
| gap.csv | 417 | 9 | Country statistics from 1997, 2002, and 2007 from the Gapminder Foundation. |
The Gapminder Foundation is a non-profit venture registered in Stockholm, Sweden, that promotes sustainable global development and achievement of the United Nations Millennium Development Goals by increased use and understanding of statistics and other information about social, economic and environmental development at local, national and global levels (see Gapminder.org). The present dataset is an excerpt of their database holding data from three years on economic and health variables of 139 countries.
| Variable | Description |
|---|---|
| country | country name |
| continent | country’s continent |
| year | measurement year |
| lifeExp | life expectancy at birth, in years |
| pop | country’s population |
| gdpPercap | country’s GDP per capita (US$) |
| childMort | child mortality (0-5 year-olds dying per 1,000 born) |
| co2Emit | CO2 emissions (tonnes per person) |
| healthExp | Government health spending per person (international $) |
| Package | Installation |
|---|---|
tidyverse |
install.packages("tidyverse") |
rsq |
install.packages("rsq") |
lme4 |
install.packages("lme4") |
BayesFactor |
install.packages("BayesFactor") |
Model functions
| Function | Package | Description |
|---|---|---|
lm() , glm() |
stats |
(Generalized) linear models |
lmer() , glmer() |
lme4 |
(Generalized) linear mixed-effects models |
regressionBF() , lmBF() |
BayesFactor |
Bayesian (generalized, mixed-effects) linear models |
Inspect models
| Function | Package | Description |
|---|---|---|
print() |
base |
Standard printout |
summary() |
base |
Standard model evaluation |
anova() |
stats |
ANOVA model evaluation and model comparison |
names() |
base |
Print names of objects contained in model output |
For more advanced mixed level ANOVAs with random effects, consult the afex
and lmer
packages.
To do Bayesian versions of common hypothesis tests, try using the BayesFactor
package. BayesFactor Guide Link


--- title: Daffodils at Red Butte Garden layout: default ---
History
Red Butte Garden presents a stunning display each spring of over 450,000 bulbs (to date), 230,000 of which are daffodils. Daffodils were chosen as a prominent component due to their long lifespan, wide diversity of color, size and bloom type, and dislike by wildlife such as deer and squirrels.
The Red Butte Garden daffodil display started in 2003 in the Four Seasons Garden. The Four Seasons Garden, situated on a hill facing the Visitor Center, is the first thing that visitors see when they enter the Garden. This garden space, composed of large masses of plants best appreciated when viewed from a distance, lends itself well to a massive display of daffodils, with varieties chosen that, due to their size and color, stand out from a distance.
The next phase in the daffodil display developed when local landscape designer, Peter Lassig, created a stunning design for the Floral Walk.
In the spring of 2007, Mr. Lassig walked the Floral Walk weekly to observe what was happening in different display areas along the walk that would coincide with the bulb bloom. He then created daffodil combinations for each area, with varying bloom times to extend the bloom season. In all, over 60 different varieties of daffodils were used in unique combinations that changed along the length of the Floral Walk. The bulbs were planted in fall 2007, with the first bloom in spring 2008. The design was evaluated in the spring, and additions were made in fall 2008.
In 2009, Mr. Lassig, along with horticulturists Crystal Reece and Cheryl Underwood, designed and planted the first phase of a spring bulb display for the newly completed Rose Garden. The design includes miniature bulbs such as dwarf irises and Chionodoxa that complement early blooming daffodils. The final phase of the Rose Garden spring bulb display was planted in the fall of 2013.
Location
Red Butte Garden is home to over 160 cultivars and species of Narcissus, representing all 13 daffodil divisions. Daffodils can be viewed throughout the garden, but the highest concentrations are found in the Four Seasons Garden, Floral Walk and Rose Garden.
At Red Butte Garden, the purpose of our Narcissus display is to show the wide variety of Narcissus, emphasizing the diversity of ornamental characteristics such as flower form, size, color, and bloom time.
As we continue to expand and diversify our display, we seek to promote the beauty and diversity of the genus Narcissus including representatives of all hardy Narcissus divisions, unusual or rare species, and representatives of taxa with notable fragrance and diverse plant size and foliage.
Description of Display Collection
In 2013, Red Butte Garden was recognized as an official Daffodil Display Garden by the American Daffodil Society. The display represents all 13 recognized divisions, which are based on floral parts and species derivation. Divisions include: Trumpet, Large-Cupped, Small-Cupped, Double, Triandrus, Cyclamineus, Jonquilla, Tazetta, Poeticus, Bulbocodium, Split-Cupped, Miscellaneous, Species and wild forms, and Miniatures. The display also includes many recipients of the Wister and Panil Awards, which recognize outstanding American hybridizers and daffodil selections. Click HERE to read more about Daffodil divisions from the American Daffodil Society.
|
|
|
|
|
|
|
|
Daffodils are members of the genus Narcissus. They originate from southwestern Europe and North Africa. Daffodils are great garden perennials. They are virtually pest-free and are drought-tolerant. They require water in the spring while blooming and growing, which is usually met by typical spring rainfall. Because they are dormant in summer, they easily tolerate hot, dry summers. They are very cold hardy, and actually require a certain amount of cold temperatures to stimulate root and flower development. If planted correctly, they will multiply and live happily in your garden for many years.
Plant daffodils in any deep, well-drained soil in full sun. Planting beneath deciduous trees is okay if the trees leaf out after the bulbs have finished for spring and if tree roots don’t interfere with planting.
Bulbs are planted in the fall when the soil temperature has cooled below 54°F but hasn't frozen yet. Along the Wasatch Front, bulbs can be planted through October and even into November, depending on weather.
Bulbs are in good condition if they are firm and free of white mold (some blue-gray mold is okay and does not affect growth). Discard any soft, moldy bulbs.
Plant daffodil bulbs at a depth two to three times the diameter of the bulb, which is usually about 6-8” deep. Space bulbs about three times the width of the bulb apart so that they have plenty of room to establish and multiply.
The top of the bulb, from which the shoot emerges, is more narrow and pointed than the base. The base is rounded, with some of the previous year’s dried, hair-like roots attached to its somewhat flattened bottom. Plant the bulbs pointed side up.
Fertilizer is not necessary unless you have very poor soil. If you do use fertilizer, mix it into the soil at the bottom of the hole before planting.
If it is a dry autumn, make sure to irrigate your plantings well, since roots start growing in fall. The cool weather of fall is great for growing roots.
Peak bloom at Red Butte Garden: April
For more information about Daffodils please visit the the American Daffodil Society website.


Home
Data
Data by State
Demography
Ranking
Analysis
Collected Data can be filtered by state
Here, the data for every state in India is shown for every date along with date wise district data.
State Name
All
West Bengal
Uttarakhand
Uttar Pradesh
Tripura
Telangana
Tamil Nadu
Rajasthan
Punjab
Puducherry
Odisha
Mizoram
Meghalaya
Manipur
Maharashtra
Madhya Pradesh
Ladakh
Kerala
Karnataka
Jharkhand
Jammu and Kashmir
Himachal Pradesh
Haryana
Gujarat
Goa
Delhi
Chhattisgarh
Chandigarh
Bihar
Assam
Arunachal Pradesh
Andhra Pradesh
Andaman and Nicobar Islands
Date:
Daily Data(y/n):
No
Yes
Download


About Your_Instance
Your_Instance description
Your_Instance is a way to join the Fediverse, to be part of a community, and to reclaim your freedom of speech in social media.
Site rules
Please refrain from:
- Posting anything illegal.
- Posting pornography.
- Intentionally creating multiple accounts to circumvent people blocking you.
- Being a bot (unless you post unlisted and do not auto-follow).
- Any account setup solely to advertise a product or service.
What won't get you banned:
- Hurting someone's feelings.
- Unpopular opinions voiced respectfully.
- Anything that can be solved by a personal block.
- Cursing.
- Lewd jokes.
- A bot where all posts are unlisted.
Open Source Software
Soapbox is free and open source (FOSS) software.
The Soapbox repository can be found at Soapbox


Home
Wine
Contact
Click at the wine to discover more below... and choose your :)
Podão
Talha
Rodo
Click, drag and drop to vote
Choose you best wine
Podão
Talha
Rodo
Vote zone
--1°-->
--2°-->
--3°-->
VOTE!


NAQT was created by a group of tournament veterans with the aim of providing quality questions at a low cost. The format, question difficulty, and question distribution will all follow the guidelines of the Penn Bowl/Michigan MLK Tournaments. Each game will consist of two 9-minute halves. Questions will be drawn from mostly academic subjects (history, literature, science, etc.), though non-academic subjects such as current events, pop culture, and sports will also be represented. For more information about NAQT see the NAQT web site or send email to<EMAIL_ADDRESS>To register for NAQT Regionals at Maryland, contact Lord High Tournament Director Jesse Molesworth via email at<EMAIL_ADDRESS>or via telephone at<PHONE_NUMBER>. The last day to register for this tournament is November 9.
The tournament fees will be the following:
$70 base fee -$10 for bringing a working buzzer system -$10 for bringing a working clock -$20 for teams who have competed in two or fewer tournaments within the past year (ACU-I events excluded)
Question sets will be available after the tournament for the price of $25.
A preliminary cap of 30 teams has been set. However, if there is sufficient interest, we will expand the tournament as resources permit. Priority will be given initially to first teams from each college or university. The exact tournament format will be determined by the size of the field; however, each team can expect to play at least 15 round-robin matches. If brackets are necessary, a round-robin playoff (similar to ACF Nationals) will be used.
Jesse Molesworth
Tournament Director, NAQT


Client View
Account Balance:
Deductible Total:
Add Money
Add
Client Paid To Date:
Loading...
Total Paid:
Sedgwick View
Client Payment:
Waiting for Payment...
Insurance Payment:
Waiting for Payment...
Make Payment
Pay
Insurer View
Account Balance:
Add Money
Add


Kerosene Poisoning:
It is caused by the accidental or intention ingestion of Kerosene
Signs and Symptoms
- Nausea and vomiting
- Stomach and abdominal pains
- Sudden reduction in blood pressure (hypotension)
- Seizures
- Skin burns
- Collapse
Treatments
Take the person to a health centre immediately or
call emergency at +19145956140
Provide them with information such as the compound taken, quantity
and time of ingestion, age, weight and general health status of
affected person
Remove contaminated clothing and thoroughly wash the skin with soap
and water.
If possible perform pulse oximetry and give supplemental oxygen if
indicated. Intubation and mechanical ventilation may be needed in a
patient with severe hypoxia, respiratory distress or decreased
consciousness.
Avoid gastric lavage because of the risk of inhalation and hence
pneumonitis. If very large amounts of kerosene have been ingested
less than an hour earlier then lavage may be considered if the
airway can be protected by expert intubation.
Place the individual in a comfortable seated position in a
well-ventilated space; try to avoid making them lie down
If the individual is unconscious, make them lie on their side, to
prevent aspiration of vomit into their lungs
Following an ingestion of the substance, immediately give water to
drink


| Match (round) | Player 1 | Player 2 | Station |
|---|---|---|---|
| {{match.match.identifier}} ({{ determineRound(match.match.round) }}) | {{ participants[match.match.player1_id] }} {{ 'Winner of ' + match_ids[match.match.player1_prereq_match_id].id }} {{ 'Loser of ' + match_ids[match.match.player1_prereq_match_id].id }} | {{ participants[match.match.player2_id] }} {{ 'Winner of ' + match_ids[match.match.player2_prereq_match_id].id }} {{ 'Loser of ' + match_ids[match.match.player2_prereq_match_id].id }} |
-
{{match.match.station}}
|


Type check¶
In this section, you will learn about the following things:
- Basic usage of type check
- Detail of type information
- Internal mechanism of type check
- More complicated cases
- Call functions
- Typical type check example
After reading this section, you will be able to:
- Write a code to check types of input arguments of your own functions
Basic usage of type check¶
When you call a function with an invalid type of array, you sometimes receive no error, but get an unexpected result by broadcasting. When you use CUDA with an illegal type of array, it causes memory corruption, and you get a serious error. These bugs are hard to fix. Chainer can check preconditions of each function, and helps to prevent such problems. These conditions may help a user to understand specification of functions.
Each implementation of Function
has a method for type check, check_type_forward()
.
This function is called just before the forward()
method of the Function
class.
You can override this method to check the condition on types and shapes of arguments.
check_type_forward()
gets an argument in_types
:
def check_type_forward(self, in_types):
...
in_types
is an instance of TypeInfoTuple
, which is a sub-class of tuple
.
To get type information about the first argument, use in_types[0]
.
If the function gets multiple arguments, we recommend to use new variables for readability:
x_type, y_type = in_types
In this case, x_type
represents the type of the first argument, and y_type
represents the second one.
We describe usage of in_types
with an example.
When you want to check if the number of dimension of x_type
equals to 2
, write this code:
utils.type_check.expect(x_type.ndim == 2)
When this condition is true, nothing happens. Otherwise this code throws an exception, and the user gets a message like this:
Traceback (most recent call last):
...
InvalidType: Expect: in_types[0].ndim == 2
Actual: 3 != 2
This error message means that “ndim
of the first argument expected to be 2
, but actually it is 3
”.
Detail of type information¶
You can access three information of x_type
.
.shape
is a tuple of ints. Each value is size of each dimension..ndim
isint
value representing the number of dimensions. Note thatndim == len(shape)
.dtype
isnumpy.dtype
representing data type of the value.
You can check all members. For example, the size of the first dimension must be positive, you can write like this:
utils.type_check.expect(x_type.shape[0] > 0)
You can also check data types with .dtype
:
utils.type_check.expect(x_type.dtype == np.float64)
And an error is like this:
Traceback (most recent call last):
...
InvalidType: Expect: in_types[0].dtype == <type 'numpy.float64'>
Actual: float32 != <type 'numpy.float64'>
You can also check kind
of dtype
.
This code checks if the type is floating point
utils.type_check.expect(x_type.dtype.kind == 'f')
You can compare between variables. For example, the following code checks if the first argument and the second argument have the same length:
utils.type_check.expect(x_type.shape[1] == y_type.shape[1])
Internal mechanism of type check¶
How does it show an error message like "in_types[0].ndim == 2"
?
If x_type
is an object containing ndim
member variable, we cannot show such an error message because this equation is evaluated as a boolean value by Python interpreter.
Actually x_type
is a Expr
objects, and doesn’t have a ndim
member variable itself.
Expr
represents a syntax tree.
x_type.ndim
makes a Expr
object representing (getattr, x_type, 'ndim')
.
x_type.ndim == 2
makes an object like (eq, (getattr, x_type, 'ndim'), 2)
.
type_check.expect()
gets a Expr
object and evaluates it.
When it is True
, it causes no error and shows nothing.
Otherwise, this method shows a readable error message.
If you want to evaluate a Expr
object, call eval()
method:
actual_type = x_type.eval()
actual_type
is an instance of TypeInfo
, while x_type
is an instance of Expr
.
In the same way, x_type.shape[0].eval()
returns an int value.
More powerful methods¶
Expr
class is more powerful.
It supports all mathematical operators such as +
and *
.
You can write a condition that the first dimension of x_type
is the first dimension of y_type
times four:
utils.type_check.expect(x_type.shape[0] == y_type.shape[0] * 4)
When x_type.shape[0] == 3
and y_type.shape[0] == 1
, users can get the error message below:
Traceback (most recent call last):
...
InvalidType: Expect: in_types[0].shape[0] == in_types[1].shape[0] * 4
Actual: 3 != 4
To compare a member variable of your function, wrap a value with Variable
to show readable error message:
x_type.shape[0] == utils.type_check.Variable(self.in_size, "in_size")
This code can check the equivalent condition below:
x_type.shape[0] == self.in_size
However, the latter condition doesn’t know the meaning of this value. When this condition is not satisfied, the latter code shows unreadable error message:
InvalidType: Expect: in_types[0].shape[0] == 4 # what does '4' mean?
Actual: 3 != 4
Note that the second argument of utils.type_check.Variable
is only for readability.
The former shows this message:
InvalidType: Expect: in_types[0].shape[0] == in_size # OK, `in_size` is a value that is given to the constructor
Actual: 3 != 4 # You can also check actual value here
Call functions¶
How to check summation of all values of shape?
Expr
also supports function call:
sum = utils.type_check.Variable(np.sum, 'sum')
utils.type_check.expect(sum(x_type.shape) == 10)
Why do we need to wrap the function numpy.sum
with utils.type_check.Variable
?
x_type.shape
is not a tuple but an object of Expr
as we have seen before.
Therefore, numpy.sum(x_type.shape)
fails.
We need to evaluate this function lazily.
The above example produces an error message like this:
Traceback (most recent call last):
...
InvalidType: Expect: sum(in_types[0].shape) == 10
Actual: 7 != 10
More complicated cases¶
How to write a more complicated condition that can’t be written with these operators?
You can evaluate Expr
and get its result value with eval()
method.
Then check the condition and show warning message by hand:
x_shape = x_type.shape.eval() # get actual shape (int tuple)
if not more_complicated_condition(x_shape):
expect_msg = 'Shape is expected to be ...'
actual_msg = 'Shape is ...'
raise utils.type_check.InvalidType(expect_msg, actual_msg)
Please write a readable error message. This code generates the following error message:
Traceback (most recent call last):
...
InvalidType: Expect: Shape is expected to be ...
Actual: Shape is ...
Typical type check example¶
We show a typical type check for a function.
First check the number of arguments:
utils.type_check.expect(in_types.size() == 2)
in_types.size()
returns a Expr
object representing the number of arguments.
You can check it in the same way.
And then, get each type:
x_type, y_type = in_types
Don’t get each value before checking in_types.size()
.
When the number of argument is illegal, type_check.expect
might output unuseful error messages.
For example, this code doesn’t work when the size of in_types
is 0:
utils.type_check.expect(
in_types.size() == 2,
in_types[0].ndim == 3,
)
After that, check each type:
utils.type_check.expect(
x_type.dtype == np.float32,
x_type.ndim == 3,
x_type.shape[1] == 2,
)
The above example works correctly even when x_type.ndim == 0
as all conditions are evaluated lazily.


Menu
Add another page flag.html which has three links showing three different country names. Each country flag should be displayed when the user clicks the country link. The flags should be created using pure HTML/CSS (no images).


Controls:
Page Up
/
Page Down
to zoom out/in
Cursor keys: make the cube rotate (the longer you hold down a cursor key, the more it accelerates)
F
to toggle through three different kinds of texture filters


Sistema Clinico
Sign in to start your session
" method="post">
Username
Password
Remember Me
Sign In
- OR -
Sign in using Facebook
Sign in using Google+
I forgot my password
Register a new membership


Given a dataset of insurance policies with one row for each of them, the function first
expands it in such a way that each policy has n rows, where n is the number of years the contract is
in force, then it duplicates the rows, so that each policy has n x 2 rows. In this way the dataset is
suited to be passed to the function optimize_exposure()
.
expand_portfolio( .data, .polnr, .claim, .claimdate, .inceptiondate, .termdate, .lapse, .lapsedate )
| .data | A data frame of insurance policies that has one single row for each policy. |
|---|---|
| .polnr | A column of .data with the policy identification numbers. |
| .claim | A column of .data with 1 if the claim occurred, 0 otherwise. |
| .claimdate | A column of .data with the date of the claim, if any, otherwise 2099-12-31. |
| .inceptiondate | A column of .data with the starting date of the policies. |
| .termdate | A column of .data with the expiry date of the policies. |
| .lapse | A column of .data with 1 if the policy is lapsed, 0 otherwise. |
| .lapsedate | A column of .data with the date of the lapse, if any, otherwise 2099-12-31.#' @param .claim A column of .data with 1 if the claim occurred, 0 otherwise. |
A dataset with n x 2 rows for each policy, where n is the number of years the contract is in force.
data(onerow_lifepolicies) onerow_lifepolicies %>% expand_portfolio( .polnr = Policy_id, .claim = Claim, .claimdate = Claim_date, .inceptiondate = Inception_date, .termdate = Term_date, .lapsedate = Lapse_date, .lapse = Lapse )#> # A tibble: 29,962 x 12 #> Policy_id Inception_date Waiting_period Term_date Birth_date Gender UY #> <dbl> <date> <int> <date> <date> <chr> <dbl> #> 1 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 2 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 3 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 4 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 5 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 6 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 7 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 8 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 9 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> 10 1019640 2012-11-01 2 2016-11-01 1945-03-10 F 2012 #> # ... with 29,952 more rows, and 5 more variables: CY <int>, Claim_date <date>, #> # Claim <dbl>, Lapse_date <date>, Lapse <dbl>


MBScopedVariables Class Reference
| Inherits from | MBFormattedDescriptionObject |
|---|---|
| Conforms to | NSCopying |
| Declared in | MBScopedVariables.h |
Overview
Provides a mechanism for maintaining scoped variable values in the
context of a particular MBVariableSpace
instance.
About variable scopes
A variable scope allows the creation of a short-lived values for named Mockingbird variables.
The MBScopedVariables
class provides an interface for entering and
exiting a variable scope.
When a scope is entered, an MBScopedVariables
instance is associated
with the calling thread. That instance can then be used to set values for
scoped variables. When a scoped variable value is set, it is pushed
on top of the existing value (if any) in the associated MBVariableSpace
.
When the scope is exited, any scoped variable values that were set are
then popped from the associated MBVariableSpace
, restoring it to the
state that existed before the scope was entered.
Setting a scoped variable
To set a scoped variable, you first need an MBScopedVariables
instance.
If there’s already a scope associated with the calling thread, you can
retrieve it by calling:
MBScopedVariables* scope = [MBScopedVariables currentVariableScope];
If there’s no pre-existing scope, or if you want to create a new scope that masks any existing scope, you would call:
MBScopedVariables* scope = [MBScopedVariables enterVariableScope];
Once you’ve got a scope instance, you can use the keyed subscripting notation to set a scoped variable:
NSString* userName = ... // a string set elsewhere
scope[@"user"] = userName;
The value userName
is then pushed onto the Mockingbird variable stack
for the name “user
”. If there is a pre-existing value for the “user
”
variable, it is temporarily masked by the new value. When the scope is
exited—or when a scope’s unsetScopedVariables
method is called—the “user
”
variable will be popped, and the previous value will be restored.
Exiting the current scope
When you no longer need a scope that you’ve previously entered, you must call:
[MBScopedVariables exitVariableScope];
It is considered a coding error if you do not explicitly exit a scope you’ve previously entered.
For performance reasons, you should keep any scopes you create as short-lived as possible.
Threading concerns
Although a given MBScopedVariables
instance is specific to the thread that
created it, the underlying MBVariableSpace
manipulated by the scope is
a global resource. Therefore, values set within your scope will be visible
to all threads until your scope is exited.
Other Methods
variableSpace
Returns the MBVariableSpace
instance in which the scoped variables will
be stored.
@property (nonnull, nonatomic, readonly) MBVariableSpace *variableSpace
Declared In
MBScopedVariables.h
Thread-local scoped variables
+ currentVariableScope
Returns the MBScopedVariables
instance that represents the current
variable scope associated with the calling thread.
+ (nullable instancetype)currentVariableScope
Return Value
The current scope, or nil
if there isn’t one.
Declared In
MBScopedVariables.h
+ enterVariableScope
Enters a new variable scope on the calling thread using the MBVariableSpace
associated with the current MBEnvironment
.
+ (nonnull instancetype)enterVariableScope
Return Value
A newly-created MBScopedVariables
instance representing
the new scope. Until the scope is exited, code running on the
calling thread will be able to retrieve this scope through
the currentVariableScope
method.
Discussion
Note: Although only the calling thread will see this scope through
the currentVariableScope
method, variable values set using this
scope will be visible to all threads through the MBVariableSpace
associated with the scope.
Warning: All calls to enterVariableScope
must be balanced by a
corresponding call to exitVariableScope
. Failing to do this
is a coding error.
Declared In
MBScopedVariables.h
+ exitVariableScope
Exits the current variable scope–if there is one–associated with the
calling thread. Any variables set within the scope being exited will be
removed from that scope’s variableSpace
, and the variable values will
return to what they were prior to entering the scope.
+ (nullable instancetype)exitVariableScope
Return Value
The MBScopedVariables
instance representing the scope that
was exited, or nil
if there was no current scope at the time
of calling and therefore there was no scope to exit.
Declared In
MBScopedVariables.h
Getting & setting scoped variable values
– objectForKeyedSubscript:
Allows accessing scoped variable values using the keyed subscripting notation.
- (nullable id)objectForKeyedSubscript:(nonnull NSString *)variableName
Parameters
variableName |
The name of the scoped variable whose value is to be retrieved. |
|---|
Return Value
The in-scope value of the MBML variable named variableName
.
Discussion
For example, the following Objective-C code:
[MBScopedVariables currentVariableScope][@"tempVar"];
would yield the in-scope value of the Mockingbird variable named tempVar
.
Declared In
MBScopedVariables.h
– setObject:forKeyedSubscript:
Allows setting a scoped variable value using the keyed subscripting notation.
- (void)setObject:(nullable id)value forKeyedSubscript:(nonnull NSString *)variableName
Parameters
value |
The new value for the MBML variable. |
|---|---|
variableName |
The name of the scoped variable whose value is to be set. |
Discussion
For example, the following Objective-C code:
[MBScopedVariables currentVariableScope][@"tempVar"] = @"will go away";
would set the in-scope value of the MBML variable named tempVar
to the
string “will go away
”.
Warning: An NSInvalidArgumentException
is raised if variableName
is nil
or is not an NSString
.
Declared In
MBScopedVariables.h
Unsetting & reapplying the variable scope
– unsetScopedVariables
Removes from the receiver’s variableSpace
all variables set using the scope.
The values in the variableSpace
will return to what they were prior to the
scope becoming active.
- (void)unsetScopedVariables
Declared In
MBScopedVariables.h
– reapplyScopedVariables
Reapplies any scoped variables that were previously unset using
unsetScopedVariables
(and have not been set again since).
- (void)reapplyScopedVariables
Discussion
The reapplied variable values will be reflected in the receiver’s
variableSpace
until the scope is exited or the receiver’s
unsetScopedVariables
method is called.
Declared In
MBScopedVariables.h


?HERBARIUM
OF
THE
NEW
YDRK
BOTANICAL
GARDEN
plants
OF
DOMINICAN
REPUBLIC
1903
Dipholis
salicifolia
(L.)
DC.
Tree,
6-8
m
tall,
flowers
white,
fragrant.
In
thickets,
on
limestone
soil.
San
Crist—bal.
NEW
YORK
BOTANICAL
GARDEN
0144:
891
êEW
Yo^
BOTANICAL
ARDEN
Collected
by
Basilio
A.
Lavastre
March
6,
1965
T.D.PENNINGTON
1986
FLORA
NEOTROPICA
Si
deroxylon
sal
i
ci-f
ol
i
urn
(L.
)
Lam.
01443891
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Elite teams in top-flight spotlight in the Preston & District Snooker League
by Peter StoreyWeek eight of the Preston and District Snooker League season saw a clash of the four Elite Snooker Club teams ‘– A’, ‘B’, ‘C’ and ‘E’ – take each other on for top-dog bragging rights in Division One.
The ‘C’ team clash against the ‘B’ team started off with a bang with 25 year old Johnny Hannon putting in the performance of the night against the No.1-ranked player Nev Whalley.
Hannon compiled a superb break of 83 to take the frame, and his team-mate Terry Parkinson Jnr knocked in a break of 59, making the match all square at 2-2.
However, last year’s champions Elite ‘C’ came out the eventual winners 4-3 with Craig Millward nicking the final frame of the night to seal the win.
Elite ‘A’ had a tough game against ‘hosts’ Elite ‘E’ with the first frame seeing ex-professional Chris Norbury making a break of 89 to win his frame, giving his team a 5-2 win.
The ‘E’ team, who came up from Division Two are certainly proving that they are more than capable of playing in the top division on the evidence of the season so far.
St Gregory’s ‘A’ had another successful night at home against Brownedge Blue with a 5-2 home win.
The highest break of the night from James Peoples (45) was not, however, enough to win the frame against Rob Dodd who himself had a 30-break to take the frame 75-50.
Eccleston ‘A’ had the biggest win of the evening with a 7-0 home victory against St Wilfrid’s.
Mick Burke recorded the highest break of the match with 41.
In Division Two, St Gregory’s ‘B’ kept up their winning form away to St Wilfrid’s ‘B’ with a 6-1 win, Ryan Hough having the best break of 44 on the night keeping themselves top of the division.
St Anthony’s ‘B’ also kept up the pace at the top of the table with a 6-1 away win having played two fewer games and just eight points behind St Gregory’s ‘B’.
Andy Brady (St Anthony’s) knocked in a break of 62 making this the biggest of the night and the best in Division Two this season so far.
Lostock Cons ‘A’ had a great night with a 4-3 away win at Euxton Institute.
Lea Social also had a good away win to New Longton of 5-2, Sam Leeming (Lea Social) compiling a break of 36 to inspire the team forwards.
In Division Three, Deepdale Joes shot to the top of the charts with a 6-1 win at Broughton ‘B’.
Elite Red came out as victors away to Moor Park Cons with a 4-3 win, Steve Jones with a notable 101-10 points win for the Red team.
Fulwood Blue won away to St Anthony’s ‘A’ 5-2, breaks for the night came from Russ Lofthouse (St Anthony’s) 31 and Mehl Singh (Fullwood) 30.
And finally New Meadow St ‘B’ completed the last away win of 5-2 at St Gerards with Nish Barot (New Meadow) putting in the performance of the night with a break of 45.
Elite ‘D’ managed another home win 6-1 to the Juniors team in Division Four.
The Elite ‘F’ team won by the the same scoreline over Moor Park Eddie’s, keeping the Elite ‘F’ firmly at the top with a 10-point advantage over second-place Fox Lane who themselves had an away win 5-2 over Whittingham ‘A’.
Whittingham ‘B’ lost away to Lostock Cons ‘B’ with the same score of 5-2.
Nets Bar are keeping up the good form with another home win of 5-2 against Ashton BC ‘A’ moving themselves up into third position and quietly making a move for the promotion.
PRESTON & DISTRICT SNOOKER LEAGUE
DIVISON ONE: Brownedge Red 3 Freckleton 4, Eccleston A 7 St Wilfrids 0, Elite C 4 Elite B 3, Elite E 2 Elite A 5, St Georges A 2 Broughton A 5, St Gregory’s A 5 Brownedge Blue 2.
P Pts
Elite A 8 44
Elite C 8 40
St Gregory’s A 8 39
Elite B 8 36
Brownedge Blue 8 35
Eccleston A 8 29
Elite E 8 27
Broughton A 8 26
Freckleton 8 22
Brownedge Red 8 17
St Wilfrids A 8 15
St George’s A 8 6
DIVISION TWO: New Longton 2 Lea Social 5, St Wilfrids 1 St Gregory’s B 6, Bamber Bridge Cons 1 St Anthony’s B 6, Euxton Institute 3 Lostock Cons A 4.
P Pts
St Gregory’s B 8 41
St Anthony’s B 6 33
St Bernard’s 6 25
Euxton Institute 6 23
Lea Social 6 22
Eccleston B 7 20
New Longton 6 18
Lostock Cons A 6 16
St Wilfrids B 7 15
Bamber Bridge Cons 6 11
DIVISION THREE: Broughton B 1 Deepdale Joes 6, Moor Park Cons 3 Elite Red 4, St Anthonys A 2 Fulwood Blue 5, St Gerards 2 New Meadow St B 5.
P Pts
Deepdale Joes 7 27
New Meadow St B 6 26
Acregate A 6 26
Elite Red 6 25
Fulwood Blue 6 24
Ashton BC B 7 23
St Anthony’s A 7 23
Moor Park A 7 20
St Gerard’s 7 19
Broughton B 7 18
DIVISION FOUR: Elite D 6 Elite Juniors 1, Elite F 6 Moor Park Eddies 1, Lostock Cons B 5 Whittingham B 2, Whittingham A 2 Fox Lane 5, Nets Bar 5 Ashton BC B 2.
P Pts
Elite F 7 43
Fox Lane 8 33
Nets Bar 7 30
Elite D 7 28
Wilbraham 55th 7 23
Lostock Cons B 8 23
Ashton BC A 7 22
Moor Park Eddies 7 22
Whittingham B 7 21
Whittingham A 8 18
Elite Juniors 7 17


13
1 See, my eye has seen all this;
My ear has heard and understood it.
2 What you know, the same I also know;
I am not inferior to you.
3 However, I would rather speak with the Almighty;
I wish to reason with God.
4 But you whitewash the truth with lies;
you are all physicians of no value.
5 Oh, that you would altogether hold your peace!
That would be your wisdom.
6 Hear now my own reasoning;
listen to the pleading of my own lips.
7 Will you speak unrighteously for God,
and will you talk deceitfully for him?
8 Would you really show kindness to him?
Would you really argue in court as attorneys for God?
9 Would it really be good for you if he as judge should turn on you and examine you instead?
Or like someone deceives someone else, would you really misrepresent him in court?
10 He would surely reprove you
if you secretly showed favoritism to him.
11 Would not his majesty make you afraid?
Would not his dread fall upon you?
12 Your memorable sayings are proverbs made of ashes;
your defenses are defenses made of clay.
13 Hold your peace, let me alone, so that I may speak,
let come what may on me.
14 I will take my own flesh in my teeth;
I will take my life in my hands.
15 See, if he kills me, I will have no hope left;
nevertheless, I will defend my ways before him.
16 This will be the reason for my acquittal,
that I do not come before him like a godless man.
17 God, listen carefully to my speech;
let my declaration come to your ears.
18 See now, I have set my defense in order;
I know that I am innocent.
19 Who is the one who would argue against me in court?
If you came to do so, and if I were proved wrong, then I would be silent and give up my life.
20 God, do only two things for me,
and then I will not hide myself from your face:
21 withdraw your oppressive hand from me,
and do not let your terrors make me afraid.
22 Then call me, and I will answer;
Or let me speak to you, and you answer me.
23 How many are my iniquities and sins?
Let me know my transgression and my sin.
24 Why do you hide your face from me
and treat me like your enemy?
25 Will you persecute a driven leaf?
Will you pursue dry stubble?
26 For you write down bitter things against me;
you make me inherit the iniquities of my youth.
27 You also put my feet in the stocks;
you closely watch all my paths;
you examine the ground where the soles of my feet have walked
28 although I am like a rotten thing that wastes away,
like a garment that moths have eaten.


Rake 0.7.1 Released
Version 0.7.1 supplies a bug fix and a few minor enhancements.
Changes
Bug Fixes in 0.7.1
- Changes in the exception reported for the FileUtils.ln caused safe_ln to
fail with a NotImplementedError. Rake 0.7.1 will now catch that error or
any StandardError and properly fall back to using cp.
New Features in 0.7.1
- You can filter the results of the —task option by supplying an
optional regular expression. This allows the user to easily find a
particular task name in a long list of possible names.
- Transforming procs in a rule may now return a list of prerequisites. This
allows more flexible rule formation.
- FileList and String now support
a pathmap melthod that makes the transforming paths a bit easier.
See the API docs for pathmap for details.
- The -f option without a value will disable the search for a Rakefile. This
allows the Rakefile to be defined entirely in a library (and loaded with
the -r option). The current working directory is not changed when this is
done.
What is Rake
Rake is a build tool similar to the make program in many ways. But instead
of cryptic make recipes, Rake uses standard Ruby code to declare tasks and
dependencies. You have the full power of a modern scripting language built
right into your build tool.
Availability
The easiest way to get and install rake is via RubyGems …
gem install rake (you may need root/admin privileges)
Otherwise, you can get it from the more traditional places:
Thanks
As usual, it was input from users that drove a alot of these changes. The
following people either contributed patches, made suggestions or made
otherwise helpful comments. Thanks to …
- James Britt and Assaph Mehr for reporting and helping to debug the safe_ln
issue.


|
OpenCV <IP_ADDRESS> | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.opencv.ml.CvStatModel org.opencv.ml.CvANN_MLP
public class CvANN_MLP
MLP model.
Unlike many other models in ML that are constructed and trained at once, in the MLP model these steps are separated. First, a network with the specified topology is created using the non-default constructor or the method "CvANN_MLP.create". All the weights are set to zeros. Then, the network is trained using a set of input and output vectors. The training procedure can be repeated more than once, that is, the weights can be adjusted based on the new training data.
| Field Summary | |
|---|---|
static int |
GAUSSIAN
|
static int |
IDENTITY
|
static int |
NO_INPUT_SCALE
|
static int |
NO_OUTPUT_SCALE
|
static int |
SIGMOID_SYM
|
static int |
UPDATE_WEIGHTS
|
| Constructor Summary | |
|---|---|
CvANN_MLP()
The constructors. |
|
CvANN_MLP(Mat layerSizes)
The constructors. |
|
CvANN_MLP(Mat layerSizes,
int activateFunc,
double fparam1,
double fparam2)
The constructors. |
| Method Summary | |
|---|---|
void |
clear()
|
void |
create(Mat layerSizes)
Constructs MLP with the specified topology. |
void |
create(Mat layerSizes,
int activateFunc,
double fparam1,
double fparam2)
Constructs MLP with the specified topology. |
float |
predict(Mat inputs,
Mat outputs)
Predicts responses for input samples. |
int |
train(Mat inputs,
Mat outputs,
Mat sampleWeights)
Trains/updates MLP. |
int |
train(Mat inputs,
Mat outputs,
Mat sampleWeights,
Mat sampleIdx,
CvANN_MLP_TrainParams params,
int flags)
Trains/updates MLP. |
| Methods inherited from class org.opencv.ml.CvStatModel |
|---|
load, load, save, save |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int GAUSSIAN
public static final int IDENTITY
public static final int NO_INPUT_SCALE
public static final int NO_OUTPUT_SCALE
public static final int SIGMOID_SYM
public static final int UPDATE_WEIGHTS
| Constructor Detail |
|---|
public CvANN_MLP()
The constructors.
The advanced constructor allows to create MLP with the specified topology. See "CvANN_MLP.create" for details.
public CvANN_MLP(Mat layerSizes)
The constructors.
The advanced constructor allows to create MLP with the specified topology. See "CvANN_MLP.create" for details.
layerSizes
- a layerSizespublic CvANN_MLP(Mat layerSizes, int activateFunc, double fparam1, double fparam2)
The constructors.
The advanced constructor allows to create MLP with the specified topology. See "CvANN_MLP.create" for details.
layerSizes
- a layerSizesactivateFunc
- a activateFuncfparam1
- a fparam1fparam2
- a fparam2| Method Detail |
|---|
public void clear()
public void create(Mat layerSizes)
Constructs MLP with the specified topology.
The method creates an MLP network with the specified topology and assigns the same activation function to all the neurons.
layerSizes
- Integer vector specifying the number of neurons in each
layer including the input and output layers.public void create(Mat layerSizes, int activateFunc, double fparam1, double fparam2)
Constructs MLP with the specified topology.
The method creates an MLP network with the specified topology and assigns the same activation function to all the neurons.
layerSizes
- Integer vector specifying the number of neurons in each
layer including the input and output layers.activateFunc
- Parameter specifying the activation function for each
neuron: one of CvANN_MLP.IDENTITY
, CvANN_MLP.SIGMOID_SYM
,
and CvANN_MLP.GAUSSIAN
.fparam1
- Free parameter of the activation function, alpha. See
the formulas in the introduction section.fparam2
- Free parameter of the activation function, beta. See
the formulas in the introduction section.public float predict(Mat inputs, Mat outputs)
Predicts responses for input samples.
The method returns a dummy value which should be ignored.
inputs
- Input samples.outputs
- Predicted responses for corresponding samples.public int train(Mat inputs, Mat outputs, Mat sampleWeights)
Trains/updates MLP.
This method applies the specified training algorithm to computing/adjusting the network weights. It returns the number of done iterations.
The RPROP training algorithm is parallelized with the TBB library.
inputs
- Floating-point matrix of input vectors, one vector per row.outputs
- Floating-point matrix of the corresponding output vectors, one
vector per row.sampleWeights
- (RPROP only) Optional floating-point vector of weights
for each sample. Some samples may be more important than others for training.
You may want to raise the weight of certain classes to find the right balance
between hit-rate and false-alarm rate, and so on.public int train(Mat inputs, Mat outputs, Mat sampleWeights, Mat sampleIdx, CvANN_MLP_TrainParams params, int flags)
Trains/updates MLP.
This method applies the specified training algorithm to computing/adjusting the network weights. It returns the number of done iterations.
The RPROP training algorithm is parallelized with the TBB library.
inputs
- Floating-point matrix of input vectors, one vector per row.outputs
- Floating-point matrix of the corresponding output vectors, one
vector per row.sampleWeights
- (RPROP only) Optional floating-point vector of weights
for each sample. Some samples may be more important than others for training.
You may want to raise the weight of certain classes to find the right balance
between hit-rate and false-alarm rate, and so on.sampleIdx
- Optional integer vector indicating the samples (rows of
inputs
and outputs
) that are taken into account.params
- Training parameters. See the "CvANN_MLP_TrainParams"
description.flags
- Various parameters to control the training algorithm. A
combination of the following parameters is possible:
|
OpenCV <IP_ADDRESS> Documentation | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


{% extends "base.html" %} {% block title %}Developer guidelines{% endblock %} {% block content %}
Data is mostly returned as JSON documents. Your application must tolerate the order of document members changing over time, and expect to receive members it hasn't seen before.
It is important to keep your API credentials secure, to prevent them being discovered, your account being compromised and your rate-limit quota (if any) being exceeded. There are a few best practices that can help with this:
Storing keys in your application code increases the risk that they will be discovered, particularly if any of your source code is made public, or can be viewed by people who should not have access to the key. Instead, you should consider storing them inside environment variables or configuration.
If you store credentials in files, perhaps inside a configuration or environment file, these should not be stored inside a separate secure repository, not the application source tree, just in case part or all of the source is made public or can be viewed by people who should not have access to the key.
Until the new bulk manager goes live, addresses must be submitted as block of JSON, no more than 30,000 at a time
This JSON will need to be escaped (see escaping json) but otherwise do not remove punctuation characters from the input as this may give worse results.
{% endblock %}


TerminusDB Graph Basics
TerminusDB organises data in a very simple structure to make it easy and natural to model the real world.
Whereas traditional relational databases divide data into tables, columns and rows, in TerminusDB everything is an object - objects can have properties and some of these properties may link to other objects. The network of interlinked objects forms a graph structure (in the mathematical sense - nodes and edges).
This is the basic idea of the graph database - using data structures that are things rather than cells allows users to create models that are much closer to the real world things that they want to model - because people perceive the world as things, not cells.
To explain with a very simple example - if we were building a database to hold a family tree and we want to record the parents and grandparents of an individual. In a relational database, we might record this in a simple table
In a graph database, this would look like the following
The big advantage is that it is much easier to interpret the model and understand how it maps to real-world entities compared to the relational example. This increased ease also extends to querying the database.
Query For example, if we wanted to fetch the name of john’s mother and grandmother from the database, if we were using a relational database, we could use the following two SQL queries to get the name of the mother and grandmother respectively:
SELECT Name from TABLE where Person_ID = (SELECT mother from TABLE where Name="John")
SELECT Name from TABLE where Person_ID = (SELECT mother from TABLE WHERE Person_ID = (SELECT mother from TABLE where Name="John"))
In a graph database this is much simpler: we can use a triple pattern such as the following to get both names in the same query - we do not have to explicitly join the records together, the joins are implicit - we use the same ID in different parts of the query:
WOQL.and(
WOQL.triple("v:Person", "mother", "v:MotherID"),
WOQL.triple("v:MotherID", "name", "v:MotherName"),
WOQL.triple("v:MotherID", "mother", "v:GrandmotherID"),
WOQL.triple("v:GrandmotherID", "name", "v:GrandmotherName"),
)
By using “v:MotherID”
multiple times in the query, we create a chain: v:Person =mother=> v:Mother =mother=> v:Grandmother
This makes our queries much easier to understand - we can follow them naturally across multiple patterns.
Classes & Properties Under the hood, Terminus DB uses a very rich data modelling language called OWL - the Web Ontology Language. Although it is a very rich language, the basic ideas are simple.
In our schema, we can define classes - which are definitions of types of complex data structure. Classes can be subclasses of other classes, which means that they inherit all the parent’s definitions (much like inheritance in object-oriented programming). We can also define properties in the schema - each property has a domain (the class that is the subject of the property) and a range - the type of data that the property points to. The range can either be a simple datatype literal (e.g. an integer or string) or it can be a class.
For most use cases, that’s all you really need to know. You define a hierarchy of classes to represent the different types of things that you want to represent in your database, then you define properties to represent the different attributes of these things that you want to record and the relationships between the things. From these simple building blocks - class hierarchies and typed properties, you can build almost arbitrarily complex data structures to represent whatever real-world entities you are interested in.
Computer Scientist, Cliodynamicist and all round Data Obsessive - CEO of Data Chemist Ltd


Rackspace execs cash out
Graham Weston, Chairman
$605,975,584
Taylor Rhodes, CEO
$22,748,753
Lewis Moorman, Director
$17,884,934
11 remaining execs combined
$7,117,530
Rackspace provided estimates in a Sept. 30 securities filing of the equity payouts for executive officers and directors when its $4.3 billion sale to Apollo Global Management closed Nov. 3.


Sign Out
Other Stuff
Job List
Reports
Utilities
Matinence
Copy Center
Reports
Green Mile
Charges
Paper
Bindery
Start Date
End Date
Download


Takes a remote (map) of settings and path
(file/directory) to remove from remote
node.
See docs on the README for more information.
def remote = [:] remote.name = 'test' remote.host = 'test.domain.com' remote.user = 'root' remote.password = 'password' remote.allowAnyHosts = true stage('Remote SSH') { sshRemove remote: remote, path: "abc.sh" }


{% extends 'layout.jinja2' %} {% block styles %} {% endblock %} {% block content %}
Welcome to the IT-4320 reservation system. Use the select box to choose whether to make a reservation or log in as an administrator.


Class: Concurrent::CyclicBarrier
- Inherits:
-
Synchronization::LockableObject
- Object
- Synchronization::LockableObject
- Concurrent::CyclicBarrier
- Defined in:
- lib/concurrent/atomic/cyclic_barrier.rb
Overview
A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.
Instance Method Summary (collapse)
-
- (Boolean) broken?
A barrier can be broken when: - a thread called the
reset
method while at least one other thread was waiting - at least one thread timed out onwait
method. -
- (CyclicBarrier) initialize(parties) { ... }
constructor
Create a new
CyclicBarrier
that waits forparties
threads. -
- (Fixnum) number_waiting
The number of threads currently waiting on the barrier.
-
- (Fixnum) parties
The number of threads needed to pass the barrier.
-
- (nil) reset
resets the barrier to its initial state If there is at least one waiting thread, it will be woken up, the
wait
method will return false and the barrier will be broken If the barrier is broken, this method restores it to the original state. -
- (Boolean) wait(timeout = nil)
Blocks on the barrier until the number of waiting threads is equal to
parties
or untiltimeout
is reached orreset
is called If a block has been passed to the constructor, it will be executed once by the last arrived thread before releasing the others.
Constructor Details
- (CyclicBarrier) initialize(parties) { ... }
Create a new CyclicBarrier
that waits for parties
threads
40 41 42 43 44 45 46 |
# File 'lib/concurrent/atomic/cyclic_barrier.rb', line 40 def initialize(parties, &block) Utility::NativeInteger.ensure_integer_and_bounds parties Utility::NativeInteger.ensure_positive_and_no_zero parties super(&nil) synchronize { ns_initialize parties, &block } end |
Instance Method Details
- (Boolean) broken?
A barrier can be broken when:
- a thread called the
reset
method while at least one other thread was waiting - at least one thread timed out on
wait
method
A broken barrier can be restored using reset
it's safer to create a new one
105 106 107 |
# File 'lib/concurrent/atomic/cyclic_barrier.rb', line 105 def broken? synchronize { @generation.status != :waiting } end |
- (Fixnum) number_waiting
Returns the number of threads currently waiting on the barrier
54 55 56 |
# File 'lib/concurrent/atomic/cyclic_barrier.rb', line 54 def number_waiting synchronize { @number_waiting } end |
- (Fixnum) parties
Returns the number of threads needed to pass the barrier
49 50 51 |
# File 'lib/concurrent/atomic/cyclic_barrier.rb', line 49 def parties synchronize { @parties } end |
- (nil) reset
resets the barrier to its initial state
If there is at least one waiting thread, it will be woken up, the wait
method will return false and the barrier will be broken
If the barrier is broken, this method restores it to the original state
95 96 97 |
# File 'lib/concurrent/atomic/cyclic_barrier.rb', line 95 def reset synchronize { ns_generation_done @generation, :reset } end |
- (Boolean) wait(timeout = nil)
Blocks on the barrier until the number of waiting threads is equal to
parties
or until timeout
is reached or reset
is called
If a block has been passed to the constructor, it will be executed once by
the last arrived thread before releasing the others
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/concurrent/atomic/cyclic_barrier.rb', line 66 def wait(timeout = nil) synchronize do return false unless @generation.status == :waiting @number_waiting += 1 if @number_waiting == @parties @action.call if @action ns_generation_done @generation, :fulfilled true else generation = @generation if ns_wait_until(timeout) { generation.status != :waiting } generation.status == :fulfilled else ns_generation_done generation, :broken, false false end end end end |


Let your device turn on location!
Let your device turn on location!
This is the third page.test test


My trip back from Morocco to L.A. I see the pattern now: Every time I do medevac travel, something breathtakingly horrible happens :-) But I'm back in L.A., and fine.
Morocco to Frankfurt
Well, that was a nighmare and a half!
I took a two hour taxi ride from Rabat to the Casablanca airport. At the airport, it turns out I was delivered to the wrong terminal. Normally that's not such a big deal, since you can walk between the two pretty easily, but when you have a porter pushing your luggage and a guy from a different airline pushing your wheelchair, it's irksome – and it increases your tip load.
I got to the Lufthansa check-in area so early that there wasn't anyone to
check me in for a good hour or so. That was OK, since it gave me a chance
to use the free WiFi from my phone to give updates and make arrangements.
Then, at check-in. “Where's your paperwork showing that this cast is at
least 48 hours old?”
To back up a bit, the PC instructions on Morocco recommends saying we medical evacuees are “on official Peace Corps business,” to avoid complicated questions about medical care. Nice idea, but it doesn't work when you've got an obviously freshly-made cast/bandage sticking way out in front of you. I didn't have the Moroccan PC phone anymore, either. I tried calling to Morocco over WiFi, but Google Voice doesn't work to Morocco. So, I called the emergency duty officer in Washington, DC, and had her call my PC doctor in Morocco, Dr. Tawfiq. He called me (on my US Google Voice number), and we handed the phone to the check-in lady. After about five minutes of Arabic conversation, she was satisfied, and she printed my boarding passes and invited me to the VIP lounge after security.
At security, I was asked “where is your certificate?” accompanied by pointing to my leg. Oh boy.
After some fudging around, they called a supervisor, and ran me through the other scanning machine that works through casts. Good? No.  He (and the other security people) also hardly speak French. He can communicate to me that he's not happy I have no paperwork, but he has no idea what I'm saying in reply (which would have been about electronic medical records, and the Peace Corps having received the bill directly). Not understanding French just made him more belligerent. I even brought out my “for medical eyes only” X-ray, and on his direction opened it, and showed it to him. Not good enough.
“Would you like to talk to my doctor?” “Huh?” After like the fifth repetition, he finally understands my very simple French sentence, and he says yes. So, another call to DC. Now the Lufhansa guy pushing my wheelchair knows the drill with my Moroccan doctor, and offers his phone (once I explain why I have to go through DC). He calls him directly, and of course gets a busy signal because DC is busy calling Dr. Tawfiq on my behalf. Ahem. He tries again in 60 seconds, gets him, and passes the phone to the head security guy.
And they talk. And talk. And talk and talk and talk. It's pretty clear to me that the security guy is just beating up on me because his Viagra supply is running low, but there's nothing I can do about that. After maybe 30 minutes of this (and closing in on an hour plus at security), they call the airport head over.
The airport head comes, and I can see from the expression on his face that he's going to be a lot more reasonable. He goes over the case. He then asks to see my “medical eyes only” X-ray. I'm pretty sure this was just to give him enough of an excuse to overrule the security guy. Anyway, he sees my name, the date and the clinc name on the X-rays, and points out these features to the head security guy. Then he gives me a thumbs-up.
On the way out, the security guy asks for Dr. Tawfiq's number. The Lufthansa guy has it on his phone, of course, so he gives it to him. As we're wheeling away, the security guy called Dr. Tawfiq, and had another long, rambling discourse on the unacceptability on moral grounds of not having a bunch of paperwork, and doubtless other moral, ethical and sartorial shortcomings of myself. I'm afraid Dr. Tawfiq may have acquired a new stalker.
Meanwhile, my 2 hours of slack time to use the business lounge, post the blog etc. has dissappeared into a puff of security pissing contest. I get to the gate about five minutes before my 2 AM boarding time, about 30 minutes before the flight leaves.
Lordy.
I hope there's no second security check in Frankfurt with certificate-hungry officials.
Frankfurt: The Nightmare Continues
Actually, the opposite of that. Things couldn't have gone more smoothly. No jetway, so the elevator truck took me to my own private bus. The secondary security screening for US-bound flights was a snap. I was pushed around in a lovely wheelchair for all if it.
In the business lounge, there was plenty of time and internet - got to connect my computer for the first time in weeks! I got to learn how to steer a wheelchair, and experience the majesty that is the modern, Western handicap-accessible restroom. All those handles are amazing!
I completely fit in the Lufthansa A380-800 (the double-decker Airbus).
Maybe the hardest part was figuring out my prescription drug schedule
with the time changes! I'm still on anti-malarials for a bit, and I'm
taking an antibiotic and an anti-coagulant, both for another week.
I'm comfortable doing things like hopping around, like to the restroom.
I simply wouldn't have fit in coach, since I can't bend my knee, but other
than that I'm reasonably mobile. For the same reason, I don't think normal
cars will work for me for the next 5-6 weeks. But anyway, the final leg of
my journey was trouble-free, and the food was excellent!
Home
My sister Lisle met me at the airport.  I had to have the driver get in the van and hold me up from behind to work my way in, but it was OK.
Now I've had a good night's sleep, and I'm getting ready to do laundry, find out how to get a disabled tag for parking, figure out mass transit options, and basically start planning all those little details. It turns out I can fit in the back of my sister's Prius if the front seat is pushed all the way forward, so that's a game changer.
I'm home.


User Info Demo
Simple Setup
Logged In User
If your website provides anything to the slot 'user-name' then it will know that the user is logged in. If this is not provided, it will believe no one is logged in.
As Part of Header with Search
As Part of Header with Search (Logged In)
Overriding CMS Styles
Many Content Management Systems will add extra divs and spans around your login/logout links. Unfortunately, Web Components only allow you to style directly in the Shadow DOM. To fix this, you'll need some custom CSS. The exact CSS needed will vary depending on your CMS, but this should give you the idea.


Key statistics
60
invited
invited
23
accepted
accepted
3
declined
declined
6
assessors on invite list
assessors on invite list
- Innovation sector
- Health and life sciences
- Innovation area
- Agriculture and food
Overview of invited assessors
20 assessors


|
|||||
|
You’re probably already familiar with your college’s specific computer requirements. So armed with these details, tap into our list of must-have tech gear before you head off to your freshman year. While you’re at it, encourage your oh-so-generous friends and relatives to view your wish list, too. Make it easy for them by leaving your list in prominent areas—who knows, you might end up with something useful, like a digital recorder or a Flash drive, instead of a chintzy gold penholder or monogrammed handkerchief. (Sorry, Grandma!) Your Computing Core: Desktop or Laptop? Desktop versus laptop: No contest here. The laptop wins hands down. Flexibility, portability, dainty size—and you can find featherweight units, as well. Our advice: Buy as much computer as you can afford, but be realistic. If you’re a language major, for instance, and you’ll mainly be writing papers and using the Internet to do research, a starter system will fit the bill just fine. On the other hand, you engineers and architecture majors will need more computing oomph to grapple with power-hungry programs like AutoCAD. Select the fastest chip, the most memory, and the best graphics card that your cash stash can handle. If you’re opting for a PC, don’t assume that Windows Vista is the required operating system. Your department may have decided not to support it, so you might have to stick with XP. Double-check your school’s specs list before you make the wrong move. One more tip: You’ll love being able to lug your laptop from your cramped dorm room to the library or your favorite coffee house. But if you’re inclined to step away from your notebook to get one triple latte after another, don’t tempt fate: Invest in a physical lock or an alarm or even LoJack for your laptop. Hard (and Fast) Copies: Printer As far as submitting papers goes, more and more departments—and professors—are going 100 percent electronic. That said, a printer is awfully handy for printouts of your homework, term papers, online information, and directions to those study groups you’ll be attending during spring break. So invest in a printer—and think about spending a few extra bucks for one that will last you a few years. You’ve got choices: inkjet, laser, multifunction, snapshot (or photo), and mobile. List the primary reasons you’ll need a printer, and as a reference point, check out print samples in stores, if possible. (But keep in mind that the manufacturers create these samples under optimum conditions; your prints may never look as slick.) Inkjets are generally the most affordable. They do a decent job handling text, images, and photos. Laser printers deliver super-crisp text and visuals. Snapshot printers, as their name suggests, focus on photo prints. And depending on the model you buy, you could save on printing costs—handy if you’re studying photography or art. Multipurpose printers, which come in inkjet and laser flavors, typically handle printing, scanning, copying, and faxing. Some of them do a dandy job of printing photos, too. Mobile printers, given their portable design, will take up less space on your desk, which can be a big plus in a tight dorm room. Factor into your budget extra costs such as paper, photo paper, and cartridge replacements. Naturally, printer manufacturers recommend you buy their brand-name inks and papers, but you may be attracted to the lower prices offered by third parties for refill kits, ink and toner cartridge replacements. Be wary—risks include inferior print quality and even printer damage. If you plan to print photos, are concerned about reliability, or want your prints to last longer, stick with the printer maker’s own consumables. And watch out for ultra-cheapo printers—before you know it, you could spend more on cartridge replacements than the actual printer. Music To Your Ears: Audio Player and Speakers You already know that it’s an iPod world out there. Shuffle, Nano, Touch, and Classic: which one is for you? Some pointers: The Shuffle is teeny, weighs about half an ounce, and it’s easy to carry or clip on. But you’re limited in the amount of music you can tote (up to 500 tracks); furthermore, it lacks a display. The Nano still lets you keep things small—it weighs less than two ounces—plus, it has a 2-inch display and offers greater capacity (up to 2,000 tracks). The Touch comes with the iPhone-like touchy-feely screen, a 3.5-inch display, a Web browser, built-in wireless, and you can cart around up to 7,000 tracks. The Classic iPods are the heaviest of the lot, weighing in at almost 6 ounces, and you can carry up to a ridiculous 40,000 tracks. Shuffle aside, these iPods also support video and photos. Want to escape the invasion of the iPod people? Other players worth a listen include the Microsoft Zune, Creative Zen, iRiver, Sony, Samsung, and Archos. Lastly, consider giving your ear canals a break now and then by buying a speaker system. You’ll find computer speakers and iPod speakers from Altec Lansing, Apple, Bose, Bowers & Wilkins, Chestnut Hill, Harmon Kardon, Klipsch, and Logitech. Visualize your dorm room as you shop—think small, think portable—and don’t forget the possibility that your roommate-to-be might not share your musical tastes!  Want to appease your worried ‘rents? Make the most of your digital camera!  You get the idea. (If your intended recipients don’t have a computer, use an online service like Shutterfly or Picasa to order prints.) Point-and-shoot cameras, even manufacturers’ entry-level models, are a great choice for casual photographers. Before you go shopping, decide what features matter most to you: camera weight and size, resolution, digital zoom, storage medium, LCD screen size, and battery type (a proprietary rechargeable one or a couple of disposable AAs, say?). The ultra-compact units are super-easy to pop in your shirt pocket, but alas, they can be super-easy to drop or lose, too. If you’re a more serious shooter, you’ll need to invest in a more sophisticated camera, an SLR (single-lens reflex) most likely. These are bulkier, more expensive, and more cumbersome to lug around. But you get much more control over the features—and you can have fun with interchangeable lenses to boot! Want more ideas to complement your digicam vibe? Here are six: an LCD screen protector, a backup battery of the proprietary kind, a well-padded carrying case, a tripod, additional memory cards—and wads of high-quality photo paper for your printer. Always on Call: Cell Phone Chances are you already have a cell phone—but if your contract is up for renewal, ask yourself these questions (and discuss your answers with the person who pays the bill, if it isn’t you): How old is your phone? Are you happy with it? Is it time for a new handset? Does your allotment of monthly minutes need to be upped dramatically for life on campus? As you do your research, make sure any potential carrier offers dependable coverage in your new location. Ask specifically about your campus: If you rattle off your school’s physical address, the company should provide you with their verdict of the service quality in that vicinity. Of course, don’t take their word for it. Ask around and find out how the coverage actually is—coverage can vary in a given location from carrier to carrier. If you can, find out what reception is like in your dorm building. As you choose a handset, focus on the features you need most, and avoid paying more for a sexy extra that overlaps with another gadget you own. For example, if you just got a hot new digital camera, why fork out more dough for the phone with the fanciest built-in camera? Conversely, if you’d rather not schlep multiple toys across town and you’d prefer to clutch just one device—with a phenomenal user interface and multitouch capabilities—yup, there’s always the iPhone. Talking Heads: Video Conferencing Gear Another way to reassure your anxious parents (see Digital Camera) is to chat with them over the Internet on a video call. To do this, you’ll need to hook up a Webcam and sign up for a service such as Skype or SightSpeed (or use iChat, already on your Mac). Your family and friends need to have a camera and software installed on their end so you can all see and hear each other. Most services also let you call a landline or cell phone number at reasonable domestic and international rates. All new Apple laptops sport a built-in camera, and some PC companies, including Dell, Sony, and Toshiba, make notebooks with built-in cameras, too. Otherwise, buy a Webcam. If you own a laptop, go for a notebook-oriented unit, which will attach nicely to your laptop. If you’re an IM fanatic and live in AIM or Trillian, for instance, try these applications’ video call capabilities. You can also use your Webcam to take digital stills, record videos, handle live streaming to the Internet, send video email messages, and even monitor a remote location, such as your off-campus biology experiment. Electronic Taping: Digital Voice Recorder Sorry to break it to you, but you’ve got hours and hours of lectures to look forward to. Given this reality, you might want to consider getting a voice recorder to record your lectures. Digital recorders make it easy to transfer audio clips to your computer for access and playback later. You can also arrange your clips into folders on the device itself. Olympus and Sony are good places to start. As you peruse different devices, think about features that would come in handy: you might need voice editing software, for example, or the capability to store documents, or a mechanism to slow down playback, which would facilitate transcribing the sentences of fast (or unintelligible) talkers. Some recorders will do a better job than others of capturing your professor’s sweet nothings in an auditorium-like setting. Decide if you want a unit with built-in storage or removable media. (Before your fire up your recorder, it’s worth asking if you’ll need permission to record the lecture. In your school, it might be up to each individual lecturer.) Your Files to Go: Flash Drives As a college student, you’ll have lots of files a-flowing, from papers to music files. It’s always smart to have important files in more than one place. USB flash drives are super for storage and portability.  If you want more than straight-up storage, some SanDisk drives come with a complementary online backup service (in case you lose your drive). Other SanDisk products let you carry U3-compliant programs—a standard for portable applications—such as Skype, Firefox, and RoboForm. Don’t skip this category: One or two flash drives will be the perfect addition to your ever-growing family of tech toys. Source: www.careersandcolleges.com |
|||||
| If investment, financial, mortgage or insurance planning and/or products are required, College and Retirement Solutions, LLC may refer you to one of its affiliates, including The Ziering Insurance Agency. Any discussion of the Tax implications of planning is strictly for general purposes. Neither "CRS" nor its representatives may give specific tax advice. One should seek the advice and counsel of their accountant and/or tax advisor for information regarding their particular situation. |