Examples:
Upload document
Create signing link
Simple from invite
Create template
Adding fillable fields on document
Adding text tags on document
Signature invite on one template and multiple signers (with different roles)
Invite on multiple templates for multiple signers
Setting the initial values for template fields


---
title: About Me
permalink: /about/
cover: "/assets/images/about-me.jpg"
cover_source: "http://www.newbeeman.net/wp-content/uploads/2016/03/About-me.jpg"
---
{% include head.html %}
{% include header.html %}
Blog Logo
{{ site.author.name }}
{{site.author.description}}
·
NITK Surathkal, India
{% for social in site.social %}
{% if social.url %}
{% endif %}
{% endfor %}
· · ·
I am Shams, a Data Scientist interested in Machine Learning and Advanced Mathematics.
At Practo, I work on NLP and Computer Vision problems to build intelligent healthcare systems driven by machine learning models. I have built systems from ground up for retrieving clinical concepts from free text leveraging NLP techniques and allocating appropriate ICD-10 code using Dense-LSTM Hybrid DNNs.
Before that, I was a part of Practo Search, working on ranking algorithms and internationalization of search across various countries by building the backend using technologies like elasticsearch, lucene. I also worked on Practo Discovery to build nginx level URL discovery and redirection service.
Also a active participant in Kaggle Competitions and find it a very good learning medium. This website is built and maintained by me personally. It helps me to learn new stuff by writing and explaining things. Any improvements or suggestions are welcome.
I am a fitness freak, a motorcycle enthusiast, who loves to go on long rides. Insane about basketball and active follower of NBA.


Add Requirement
List Requirements
Search Requirements
Add Candidate
List Candidates
Search Candidates
Load Email
List Email
Search Email
List Candidates
Sl.No
FirstName
LastName
Email
Phone
Location
Skills
Resume
Update
Delete
Update
Delete


"BILDAD "son of contention, one of Job’s friends. He is called “the Shuhite,” probably as belonging to Shuah, a district in Arabia, in which Shuah, the sixth son of Abraham by Keturah, settled (Genesis 25:2). He took part in each of the three controversies into which Job’s friends entered with him (Job 8:1; 18:1; 25:1), and delivered three speeches, very severe and stern in their tone, although less violent than those of Zophar, but more so than those of Eliphaz.
"BILDAD "son of contention, one of Job’s friends. He is called “the Shuhite,” probably as belonging to Shuah, a district in Arabia, in which Shuah, the sixth son of Abraham by Keturah, settled (Genesis 25:2). He took part in each of the three controversies into which Job’s friends entered with him (Job 8:1; 18:1; 25:1), and delivered three speeches, very severe and stern in their tone, although less violent than those of Zophar, but more so than those of Eliphaz.


Meteora.Calendar
Focus each input to show a calendar.
Basic calendar
Predefined date:
1987-07-28 17:58
Basic calendar without a default date (automatically set to today's date)
Minimum year:
1985
Maximum year:
1990
A variant of the same calendar (initially blank)
Minimum year:
1990
Maximum year:
1995


A simple Webapp for Microsense webframework
To provide a clean API, data visualizations and social connect for sensor data from IOT Platforms
A unique mix of Websockets, FlaskSockets and classic Python Sockets is used to broadcast a stream of live data.
Live visualization of the data is achieved with d3.js path transformations
View system information of the connected platform
Twitter and Facebook Sharing of live data graph snapshots as well as data points
Ganesh Hegde
Fork on GithubGet a bar graph of data from last five seconds


.nmbr-number{
font-size: 3rem;
}
.nmbr-title{
text-transform: uppercase;
}
.nmbr-change{
font-weight: 700;
font-size: 1rem;
}
.nmbr-c-green{
color: #8AC249;
}
.nmbr-c-orange{
color: #FF5621;
}
.body-c-grey{
color: grey;
}
.footer-link{
color: grey;
}
Log into Usabilla
Want to receive advanced reports? Depending on your needs, we can provide customized reports weekly, monthly or quarterly. To find out more about Usabilla Reporting, contact your Customer Success Manager or email<EMAIL_ADDRESS>This email is sent to Team administrators of your Usabilla Account. If you'd prefer not to receive these emails, you can unsubscribe here .
Made by Usabilla • Our Blog
Rokin 16, 5th Floor • Amsterdam • 1012KR


GABC Transcription Tool
Generate PDF
Readings Tool
Tone:
Solemn Tone
Clef:
Psalm GABC
g hj jr 'k jr jr 'ih j. j jr h 'j jr ih..
Mediant of
accent
s
with
preperatory syllable
s
Termination of
accent
s
with
preperatory syllable
s
Psalm
Use Nova Vulgata psalms
Include Glória Pátri
Format verses as:
Only format vowels
Use puncta cava
Repeat intonation
Asterisk Text:
Begin Preparatory Syllable:
End Preparatory Syllable:
Begin Accented Syllable:
End Accented Syllable:
Verse Prefix:
Verse Suffix:
Non-breaking space:
Verses Filename:
GABC
Download GABC
Download Verses
Download ZIP of all psalms in each tone
Cancel


When approaching the island, call NORFOLK CUSTOMS on VHF Ch 16. Customs and Quarantine officials will meet yachts on either Cascade (north side) or Kingston (south side) jetties.
Customs monitor VHF Channel 16 during working hours only.
There are public phones on both Cascade and Kingston jetties.
A small craft report form is required on arrival at Norfolk Island. It can be downloaded from www.customs.gov.nf/
No one must land until clearance has been granted.
There is a charge for clearance outside of office hours or on a public holiday.
Last updated March 2015.
Passports must be valid for 1 month beyond intended stay.
Visa requirements are the same as for Australia.
All nationals, with the exception of Australians and New Zealanders, need to obtain a tourist visa valid for a period longer than 60 days from the intended date of arrival in Norfolk Island.
This visa must be obtained prior to arrival in Norfolk Island. These can be obtained free of charge from Australian high commissions or embassies. A multiple entry visa should be requested if a yacht is en-route for Australia.
It is a good idea to email ahead, if possible, to let them know you are coming.
Last updated March 2015.
Firearms must be declared on arrival and be kept on board during the yacht's stay.
Landing of fruit, vegetables, flowers and seeds are prohibited. Pork and poultry from New Zealand are also prohibited.
Be sure to radio Customs first before coming ashore.
Last updated March 2015.
Norfolk Island Hospital has extensive facilities including a dental clinic and a prescription dispensary. Emergency services are provided on a 24-hour basis and in serious emergencies, evacuations are provided by the RAAF.
Doctor - Tel (6723)22 09 (hospital)
Dentist - Tel (6723) 22 910.
Updated March 2013.
Overtime is charged for clearance outside of working hours or on public holidays.
There is a departure tax of Aus$25 if a crew leaves the yacht and departs the island by other means.
Currently there are no fees for customs or anchoring.
Last updated March 2015.
Animals must be declared to Customs on arrival and remain on board


Police arrest three men on suspicion of money laundering in Telford
by Lisa O'BrienThree men have been arrested on suspicion of money laundering after a vehicle was stopped in Telford.
Police say the vehicle was stopped in Sutton Hill.
Officers seized a large amount of cash from one of the men and Class A and B drugs were also found on further searches.
West Mercia Police Local Policing Priority Team North tweeted: "Nice Pro-active stop by the team in Sutton Hill, Telford. X3 in custody on suspicion of money laundering and a quantity of cash seized."


Evolve the cards and get the Dragon Lord!
New GameHow to play: Use your arrow keys to move the cards. When two cards with the same icon touch, they evolve into one!
Created by 春哥株式會社, based on 2048 by Gabriele Cirulli, and the original epic game Threes.
Donation is appreciated:
Thanks to:
Puzzle and Dragons blog, PNDChina


Guillaume Calmettes
1) You have a question
Questions are always about population data.
2) Data analysis
You cannot always access the full population data and
have to rely on a small part of it, the sample data, that you will analyze.
3) Answer the question
Using the new knowledge you gained from the sample analysis, you can make conclusions (under some conditions) about the population data. This is the process of making inference.
Collect data / Design experiment
Visualize data (important!). Distribution? Skewness? outliers?
Choose a statistic to describe the sample (will depend on skewness, etc ...)
Formulate hypotheses
Analysis
We obtain information about (observational) units.
A variable is any characteristic that is recorded on each unit. It can be categorical or quantitative.
When selecting data, the goal is to select a sample that is similar (representative) to the population, only smaller.
Sampling biais occurs when the method of selecting a sample causes the sample to differ from the population in some relevant way.
Sampling bias:
when a sampling method systematically yields results that are either too high or too low.
can be avoided by using good sampling technique (random).
Sampling variation:
natural variation in results from one random sample to next.
can be reduced by using a larger sample.
If we want to show relationships (association) between several variables, we are analyzing the effects of an explanatory variable on a response variable.
A third variable that is associated with both the explanatory variable and the response variable is called a confounding variable.
| Observational study | Randomized experiment |
| The independent (explanatory) variable is not under the control of the researcher because of ethical concerns or logistical constraints. | The explanatory variable for each unit is determined randomly, before the response variable is measured. |
| Confounding variables can be present both in observational studies or randomized experiments, but ... | |
| Because the response variable assignment is not randomized, the effects of confounding variables are almost always present in observational studies. | Because the explanatory variable is randomly assigned, it is not associated with any other variables. The effect of confounding variables are most likely eliminated!!! |
| Observational studies can almost never be used to establish causation. | Randomized experiments make it possible to infer causation! |
In order to make sense of data, we need ways to summarize and visualize it.
Summarizing and visualizing variables and relationships between two variables is often known as descriptive statistics (also known as exploratory data analysis)
Type of summary statistics and visualization methods depend on the type of variable(s) being analyzed (categorical or quantitative).
| Variable(s) | Visualisation | Summary statistic |
| Categorical | Bar chart, pie chart | (relative) Frequency table, proportion |
| Quantitative | Dotplot, histogram, boxplot | Mean, median, max, min, standard deviation, range, IQR, five number summary |
| Categorical vs categorical | Side-by-side bar chart, segmented bar chart | Two-way table, difference in proportions, ratio of the proportion (relative risk) |
| Quantitative vs categorical | Side-by-side boxplots, side-by-side dotplots | Statistics for each group, difference in means/median, ratio of the means/medians |
| Quantitative vs quantitative | Scatterplot | Correlation, regression line |
A sampling distribution is the distribution of statistics computed for different samples of the same size taken from the same population.
The spread of the sampling distribution helps us to assess the uncertainty in the sample statistic. (Note: the standard deviation of the sampling distribution is the standard error of the parameter).
We rarely get to see the sampling distribution, we usually only have one sample.
A bootstrap sample is a random sample taken with replacement from the original sample, of the same size as the original sample.
A bootstrap statistic is the statistic computed on the bootstrap sample.
A bootstrap distribution is the distribution of many bootstrap statistics.
The bootstrap distribution will be centered at the statistic of the original sample the bootstrap samples have been drawn from.
A confidence interval for a parameter is an interval computed from sample data by a method that will capture the parameter for a specified proportion of all samples.
The parameter is fixed (from population)
The statistic is random (depends on the sample)
The interval is random (depends on the statistic)
A 95% confidence interval will contain the true parameter for 95% of all samples
Drawing bootstrap samples from a sample is one of the method to compute the confidence intervals.
All the statistical problems we have seen could be solved using two main types of approaches:
Null Hypothesis Testing
How unusual would it be to get results as extreme (or more extreme) than those observed, if the null hypothesis is true?
95% confidence intervals
What is an estimate of the range of possible values of the true parameter? Is the null hypothesis parameter contained in this interval?
Note: this is looking at the same thing, but with a different angle.
A randomization distribution is the distribution of sample statistics we would observe, just by random chance, if the null hypothesis were true.
The p-value is the probability of getting a statistic as extreme (or more extreme) as that observed, just by random chance, if the null hypothesis is true.
The p-value measures evidence against the null hypothesis
The p-value is calculated by finding the proportion of statistics in the randomization distribution that fall beyond (one or both direction) the observed statistic
A small p-value casts doubt on the null hypothesis/model used to perform the calculation.
A p-value
$\leq{0.10}$
$\leq{0.05}$
$\leq{0.01}$
$\leq{0.001}$
is generally considered
to be
some
fairly strong
very strong
extremely strong
evidence against the null
Formal decisions:
p-value $<\alpha$ Reject $H_0$
p-value $\geq\alpha$ Do not reject $H_0$
Errors can happen!
| Decision | |||
| Reject H$_0$ | Do not reject H$_0$ | ||
| Truth | H$_0$ true | Type I error | |
| H$_0$ false | Type II error |
Errors can happen!
| Situation | Statistic of interest | Null |
| One categorical variable | Proportion ($\overset{\hat{}}{p}$) | $\pi_0=x$ |
| One quantitative variable | Mean ($\bar{x}$), Median ($m$), Min, Max, etc ... | $\mu_0=x$ |
| Comparing two categorical variables | Difference in proportions ($\overset{\hat{}}{p}_1-\overset{\hat{}}{p}_2$), ratio of the proportions (relative risk), $\chi^2$ |
$\pi_1-\pi_2=0$ ($rr=1$) |
| Comparing two quantitative variables | Difference in means ($\bar{x}_1-\bar{x}_2$), difference in medians, ratio of the means, ratio of the medians, etc ... |
$\mu_1-\mu_2=0$ ($rr=1$) |
| Comparing more than 2 categorical variables | $\chi^2$, MAD (of proportions) | $MAD=0$, $\chi^2=0$ |
| Comparing more than 2 quantitative variables | MAD (of the means, of the medians), $F$-statistic | $MAD=0$, $F=0$ |
| Association of 2 quantitative variables |
Correlation coefficient ($r$), regression slope ($m$) |
$\rho=0$, $\beta_1=0$ |
1. State hypotheses ($H_0$, $H_a$)
2. Calculate the statistic of interest from your sample(s) data
3. Construct the randomization distribution of the statistic of interest
- One variable (categorical): simulation of random samples ($\pi_0=x$)
- $\geq$2 variables: pool samples together ($H_0$: no difference), shuffle and split into random groups (same size than original samples), and calculate new statistic of interest from this randomization
distribution of statistic of interest if the null hypothesis were true
4. Measure how extreme your test statistic from (2) is, as compared to the distribution generated in (3)
p-value
Comparing proportions:
Comparing means (medians, etc ...):
1. State hypotheses ($H_0$, $H_a$)
2. Calculate the statistic of interest from your sample(s) data
3. Construct the bootstrap distribution of the statistic of interest
- One variable: bootstrap samples from original sample (same size)
- $\geq$2 variables: Independant bootstrap samples (same size than original samples), and calculate new statistic of interest from these bootstrap samples
distribution of statistic of interest if more samples were acquired
4. Taking the middle 95% of the bootstrap distribution.
is the null hypothesis parameter in this interval?
Comparing proportions:
Comparing means:


Coraline: "Dada, I really like bugs. You know what else I like? Math. We should make a program with bugs and math." 😍
5/26/2014, 1:09:00 PM
Favs: 11
Retweets: 3
link--- layout: tweet ---
Coraline: "Dada, I really like bugs. You know what else I like? Math. We should make a program with bugs and math." 😍
5/26/2014, 1:09:00 PM
Favs: 11
Retweets: 3
link


{% extends "base.html" %} {% block nav_vendor %}{% endblock %} {% block nav_customer %}{% endblock %} {% block nav %}{% endblock %} {% block main %}
Organize and manage your events using our application or register with us if you want to be vendors to events


Our vision is based on a global perspective. We aspire for a society with scientific brilliance and technological mastery matching international criteria on quality parameters. The managerial excellence would make an unprecedented leap and unmatched stride further accentuating its already accelerated momentum. This would make the nation dynamically distinct, professionally progressive and competitively superior while focused on ultimate national gain. Our vision is to see this nation emerge as a competitive citizen of the multinational society.
Our vision is based on a global perspective. We aspire for a society with scientific brilliance and technological mastery matching international criteria on quality parameters. The managerial excellence would make an unprecedented leap and unmatched stride further accentuating its already accelerated momentum. This would make the nation dynamically distinct, professionally progressive and competitively superior while focused on ultimate national gain. Our vision is to see this nation emerge as a competitive citizen of the multinational society.


Feminist Majority Foundation - Equality around the world [ http://feministcampus.org/conferences/2016-nyflc/ ]
Hi there [First_Name],
We’re less than three weeks away from.com/o/1400/p/salsa/event/common/public/?event_KEY=85116]! That means in just a few short days, folks from across the country will be joining together for three days of feminist workshops, panels, and caucuses focused on the issues YOU care about, from the speakers YOU want to see!
Don’t worry y'all - if you haven’t registered yet, there’s still plenty of time to get in on the action! [https://org.salsalabs.com/o/1400/p/salsa/event/common/public/?event_KEY=85116 ]
We’re not going to reveal all the surprises we have in store fora few since you all are so awesome! You can look forward to the following topics being showcased at the conference:
*Art as Social & Political Change*
*Online Anonymous Harassment & Abuse*
*Decentering Straight White Women in Reproductive Justice*
These topics are just the tip of the iceberg of *workshops and panel! Stay in the loop for more sneak peeks by checking outl media sites!
See y'all at the conference!
[https://org.salsalabs.com/o/1400/p/salsa/event/common/public/?event_KEY=85116]
Chelsea, Edwith, Kelli & Mari
Connect with us!
[https://www.facebook.com/feministcampus ] [https://twitter.com/feministcampus] [http://feministcampus.org/blog/] [http://instagram.com/feministcampus] [http://feministcampus.tumblr.com/]
You have received this e-mail because of your interest in women’s issues. To unsubscribe, please click here<EMAIL_ADDRESS>]
1600 Wilson Boulevard, Suite 801, Arlington, VA, 22209 |<PHONE_NUMBER> |<EMAIL_ADDRESS>[<EMAIL_ADDRESS>]


I am a developer that loves a good challenge, whether algorithmic or team-oriented I enjoy the rigorous process of finding well crafted solutions that work as indefinitely as can be achieved. I am a San Francisco Bay Area native, I have endured apprenticeships, assisting in numerous bootcamps as a TA, as well as completing a Full-Stack Web Development Course at Woz University.


The XPathResult2 interface represents the result of the evaluation of an XPath 2.0 expression within the context of a particular node. More...
#include <XPath2Result.hpp>
Public Types | |
Public Constants | |
| enum | ResultType { FIRST_RESULT = 100, ITERATOR_RESULT = 101, SNAPSHOT_RESULT = 102 } |
Public Member Functions | |
Destructor | |
| virtual | ~XPath2Result () |
| Destructor. | |
Functions introduced in DOM Level 3 | |
| virtual ResultType | getResultType () const =0 |
| Returns the result type of this result. | |
| virtual bool | isNode () const =0 |
| Returns true if the result has a current result and the value is a node. | |
| virtual const xercesc::DOMTypeInfo * | getTypeInfo () const =0 |
| Returns the DOM type info of the current result node or value. | |
| virtual double | getNumberValue () const =0 |
| Conversion of the current result to double. | |
| virtual int | getIntegerValue () const =0 |
| Conversion of the current result to int. | |
| virtual const XMLCh * | getStringValue () const =0 |
| Conversion of the current result to string. | |
| virtual bool | getBooleanValue () const =0 |
| Conversion of the current result to boolean. | |
| virtual xercesc::DOMNode * | getNodeValue () const =0 |
| Retrieve the current node value. | |
| virtual bool | getInvalidIteratorState () const =0 |
| Signifies that the iterator has become invalid. | |
| virtual size_t | getSnapshotLength () const =0 |
| The number of items in the result snapshot. | |
| virtual bool | iterateNext ()=0 |
| Iterates and returns true if the current result is the next item from the sequence or false if there are no more items. | |
| virtual bool | snapshotItem (size_t)=0 |
| Sets the current result to the indexth item in the snapshot collection. | |
Non-standard Extension | |
| virtual void | release ()=0 |
| Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children. | |
Protected Member Functions | |
Hidden constructors | |
| XPath2Result () |
The XPathResult2 interface represents the result of the evaluation of an XPath 2.0 expression within the context of a particular node.
Since evaluation of an XPath 2.0 expression can result in various result types, this object makes it possible to discover and manipulate the type and value of the result.
FIRST_RESULT
The result is a sequence as defined by XPath 2.0 and will be accessed as a single current value or there will be no current value if the sequence is empty. Document modification does not invalidate the value, but may mean that the result no longer corresponds to the current document. This is a convenience that permits optimization since the implementation can stop once the first item in the resulting sequence has been found. If there is more than one item in the actual result, the single item returned might not be the first in document order.
ITERATOR_RESULT
The result is a sequence as defined by XPath 2.0 that will be accessed iteratively. Document modification invalidates the iteration.
SNAPSHOT_RESULT
The result is a sequence as defined by XPath 2.0 that will be accessed as a snapshot list of values. Document modification does not invalidate the snapshot but may mean that reevaluation would not yield the same snapshot and any items in the snapshot may have been altered, moved, or removed from the document.
| virtual XPath2Result::~XPath2Result | ( | ) | [inline, virtual] |
Destructor.
| XPath2Result::XPath2Result | ( | ) | [inline, protected] |
| virtual bool XPath2Result::getBooleanValue | ( | ) | const [pure virtual] |
Conversion of the current result to boolean.
| XPathException | TYPE_ERR: raised if cannot be properly converted to boolean. | |
| DOMException | INVALID_STATE_ERR: There is no current result in the result. |
| virtual int XPath2Result::getIntegerValue | ( | ) | const [pure virtual] |
Conversion of the current result to int.
| XPathException | TYPE_ERR: raised if current result cannot be properly converted to int. | |
| DOMException | INVALID_STATE_ERR: There is no current result in the result. |
| virtual bool XPath2Result::getInvalidIteratorState | ( | ) | const [pure virtual] |
Signifies that the iterator has become invalid.
| virtual xercesc:: DOMNode* XPath2Result::getNodeValue | ( | ) | const [pure virtual] |
Retrieve the current node value.
| XPathException | TYPE_ERR: raised if current result is not a node. | |
| DOMException | INVALID_STATE_ERR: There is no current result in the result. |
| virtual double XPath2Result::getNumberValue | ( | ) | const [pure virtual] |
Conversion of the current result to double.
If the native double type of the DOM binding does not directly support the exact IEEE 754 result of the XPath expression, then it is up to the definition of the binding to specify how the XPath number is converted to the native binding number.
| XPathException | TYPE_ERR: raised if current result cannot be properly converted to double. | |
| DOMException | INVALID_STATE_ERR: There is no current result in the result. |
| virtual ResultType XPath2Result::getResultType | ( | ) | const [pure virtual] |
Returns the result type of this result.
| virtual size_t XPath2Result::getSnapshotLength | ( | ) | const [pure virtual] |
The number of items in the result snapshot.
Valid values for snapshotItem indices are 0 to snapshotLength-1 inclusive.
| XPathException | TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT. |
| virtual const XMLCh* XPath2Result::getStringValue | ( | ) | const [pure virtual] |
Conversion of the current result to string.
| XPathException | TYPE_ERR: raised if current result cannot be properly converted to string. | |
| DOMException | INVALID_STATE_ERR: There is no current result in the result. |
| virtual const xercesc:: DOMTypeInfo* XPath2Result::getTypeInfo | ( | ) | const [pure virtual] |
Returns the DOM type info of the current result node or value.
| virtual bool XPath2Result::isNode | ( | ) | const [pure virtual] |
Returns true if the result has a current result and the value is a node.
| virtual bool XPath2Result::iterateNext | ( | ) | [pure virtual] |
Iterates and returns true if the current result is the next item from the sequence or false if there are no more items.
| XPathException | TYPE_ERR: raised if resultType is not ITERATOR_RESULT. | |
| DOMException | INVALID_STATE_ERR: The document has been mutated since the result was returned. |
| virtual void XPath2Result::release | ( | ) | [pure virtual] |
Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.
Access to a released object will lead to unexpected result.
| virtual bool XPath2Result::snapshotItem | ( | size_t | ) | [pure virtual] |
Sets the current result to the indexth item in the snapshot collection.
If index is greater than or equal to the number of items in the list, this method returns false. Unlike the iterator result, the snapshot does not become invalid, but may not correspond to the current document if it is mutated.
| index | of type size_t - Index into the snapshot collection. |
| XPathException | TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT. |


[1.0/4.0]
The eighteenth century in Western culture was a different time, with a markedly different class structure from the present time. No middle class then, and thus there was a large, unbridgeable gulf between rich and poor. In fact, England at that time more closely resembled what would be considered a "developing" country today. This backdrop provides the setting for a tale of two outlaws who infiltrate the social circles of the aristocracy in order to rob them.
MacLeane (Jonny Lee Miller) is a gentleman languishing in a debtor's prison after losing his place in society.  Although his mortally wounded partner is brutally killed by the savage lawman Mr. Chance (Ken Stott), Plunkett is able to escape with the freed MacLeane. However, the two are apprehended and sent to prison, but not before Plunkett swallows a large ruby. In prison, the pair negotiate their release by bribing the warden with the concealed gemstone.
After gaining their freedom, Plunkett hatches a plan that can earn them some money. Since MacLeane was a gentleman, he could pass himself off as an aristocrat with Plunkett being his servant. This would allow the pair to determine targets for robbery by getting close and finding out who has money and what their whereabouts will be. Using a small sum of money that Plunkett has saved, they begin their ruse.
At their first foray, MacLeane meets, is enchanted by, and subsequently robs the captivating Lady Rebecca (Liv Tyler). Likewise, she takes an interest in him, who contrasts with the revolting suiter her guardian, Lord Gibson (Michael Gambon) keeps pushing on her. She immediately suspects MacLeane of being the "gentleman highwayman" who robbed her, but is only charmed by the gentle bandit.
Although it is sketchy and slow to develop, the premise constructs an interesting scenario. Although the pair are conspiring to criminal activity, they will the be the protagonists because in the class politics of the time, the aristocracy are symbolic of greed, corruption, and oppression. However, at the point at which the pair begin their criminal exploits, the plot competely withers. The writing omits any attempt at plausibility, such as having the pair barely conceal their identities, or always finding their victims unguarded and unarmed. Plunkett is portrayed as a former apothecary, but is given powers more like a wizard, using a dazzling command of chemistry and pyrotechnics to escape from hopeless situations.
The art direction is the only dimension in which the film is successful. It is apparently the the skeleton around which all other aspects were meant to serve, which may explain why they were so underdeveloped. The costume and setting realistically represent the time period, but the soundtrack gives a arresting but effective contrast by having a modern tone. Particularly striking is an elaborate society ball where a period dance is performed while modern techno music is scored. While these dimensions of the film are entertaining, they do not redeem the uninspired, cliche-driven plot.
The acting is capable but hampered by the poorly sketched characters. Only Carlyle is able to raise his character to anything beyond dull and cliche. Especially poorly written is the character of Chance. From his first scene he is depicted as vile and sociopathic. However, the script feels it necessary to bludgeon the viewer with this in every scene he occupies, to the extent that he becomes predictable and dismissively uninteresting.
Recommended against. This is a dull, uninspired film that is all style and devoid of substance. The costume, art direction, and even score are well done, but the writing is so poor as to make the entire experience boring at best.
(c) 1999 Murali Krishnan The Art House Squatter http://ArtHouseSquatter.com
Sent via Deja.com http://www.deja.com/ Before you buy.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


BloomBus Shuttle Tracker
Shuttle Type:
Campus Loop
Wal-Mart
Downtown Loop
Honeysuckle
Late Night Shuttle
Enable Geolocation


Ingredients
- 1 spoonful lemon sorbet, softened
- 1/2 ounce citrus vodka (optional, for a stronger drink)
- 4 ounces rosé champagne
- 2 to 3 raspberries, for garnish
Preparation
Combine the sorbet with the vodka in a cocktail shaker with ice. Shake vigorously. Add the champagne and stir. Strain into a chilled champagne flute and garnish with floating raspberries.
Reprinted with permission from 101 Champagne Cocktails by Kim Haasarud, © 2008 John Wiley & Sons, Inc.
my notes
recipe at a glance
type: Quick & Easy, Alcoholic
main ingredients: Lemon, Raspberry, Champagne
holiday/celebration: Cocktail Party, Wedding, Shower, New Year's Eve, Party, Engagement Party


Form is built on the idea that you will deliver your website the way you want it. You can mix and match all of the content blocks.
Fully responsive.
Every piece of content looks gorgeous on all devices. Built on Bootstrap 3.
Retina ready.
Retina functionality is built in, so you will impress on every screen out there.
Browser compatible.
Form is compatible with all popular browsers. Fully tested and optimised.
We are not individuals. We are a form of super-creative minds that create awesome brands, designs and products.
Bruce is the man responsible for most of the graphic design. He is also a famous super hero by night.
Dick is the best developer out there. His skills are unmatched and the stuff he does is simply amazing.
James is the founder of our small agency. He is the driving force behid all the creativity that goes around here.
Betty is our support and human relations expert. She has a super secret identity as a heroine too.
A selection of phases you can edit to show how things are done.
The first step for any of our projects is inspiration. When this strikes the rest is easy.
The second stage is to create our initial design. And after refining them we are ready to move on.
After the design is refined we jump into the coding stage. Where the design is finally developed.
If so, why don’t you get in touch with us so we can talk about your projects.


Please feel free to contact us...
By Phone on<PHONE_NUMBER>0
By Email on<EMAIL_ADDRESS>Or get in touch on social network...
Follow us on Twitter @coodle
Like us on Facebook at Coodle
By Email on<EMAIL_ADDRESS>Or get in touch on social network...
Follow us on Twitter @coodle
Like us on Facebook at Coodle


RadioLabeled
is a radio and a label. Label click
changes form value. Without label:
Radio
.
formControl.disable()
)
===
by default.
Must be a pure function
Import an Angular module for forms and
TuiRadioLabeledModule
in the same module where
you want to use our component:
Declare a form (FormGroup
) or a control
(FormControl
) in your component:
Add to the template:


LOADING ...
Your browser may not be compatible with this website. For an optimal experience, we suggest you to download one of this popular web browsers.
Please note that Unity WebGL is not currently supported on mobiles.
CATCHPHRASE
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Your browser does not support WebGL.
You can download one of this popular web browsers.


The accuracy depend on the receiver used. Inexpesive GPS models are available with a claimed PPS signal accuracy of 1 ms or better relative to the broadcast signal. However, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.
The $GPRMC message that the GPS transmits look like this:
$GPRMC,POS_UTC,POS_STAT,LAT,LAT_REF,LON,LON_REF,SPD,HDG,DATE,MAG_VAR,MAG_REF*CC<cr><lf> POS_UTC - UTC of position. Hours, minutes and seconds. (hhmmss) POS_STAT - Position status. (A = Data valid, V = Data invalid) LAT - Latitude (llll.ll) LAT_REF - Latitude direction. (N = North, S = South) LON - Longitude (yyyyy.yy) LON_REF - Longitude direction (E = East, W = West) SPD - Speed over ground. (knots) (x.x) HDG - Heading/track made good (degrees True) (x.x) DATE - Date (ddmmyy) MAG_VAR - Magnetic variation (degrees) (x.x) MAG_REF - Magnetic variation (E = East, W = West) CC - Checksum (optional) <cr><lf> - Sentence terminator.The driver will send a $PMOTG,RMC,0000*1D<cr><lf> message each time a $GPRMC string is needed. This is not needed on most GPS receivers because they automatically send the $GPRMC string every second and will only work on GPS receivers that understand the $PMOTG string. Others will just ignore it.
"$PGRMO,,2<cr><lf>"Now switch only $GPRMC on by sending it the following string.
"$PGRMO,GPRMC,1<cr><lf>"On some systems the PPS signal isn't switched on by default. It can be switched on by sending the following string.
"$PGRMC,,,,,,,,,,,,2<cr><lf>"
Additional Information


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one | |
| 3 | * or more contributor license agreements. See the NOTICE file | |
| 4 | * distributed with this work for additional information | |
| 5 | * regarding copyright ownership. The ASF licenses this file | |
| 6 | * to you under the Apache License, Version 2.0 (the | |
| 7 | * "License"); you may not use this file except in compliance | |
| 8 | * with the License. You may obtain a copy of the License at | |
| 9 | * | |
| 10 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 11 | * | |
| 12 | * Unless required by applicable law or agreed to in writing, | |
| 13 | * software distributed under the License is distributed on an | |
| 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| 15 | * KIND, either express or implied. See the License for the | |
| 16 | * specific language governing permissions and limitations | |
| 17 | * under the License. | |
| 18 | */ | |
| 19 | package org.apache.empire.db.sqlserver; | |
| 20 | ||
| 21 | import java.sql.DatabaseMetaData; | |
| 22 | import java.sql.SQLException; | |
| 23 | ||
| 24 | import org.apache.empire.db.DBTable; | |
| 25 | import org.apache.empire.db.validation.DBModelChecker; | |
| 26 | ||
| 27 | /** | |
| 28 | * MSSqlDBModelChecker | |
| 29 | * DataModel checker implementation for Microsoft SQLServer | |
| 30 | * @author doebele | |
| 31 | */ | |
| 32 | public class MSSqlDBModelChecker extends DBModelChecker | |
| 33 | { | |
| 34 | | |
| 35 | @Override | |
| 36 | protected String getMetaCatalog(String dbSchema) | |
| 37 | { | |
| 38 |
1
1. getMetaCatalog : replaced return value with "" for org/apache/empire/db/sqlserver/MSSqlDBModelChecker::getMetaCatalog → NO_COVERAGE |
return dbSchema; |
| 39 | } | |
| 40 | | |
| 41 | @Override | |
| 42 | protected String getMetaSchemaPattern(String dbSchema) | |
| 43 | { | |
| 44 |
1
1. getMetaSchemaPattern : replaced return value with "" for org/apache/empire/db/sqlserver/MSSqlDBModelChecker::getMetaSchemaPattern → NO_COVERAGE |
return "DBO"; |
| 45 | } | |
| 46 | ||
| 47 | @Override | |
| 48 | protected void collectForeignKeys(DatabaseMetaData dbMeta, String dbSchema, String tablePattern) | |
| 49 | throws SQLException | |
| 50 | { | |
| 51 | for (DBTable t : getTables()) | |
| 52 | { | |
| 53 |
1
1. collectForeignKeys : removed call to org/apache/empire/db/validation/DBModelChecker::collectForeignKeys → NO_COVERAGE |
super.collectForeignKeys(dbMeta, dbSchema, t.getName()); |
| 54 | } | |
| 55 | } | |
| 56 | | |
| 57 | } | |
Mutations | ||
| 38 |
1.1 |
|
| 44 |
1.1 |
|
| 53 |
1.1 |


How Tottenham could line up under Mourinho – Two key signings to add to crucial core of Spurs XI
by Tom CrackFollowing the sacking of Mauricio Pochettino on Tuesday, Tottenham have turned to former Chelsea and Manchester United boss Jose Mourinho in an effort to end their eleven-year trophy drought.
With a new manager at the helm, it means a changing of the club’s culture and a new-look squad. As the January transfer window is fast approaching and with some Spurs players seeing their contracts coming to an end, we’re going to look at how the north London side may line up come February 1.
SEE MORE: ‘Wish him all the best’ – Chelsea stalwart sends classy message to Mourinho after joining Tottenham
Goalkeeper – Paulo Gazzaniga
Following Hugo Lloris’ elbow injury in October and with the 33-year-old not expected to return to light training until mid-January, the Argentine will most likely keep his place as Spurs’ number one for a good portion of the season.
With an impressive performance against league leaders Liverpool, Gazzaniga has time and skill on his side to establish himself as one of the Premier League’s top keepers going forward.
Right Back – Serge Aurier
Despite failing to maintain the same standards as Kieran Tripper held at right back, the Ivorian’s aggressive playing style is something Mourinho has looked for in a lot of his defenders in the past.
Given the need to improve the squad as soon as possible, Aurier’s position may be his for now, but come next summer we could see the former PSG star looking for a new club once again.
Centre Back – Ruben Dias
Arguably the area of the Spurs’ squad that needs the most improvement is centre back. With Vertonghen’s contract expiring next summer, Mourinho will no doubt want to bring in a defender with youth and form to his name.
A player who ticks these boxes and more is Benfica’s 22 year-old star Ruben Dias and given he’s a compatriot for Mourinho, the connection between coach and player should be instantaneous.
With a £59m release clause, HITC.com have reported, via The Independent, that the new Spurs boss is looking to bring him to London.
Centre Back – Toby Alderweireld
Although many expect the Belgian to be on his way out the club come the summer transfer window, the overhaul of the Spurs defence won’t be an overnight event.
As the younger member of the pairing between him and Vertonghen it would come as no surprise if Alderweireld will be in Mourinho’s starting XI for the remainder of the season.
Left Back – Ryan Sessegnon
After arriving at the club injured, the integration of the young Englishman into the squad will feel like a new signing in itself.
With a defending mindset as well as attacking quality, Sessegnon’s emergence into the Spurs line up would be an exciting addition for all.
Left Central Midfielder – Tanguy Ndombele
From Makélélé to Xabi Alonso to Matic. A staple in any Mourinho squad has been that of the strong defensive minded midfielder. Ndombele possess all these traits in abundance.
The 22-year-old Frenchman may be struggling to find his way into what is an incredibly strong national team, but with an already impressive start to life in England, scoring a couple of goals from range, Spurs fans will hope he can take his game one step further under a manager like Mourinho.
Right Central Midfielder – Harry Winks
Despite sending a heartfelt message to now former boss Pochettino for integrating him into the squad, the promising midfielder should find no problem finding his way into Mourinho’s starting line up.
He may not be a constant goal threat, but his work rate in the centre of the field alongside his pass completion percentage, Winks has shown that he is not only the future for England, but his club as well.
Centre Attacking Midfielder – Dele Alli
An integral figure both for club and country over the past few years. Fans of both Spurs and England will hope he finds his top form for the remainder of the season ahead of EURO 2020 next summer.
Right Wing – Son Heung-Min
Spurs’ best player this season. A workhorse. Not much needs to be said about his quality. Mourinho will be happy he has one of the world’s most determined players in his team.
Left Wing – Gareth Bale
In a deal that would seem like the perfect ending to a rom-com, the return of Gareth Bale to the Premier League is seeming all the more likely.
After helping Wales qualify for EURO 2020, Bale held up a Welsh flag that read: ‘Wales. Golf. Madrid. In that order.’ That is potentially another step towards seeing his time with the Spanish club come to an end.
AS report that Mourinho wants to bring the star winger back to the club where he made a name for himself.
Striker – Harry Kane
A proven consistent goalscorer for five years now, it would be shocking if Kane was omitted from his new manager’s line up.
As one of the best strikers in the world, Mourinho will look to do everything in his power to keep the England captain at the club.
Bringing in a manager of the calibre of Mourinho’s adds instant excitement for all involved. However, the question is, can Spurs find their form that helped them reach the Champions League final as well as balance the budget to bring in the players necessary to take them to the next level?


Name: {{eventShow.event.name}}
Date: {{eventShow.event.date}}
Time: {{eventShow.event.time}}
Guests: {{eventShow.event.guests}}
{{eventShow.event.venue.name}}
{{eventShow.event.venue.location}}
Phone: {{eventShow.event.venue.contact}}
Notes: {{eventShow.event.note.content}}
Delete Event
Edit Event


{{ metadata.get('title') }}
Introduction
HTTP/2 was the first major update to the main transport protocol of the web in nearly 20 years. It arrived with a wealth of expectations: it promised a free performance boost with no downsides. More than that - we could stop doing all the hacks and work arounds that HTTP/1.1 forced us into to get around its inefficiencies. Bundling, spriting, inlining and even sharding domains would all become anti-patterns in an HTTP/2 world, giving performance by default. This meant even those without the skills and resources to concentrate on web performance would suddenly have performant websites. The reality has been, as ever, a little more nuanced than that. It has been over four years since its formal approval as a standard in May 2015 as RFC 7540, so now is a good time to look over how this relatively new technology has fared in the real world.
What is HTTP/2?
For those not familiar with the technology a bit of background is
helpful to make the most of the metrics and findings in this chapter. Up
until recently HTTP has always been a text-based protocol. An HTTP
client like a web browser opened a TCP connection to a server, and then
sent an HTTP command like GET /index.html
to ask for a
resource. This was enhanced in HTTP/1.0 to add HTTP headers so
various pieces of meta data could be made in addition to the request
(what browser it is, formats it understands…etc.). These HTTP headers
were also text-based and separated by newline characters. Servers parsed
the incoming requests by reading the request and any HTTP headers line
by line, and then the server responded, with its own HTTP response
headers and the actual resource being requested. The protocol seemed
simple, but that also meant certain limitations - the main one being
that HTTP was basically synchronous: once an HTTP request had been sent,
the whole TCP connection was basically off limits for anything else
until the response had come back and been read and processed. This was
incredibly inefficient and required multiple TCP connections (browsers
typically use 6) to allow a limited form of parallelization. That in
itself brings its own issues as TCP connections take time and resources
to set up and get to full efficiency, especially when using HTTPS which
is standard nowadays. HTTP/1.1 improved it somewhat allowing reuse of
TCP connections for subsequent requests but still did not solve the
parallelization issue.
Despite HTTP being text-based, the reality is that it was rarely used to transport text, at least in it's raw format. While it was true that HTTP headers were still text, the payloads themselves often were not. Text files like HTML, JS and CSS are usually compressed for transport into a binary format using gzip, brotli or similar and non-text files like images, videos… etc. are served in their own formats. The whole HTTP message is then often wrapped in HTTPS to encrypt the messages for security reasons. So, the web had basically moved on from text-based transport a long time ago, but HTTP had not. One reason for this stagnation was because it was so difficult to introduce any breaking changes to such a ubiquitous protocol like HTTP (previous efforts had tried and failed). Many routers, firewalls and other middleboxes understand HTTP and would react badly to major changes to it. Upgrading them all to support a new version is simply not possible.
In 2009 Google announced they were working on an alternative to the text-based HTTP called SPDY. This would take advantage of the fact that HTTP messages were often encrypted in HTTPS which prevents them being read and interfered with en route. Google controlled one of the most popular browsers (Chrome) and some of the most popular websites (Google, YouTube, Gmail…etc.) - so both ends of the connection. Google's idea was to pack HTTP messages into a proprietary format, send them across the internet, and then unpacked them on the other side. The proprietary format (SPDY) was binary-based rather than text-based which solved some of the main performance problems with HTTP/1.1 by allowing more efficient use of a single TCP connection, negating the need to open the 6 connections that had become the norm under HTTP/1.1. By using SPDY in the real world they were able to prove it was more performant for real users, and not just because of some lab-based experimental results. After rolling out SPDY to all Google websites, other servers and browser started implementing it, and then it was time to standardize this proprietary format into an internet standard and thus HTTP/2 was born.
HTTP/2 has the following key concepts:
- Binary format
- Multiplexing
- Flow Control
- Prioritization
- Header compression
- Push
Binary format, means that HTTP/2 messages are wrapped into frames of a pre-defined format. This means HTTP messages are easier to parse and no longer require scanning for newline characters. This is better for security as there were a number of exploits for previous versions of HTTP. It also means HTTP/2 connections can be multiplexed: different frames for different streams can be sent on the same connection without interfering with each other as each Frame includes a Stream Identifier and its length. Multiplexing allows much more efficient use of a single TCP connection without the overhead of opening additional connections. Ideally we would open a single connection per domain (or even for multiple domains!).
Having separate streams does introduce some complexities along with some potential benefits. HTTP/2 needs the concept of flow control to allow the different streams to send data at different rates, whereas previously, with only one response in flight at any one time, this was controlled at a connection level by TCP flow control. Prioritization similarly allows multiple requests to be sent together but with the most important requests getting more of the bandwidth.
Finally, HTTP/2 introduced two new concepts: header compression allowed those text-based HTTP headers to be sent more efficiently (using an HTTP/2-specific HPACK format for security reasons) and HTTP/2 push allowed more than one response to be sent in answer to a request. This allowed the server to "push" resources before a client was even aware it needed them. Push was supposed to solve the performance workaround of having to inline resources like CSS and JavaScript directly into HTML to prevent holding up the page while those resources were requested. With HTTP/2 the CSS and JavaScript could remain as external files but be pushed along with the initial HTML, so they were available immediately. Subsequent page requests would not push these resources, since they would now be cached, and so would not waste bandwidth.
This whistle-stop tour of HTTP/2 gives the main history and concepts of the newish protocol. As should be apparent from this explanation, the main benefit of HTTP/2 is to address performance limitations of the HTTP/1.1 protocol. There were also security improvements as well - perhaps most importantly in being to address performance issues of using HTTPS since HTTP/2, even over HTTPS, is often much faster than plain HTTP. Other than the web browser packing the HTTP messages into the new binary format, and the web server unpacking it at the other side, the core basics of HTTP itself stayed roughly the same. This means web applications do not need to make any changes to support HTTP/2 as the browser and server take care of this. Turning it on should be a free performance boost and because of this adoption should be relatively easy. Of course, there are ways web developers can optimize for HTTP/2 to take full advantage of how it differs.
Adoption of HTTP/2
As mentioned above, Internet protocols are often difficult to adopt since they are ingrained into so much of the infrastructure that makes up the internet. This makes introducing any changes slow and difficult. IPv6 for example has been around for 20 years but has struggled to be adopted. HTTP/2 however, was different as it was effectively hidden in HTTPS (at least for the browser uses cases) removing barriers to adoption as long as both the browser and server supported it. Browser support has been very strong for some time and the advent of auto updating evergreen browsers has meant that an estimated 95% of global users support HTTP/2 now. For this Web Almanac we use HTTP Archive which runs a Chrome web crawler on the approximately 5 million top websites (on both Desktop and Mobile with a slightly different set for each). This shows that HTTP/2 usage is now the majority protocol - an impressive feat just 4 short years after formal standardization:
Figure 1 - HTTP/2 usage by request
Looking at the breakdown of all HTTP versions by request we see the following:
| Protocol | Desktop | Mobile | Both |
|---|---|---|---|
| 5.60% | 0.57% | 2.97% | |
| HTTP/0.9 | 0.00% | 0.00% | 0.00% |
| HTTP/1.0 | 0.08% | 0.05% | 0.06% |
| HTTP/1.1 | 40.36% | 45.01% | 42.79% |
| HTTP/2 | 53.96% | 54.37% | 54.18% |
Figure 2 - HTTP version usage by request
This shows that HTTP/1.1 and HTTP/2 are the versions used by the vast majority of requests as expected. There are only a very small number of requests on the older HTTP/1.0 and HTTP/0.9 protocols. Annoyingly there is a larger percentage where the protocol was not correctly tracked by the HTTP Archive crawl, particularly on desktop. Digging into this has shown various reasons, some of which I can explain and some of which I can't. Based on spot checks they mostly appear to be HTTP/1.1 requests and, assuming they are, desktop and mobile usage is similar. Despite there being a little larger percentage of noise than I'd like, it doesn't alter the overall message being conveyed here. Other than that, the mobile/desktop similarity is not unexpected - the HTTP Archive crawls using Chrome which supports HTTP/2 for both desktop and mobile. Real world usage may have slightly different stats with some older usage of browsers on both but even then support is widespread so I would not expect a large variation between desktop and mobile.
At present the HTTP Archive does not track HTTP over QUIC (soon to be standardized as HTTP/3) separately, so these are listed under HTTP/2 but we'll look at other ways of measuring that later in this chapter.
Looking at the number of requests will skew the results somewhat due to popular requests. For example, many sites load Google Analytics, which does support HTTP/2, and so would show as an HTTP/2 request even if the embedding site itself does not support HTTP/2. On the other hand, popular websites (that tend to support HTTP/2) are also underrepresented in the above stats as they are only measured once (e.g. google.com and obscuresite.com are given equal weighting).  However, looking at other sources (for example the Mozilla telemetry which looks at real-world usage through the Firefox browser) shows similar statistics.
It is still interesting to look at home pages only to get a rough figure on the number of sites that support HTTP/2 (at least on their home page). Figure 3 shows less support than overall requests, as expected, at around 36%:
| Protocol | Desktop | Mobile | Both |
|---|---|---|---|
| 0.09% | 0.08% | 0.08% | |
| HTTP/1.0 | 0.09% | 0.08% | 0.09% |
| HTTP/1.1 | 62.36% | 63.92% | 63.22% |
| HTTP/2 | 37.46% | 35.92% | 36.61% |
Figure 3 - HTTP version usage for home pages
HTTP/2 is only supported by browsers over HTTPS, even though officially HTTP/2 can be used over HTTPS or over unencrypted non-HTTPS connections. As mentioned previously, hiding the new protocol in encrypted HTTPS connections prevents networking appliances which do not understand this new protocol from interfering with (or rejecting!) its usage. Additionally, the HTTPS handshake allows an easy method of the client and server agreeing to use HTTP/2. The web is moving to HTTPS and HTTP/2 turns the traditional argument of HTTPS being bad for performance almost completely on its head. Not every site has made the transition to HTTPS, so HTTP/2 will not even be available to those that have not. Looking at just those sites that use HTTPS, we do see a higher percentage support HTTP/2 at around 55% - similar to the first all requests statistic we started with:
| Protocol | Desktop | Mobile | Both |
|---|---|---|---|
| 0.09% | 0.10% | 0.09% | |
| HTTP/1.0 | 0.06% | 0.06% | 0.06% |
| HTTP/1.1 | 45.81% | 44.31% | 45.01% |
| HTTP/2 | 54.04% | 55.53% | 54.83% |
Figure 4 - HTTP version usage for HTTPS home pages
We have shown that browser support is strong, and there is a safe road to adoption, so why does every site (or at least every HTTPS site) not support HTTP/2? Well here we come to the final item for support we have not measured yet: server support. This is more problematic than browser support as, unlike modern browsers, servers often do not automatically upgrade to the latest version. Even when the server is regularly maintained and patched that will often just apply security patches rather than new features like HTTP/2. Let us look first at the server HTTP header for those sites that do support HTTP/2:
| Server | Desktop | Mobile | Both |
|---|---|---|---|
| nginx | 34.04% | 32.48% | 33.19% |
| cloudflare | 23.76% | 22.29% | 22.97% |
| Apache | 17.31% | 19.11% | 18.28% |
| 4.56% | 5.13% | 4.87% | |
| LiteSpeed | 4.11% | 4.97% | 4.57% |
| GSE | 2.16% | 3.73% | 3.01% |
| Microsoft-IIS | 3.09% | 2.66% | 2.86% |
| openresty | 2.15% | 2.01% | 2.07% |
| … | … | … | … |
Figure 5 - Servers used for HTTP/2
Nginx provides package repos that allow ease of installing or upgrading to the latest version, so it is no surprise to see it leading the way here. Cloudflare is the most popular CDNs and enables HTTP/2 by default so again it is also not surprising to see this as a large percentage of HTTP/2 sites. Incidently, Cloudflare uses a heavily customised version of nginx as their web server. After this we see Apache at around 20% of usage, followed by some servers who choose to hide what they are and then the smaller players (LiteSpeed, IIS, Google Servlet Engine and openresty - which is nginx based).
What is more interesting is those sites that that do not support HTTP/2:
| Server | Desktop | Mobile | Both |
|---|---|---|---|
| Apache | 46.76% | 46.84% | 46.80% |
| nginx | 21.12% | 21.33% | 21.24% |
| Microsoft-IIS | 11.30% | 9.60% | 10.36% |
| 7.96% | 7.59% | 7.75% | |
| GSE | 1.90% | 3.84% | 2.98% |
| cloudflare | 2.44% | 2.48% | 2.46% |
| LiteSpeed | 1.02% | 1.63% | 1.36% |
| openresty | 1.22% | 1.36% | 1.30% |
| … | … | … | … |
Figure 6 - Servers used for HTTP/1.1 or lower
Some of this will be non-HTTPS traffic that would use HTTP/1.1 even if the server supported HTTP/2, but a bigger issue is those that do not support HTTP/2. In these stats we see a much greater share for Apache and IIS which are likely running older versions. For Apache in particular it is often not easy to add HTTP/2 support to an existing installation as Apache does not provide an official repository to install this from. This often means resorting to compiling from source or trusting a third-party repo - neither of which is particularly appealing to many administrators. Only the latest versions of Linux distributions (RHEL and CentOS 8, Ubuntu 18 and Debian 9) come with a version of Apache which supports HTTP/2 and many servers are not running those yet. On the Microsoft side only Windows Server 2016 and above supports HTTP/2 so again those running older versions cannot support this in IIS. Merging these two stats together we can see the percentage of installs, of each server, that uses HTTP/2:
| Server | Desktop | Mobile |
|---|---|---|
| cloudflare | 85.40% | 83.46% |
| LiteSpeed | 70.80% | 63.08% |
| openresty | 51.41% | 45.24% |
| nginx | 49.23% | 46.19% |
| GSE | 40.54% | 35.25% |
| 25.57% | 27.49% | |
| Apache | 18.09% | 18.56% |
| Microsoft-IIS | 14.10% | 13.47% |
| … | … | … |
Figure 7 - percentage installs of each server used to provide HTTP/2
It's clear Apache and IIS fall way behind with 18% and 14% of their installed based supporting HTTP/2, and this has to be at least in part, a consequence of it being more difficult to upgrade them. A full operating system upgrade is often required for many to get this support easily. Hopefully this will get easier as new versions of operating systems become the norm. None of this is a comment on the HTTP/2 implementations here (I happen to think Apache has one of the best implementations), but more in the ease of enabling HTTP/2 in each of these servers - or lack thereof.
Impact of HTTP/2
The impact of HTTP/2 is a much more difficult to measure statistic, especially using the HTTP Archive methodology. Ideally sites should be crawled with both HTTP/1.1 and HTTP/2 and the difference measured but that is not possible with the statistics we are investigating here. Additionally, measuring whether the average HTTP/2 site is faster than the average HTTP/1.1 site introduces too many other variables that I feel requires a more exhaustive study than we can cover here.
One impact that can be measured is in the changing use of HTTP now we are in an HTTP/2 world. Multiple connections were a work around with HTTP/1.1 to allow a limited form of parallelization, but this is in fact the opposite of what usually works best with HTTP/2. A single connection reduces the overhead of TCP setup, TCP slow start, HTTPS negotiation and also allows the potential of cross-request prioritization. The HTTP Archive measures the number of TCP connections per page and that is dropping steadily as more sites support HTTP/2 and use its single connection instead of 6 separate connections:
Figure 8 - TCP connections per page
Bundling assets to obtain fewer requests was another HTTP/1.1 workaround that went by many names: bundling, concatenation, packaging, spriting, … etc. It is less necessary when using HTTP/2 as there is less overhead with requests but it should be noted that requests are not free in HTTP/2 and those that experimented with removing bundling completely have noticed a loss in performance. Looking at the number of requests loaded by page over time, we do see a slight decrease in requests, rather than the expected increase:
Figure 9 - Total Requests per page
This low rate of change can perhaps be attributed to the aforementioned observations that bundling cannot be removed (at least completely) without a negative performance impact and that many build tools currently bundle for historical reasons based on HTTP/1.1 recommendations. It is also likely that many sites may not be willing to penalize HTTP/1.1 users by undoing their HTTP/1.1 performance hacks just yet, or at least that they do not have the confidence (or time!) to feel this is worthwhile. That the number of requests is staying roughly static, and against the background of an ever increasing page weight is interesting though perhaps not really related to HTTP/2.
HTTP/2 Push
HTTP/2 push has a mixed history despite being a much-hyped new feature of HTTP/2. The other features were basically under the hood performance improvements, but push was a brand-new concept that completely broke the single request to single response nature of HTTP up until then. It allowed extra responses to be returned: when you asked for the web page, the server could respond with the HTML page as usual, but then also send you the critical CSS and JavaScript, thus avoiding any additional round trips for certain resources. It would in theory allow us to stop inlining CSS and JavaScript into our HTML and yet still get the same performance gains of doing it. After solving that, it could potentially lead to all sorts of new and interesting use cases.
The reality has been… well, a bit disappointing. HTTP/2 push has proved much harder than originally envisaged to use effectively. Some of this has been due to the complexity of how HTTP/2 push works, and the implementation issues due to that. A bigger concern is that push can quite easily cause, rather than solve, performance issues. Over-pushing is a real risk. Often the browser is in the best place to decide what to request, and just as crucially when to request it but HTTP/2 push puts that responsibility on the server. Pushing resources that a browser already has in its cache, is a waste of bandwidth (though in my opinion so is inlining CSS but that gets must less of a hard time about that than HTTP/2 push!). Proposals to inform the server about the status of the browser cache have stalled especially on privacy concerns. Even without that problem, there are other potential issues if push is not used correctly. For example, pushing large images and therefore holding up the sending of critical CSS and JavaScript will lead to slower websites than if you'd not pushed at all!
There has also been very little evidence to date that push, even when implemented correctly, results in the performance increase it promised. This is an area that again the HTTP Archive is not best placed to answer, due to the nature of how it runs (a month crawl of popular sites using Chrome in one state) so we won't delve into it too much here, but suffice to say that the performance gains are far from clear cut and the potential problems are real.
Putting that aside let's look at the usage of HTTP/2 push:
| Client | Sites Using HTTP/2 Push | Sites Using HTTP/2 Push (%) |
|---|---|---|
| Desktop | 22,581 | 0.52% |
| Mobile | 31,452 | 0.59% |
Figure 10 - Sites using HTTP/2 push
These status show that the uptick of HTTP/2 push is very low - most likely because of the issues described previously. However, when sites do use push, then tend to use it a lot rather than for one or two assets as shown in Figure 11:
| Client | Avg Pushed Requests | Avg KB Pushed |
|---|---|---|
| Desktop | 7.86 | 162.38 |
| Mobile | 6.35 | 122.78 |
Figure 11 - How much is pushed when it is used
This is a concern as previous advice has been to be conservative with push and to "push just enough resources to fill idle network time, and no more". The above statistics suggest many resources, of a significant combined size are pushed. Looking at what is pushed we see the data in Figure 12:
Figure 12 - What asset types is push used for?
JavaScript and then CSS are the overwhelming majority of pushed items, both by volume and by bytes. After this there is a rag tag assortment of images, fonts, data, …etc. At the tail end we see around 100 sites pushing video - which may be intentional or may be a sign of over-pushing the wrong types of assets!
One concern raised by some, is that HTTP/2 implementations have
repurposed the preload HTTP link header as a signal to push. One of the
most popular uses of the preload resource hint is to
inform the browser of late-discovered resources like fonts and images,
that the browser will not see until the CSS for example has been
requested, downloaded and parsed. If these are now pushed based on that
header, there was a concern that reusing this may result in a lot of
unintended pushes. However, the relative low usage of fonts and images
may mean that risk is not being seen as much as was feared.
<link rel="preload" ... >
tags are often used in the
HTML rather than HTTP link headers and the meta tags are not a signal to
push. Statistics in the resource hint chapter show that
less than 1% of sites use the preload HTTP link header, and about the
same amount use preconnection which has no meaning in HTTP/2, so this
would suggest this is not so much of an issue. Though there are a number
of fonts and other assets being pushed, which may be a signal of this.
As a counter argument to those complaints, if an asset is important
enough to preload, then it could be argued these assets should be pushed
if possible as browsers treat a preload hints as very high priority
requests anyway. Any performance concern is therefore (again arguably)
at the overuse of preload, rather than the resulting HTTP/2 push that
happens because of this.
To get around this unintended push, you can provide the
nopush
attribute in your preload header:
link: </assets/jquery.js>; rel=preload; as=script; nopush
It looks like 5% of preload HTTP headers do make use of this attribute, which is higher than I would have expected as I would have considered this a niche optimization. Then again, so is the use of preload HTTP headers and/or HTTP/2 push itself!
Issues
HTTP/2 is mostly a seamless upgrade that, once your server supports it, you can switch on with no need to change your website or application. Of course, you can optimize for HTTP/2 or stop using HTTP/1.1 workarounds as much, but in general a site will usually work without needing any changes - but just be faster. There are a couple of gotchas to be aware of however that can impact any upgrade and some sites have found these out the hard way.
One cause of issues in HTTP/2 is the poor support of HTTP/2 prioritization. This feature allows multiple requests in progress to make the appropriate use of the connection. This is especially important since HTTP/2 has massively increased the number of requests that can be running on the same connection. 100 or 128 parallel requests limits are common in server implementations. Previously the browser had a max of 6 connections per domain and so used its skill and judgement to decide how best to use those connections. Now it rarely needs to queue and can send all requests as soon as it knows about them. This then can lead to the bandwidth being "wasted" on lower priority requests while critical requests are delayed (and incidentally can also lead to swamping your backend server with more requests than it is used to!). HTTP/2 has a complex prioritization model (too complex many say - hence why it is being reconsidered for HTTP/3!) but few servers honor that properly. This can be because their HTTP/2 implementations are not up to scratch or because of so called bufferbloat where the responses are already en route before the server realizes there is a higher priority request. Due to the varying nature of servers, TCP stacks and locations it is difficult to measure this for most sites, but with CDNs this should be more consistent. Patrick Meenan created an example test page which deliberately tries to download a load of low-priority, off-screen, images, before requesting some high priority on-screen images. A good HTTP/2 server should be able to recognize this and send the high priority images shortly after requested, at the expense of the lower priority images. A poor HTTP/2 server will just respond in the request order and ignore any priority signals. Andy Davies has a page tracking status of various CDNs for Patrick's test. The HTTP Archive identifies when a CDN is used as part of its crawl and merging these two datasets that gives us the results shown in Figure 13:
| CDN | Prioritizes Correctly? | Desktop | Mobile | Both |
|---|---|---|---|---|
| Not using CDN | Unknown | 57.81% | 60.41% | 59.21% |
| Cloudflare | Pass | 23.15% | 21.77% | 22.40% |
| Fail | 6.67% | 7.11% | 6.90% | |
| Amazon CloudFront | Fail | 2.83% | 2.38% | 2.59% |
| Fastly | Pass | 2.40% | 1.77% | 2.06% |
| Akamai | Pass | 1.79% | 1.50% | 1.64% |
| Unknown | 1.32% | 1.58% | 1.46% | |
| WordPress | Pass | 1.12% | 0.99% | 1.05% |
| Sucuri Firewall | Fail | 0.88% | 0.75% | 0.81% |
| Incapsula | Fail | 0.39% | 0.34% | 0.36% |
| Netlify | Fail | 0.23% | 0.15% | 0.19% |
| OVH CDN | Unknown | 0.19% | 0.18% | 0.18% |
Figure 13 - HTTP/2 prioritization support in common CDNs
This shows that a not insignificant portion of traffic is subject to the identified issue. How much of a problem this is, depends on exactly how your page loads and whether high priority resources are discovered late or not for your site, but it does show another complexity to take into considerations.
Another issue is with the upgrade
HTTP header being used
incorrectly. Web servers can respond to requests with an
upgrade
HTTP header suggesting that it supports a better
protocol that the client might wish to use (e.g. advertise HTTP/2 to a
client only using HTTP/1.1). You might think this would be useful as a
way of informing the browser it supports HTTP/2 but since browsers only
support HTTP/2 over HTTPS and since use of HTTP/2 can be negotiated
through the HTTPS handshake, the use of this upgrade
header
for advertising HTTP/2 is pretty limited (to browsers at least). Worse
than that, is when a server sends an upgrade header in error. This could
be because an HTTP/2 supporting backend server is sending the header and
then an HTTP/1.1-only edge server is blindly forwarding to the client.
Apache emits the upgrade
header when mod_http2 is enabled
but HTTP/2 is not being used, and a nginx instance sitting in front of
such an Apache happily forwards this header even when nginx does not
support HTTP/2. This false advertising then leads to clients trying (and
failing!) to use HTTP/2 as they are advised to. 108 site use HTTP/2 and
yet suggest upgrading to HTTP/2 in this upgrade
header. A
further 12,767 sites on desktop (15,235 on mobile) suggest upgrading an
HTTP/1.1 connection delivered over HTTPS to HTTP/2 when it's clear this
was not available, or it would have been used already. These are a small
minority of the 4.3 million sites crawled on desktop and 5.3 million
sites crawled on mobile for these stats but it shows that this was still
an issue affecting a number of sites out there. Browsers handle this
inconsistently with Safari in particular attempting to upgrade and then
getting itself in a mess and refusing to display the site at all. All
this is before we get into sites recommending upgrading to
http1.0
, http://1.1
or even
-all,+TLSv1.3,+TLSv1.2
(clearly some typos in web server
configurations going on here!).
There are further implementation issues we could look at. For example, HTTP/2 is much stricter about HTTP header names, rejecting the whole request if you respond with spaces, colons or other invalid HTTP header names. The header names are also converted to lowercase which catches some by surprise if their application assumes a certain capitalization (which was never guaranteed previously as HTTP/1.1 specifically states the header names are case insensitive, but still some have depended on this). The HTTP Archive could potentially be used to identify these issues as well, though some of them will not be apparent on the home page so we did not delve into that this year.
HTTP/3
The world does not stand still and despite HTTP/2 not having even reached its official 5th birthday, people are already seeing it as old news and getting more excited about its successor: HTTP/3. HTTP/3 builds on the concepts of HTTP/2 but moves it from working over TCP connections that HTTP has always used to a UDP-based protocol called QUIC. This allows us to fix one edge case where HTTP/2 is slower then HTTP/1.1, when there is high packet loss and the guaranteed nature of TCP holds up all streams and throttles back all streams. It also allows us to address some TCP and HTTPS inefficiencies such as consolidating on one handshake for both, and supporting many ideas for TCP that have proven hard to implement in real life (TCP fast open, 0-RTT, …etc.). HTTP/3 also cleans up some overlap between TCP and HTTP/2 (e.g. flow control being implemented in both layers) but conceptually it is very similar to HTTP/2. Web developers who understand and have optimized for HTTP/2 should have to make no further changes for HTTP/3. Server operators will have more work to do however as the differences between TCP and QUIC are much more groundbreaking. They will make implementation harder so the roll out of HTTP/3 may take considerably longer than HTTP/2 and initially be limited to those with certain expertise in the field (e.g. CDNs).
QUIC has been implemented by Google for a number of years and it is now undergoing a similar standardization process that SDPY did on its way to HTTP/2. At the end of 2018 it was decided to name the HTTP part of QUIC as HTTP/3 (in Google/s version of QUIC is was simply known as HTTP/2 even though it was not exactly the same as regular HTTP/2). QUIC has ambitions beyond just HTTP but for the moment it is the use case being worked on. Just as this chapter was being written, Cloudflare, Chrome and Firefox all announced HTTP/3 support despite the fact that HTTP/3 is still not formally complete or approved as a standard yet. This is welcome as QUIC support has been somewhat lacking outside of Google until recently and definitely lags SPDY and HTTP/2 support from a similar stage of standardization.
Because HTTP/3 uses QUIC over UDP rather than TCP it makes the discovery
of HTTP/3 support a bigger challenge than HTTP/2 discovery. With HTTP/2
we can mostly use the HTTPS handshake, but as HTTP/3 is on a completely
different connection that is not an option here. HTTP/2 did also use the
upgrade
HTTP header to inform of HTTP/2 support, and
although that was not that useful for HTTP/2, a similar mechanism has
been put in place for QUIC that is more useful. The
alternative services HTTP header (alt-svc
)
advertises alternative protocols that can be used on completely
different connections (as opposed to alternative protocols that can be
used on this connection - which is what the upgrade
HTTP
header is used for). Analysis of this header shows that 7.67% of desktop
sites and 8.38% of mobile sites already support QUIC (which roughly
represents Google percentage of traffic unsurprisingly enough as it has
been using this for a while), and 0.04% are already supporting
h3
(meaning HTTP/3) in this field. I would imagine by next
year’s Almanac this number will have increased significantly.
Conclusion
This analysis of the available statistics in HTTP Archive has shown what many of us in the HTTP community were already aware of: HTTP/2 is here and proving very popular. It is already the dominant protocol in terms of number of request but has not quite overtaken HTTP/1.1 in terms of number of sites supported. The long tail of the internet means that it often takes an exponentially longer time to make noticeable gains on the less well-maintained sites than on the high profile, high volume sites.
We've also talked about how it is (still!) not easy to get HTTP/2 support in some installations. Server developers, operating system distributors and end customers all have a part to play in pushing to make that easier. Tying software to operating systems always lengthens deployment time - and in fact one of the very reasons for QUIC is to break a similar barrier with deploying TCP changes. In many instances there is no real reason to tie web server versions to operating systems. Apache (to use one of the more popular examples) will run with HTTP/2 support in older operating systems but getting an up to date version on to the server should not require the expertise or risk it currently does. Nginx does very well here hosting repositories for the common Linux flavors to make installation easier and if the Apache team (or the Linux distribution vendors) do not offer something similar, then I can only see Apache's usage continuing to shrink as it struggles to hold relevance and shake its reputation as old and slow - based on older installs - even though up to date versions have one of the best HTTP/2 implementations. I see that as less of an issue for IIS since it is usually the preferred web server on the Windows side.
Other than that, HTTP/2 has been a relatively easy upgrade path - which is why it has the strong uptake it has already seen. For the most part, it is a painless switch on and therefore, for most, it has turned out to be a hassle-free performance increase that requires little thought once your server supports it. The devil is in the details though (as always), and small differences between server implementations can result in better or worse HTTP/2 usage and ultimately end user experience. There have also been a number of bugs and even security issues, as is to be expected with any new protocol. Ensuring you are using a strong, up to date, well maintained implementation of any newish protocol like HTTP/2 will ensure you stay on top of these issues. However, that can take expertise and managing. The roll out of QUIC and HTTP/3 will likely be even more complicated and require more expertise. Perhaps this is best left to third party service providers like CDNs who have this expertise and can give your site easy access to these features? However, even when left to the experts, this is not a sure thing (as the prioritization statistics show), but if you choose your server provider wisely and engage with them on what your priorities are, then it should be an easier implementation. And on that note it would be great if the CDNs prioritized the issue highlighted above (pun definitely intended!), though I suspect with the advent of a new prioritization method in HTTP/3, many will hold tight. The next year will prove yet more interesting times in the HTTP world.


‘Revise taxonomy teaching’
by Special CorrespondentThere is an urgent need for overhauling current teaching and training methods and contents in taxonomy - the scientific branch concerned with classification - at all levels, according to experts.
The observation came in a declaration made at the 29th annual conference of Indian Association of Angiosperm Taxonomy (IAAT) held at the Jawaharlal Nehru Tropical Botanic Garden and Research Institute (JNTBGRI), Palode.
The future of taxonomic practice and research depends on approaches involving multiple agencies, which range from the use of traditional knowledge-based approaches to classical taxonomy to the use of modern next-generation sequencing tools, the declaration stated.
It further called for the establishment of a ‘National Taxonomy Initiative,’ which builds on past experiences of both the Government and others, by the National Biodiversity Authority (NBA) in collaboration with all State Biodiversity Boards (SBB). “Partnerships with private sector, civil society organizations should be urgently explored to digitise, disseminate and discover more diversity,” it added.
A. Mao, Director, Botanical Survey of India, inaugurated the conference. A symposium on ‘Modern trends in biosystematics of angiosperms’ also was held


Pod Creation Latency
Pod Creation Throughput
Kubelet CPU Usage
Kubelet Memory Usage
Runtime CPU Usage
Runtime Memory Usage


PACIFIC HEIGHTS A film review by Mark R. Leeper Copyright 1990 Mark R. Leeper
Capsule review: So you think you want to be a landlord, huh? PACIFIC HEIGHTS is your worst real estate nightmare ... at least for two-thirds. Then it forgets what it set out to do. Rating: low +1 (-4 to +4).
Law favors the tenant. Nobody likes to see people thrown out on the street where they have no place to go. It is generally assumed that the landlord if better off than the tenant, so in many states the law favors the tenant. This does not seem to be a very likely fact on which to base a film thriller. Most of us have heard horror stories about landlord/tenant relations with one side or the other doing monstrous things, but that sort of horror story is rarely made into a movie. It is much easier to make and sell a horror film about, say, a vampire, than it is to make one about rental relations though I somehow suspect there are more bad tenants in the world than there are vampires. In the past real estate horror has generally been mixed with comedy in films, as in the classic MR. BLANDINGS BUILDS HIS DREAM HOUSE and its recent pale shadow, THE MONEY PIT. So PACIFIC HEIGHTS gets points for some originality and even some clever plotting. Unfortunately, both seem to run out about two-thirds of the way into the film. Then the film starts showing us things we've seen before and finally falls into cliche. And contrived cliche at that.
Patty Palmer and Drake Goodman (played by Melanie Griffith and Matthew Modine) are two young people starting out life together buying a house and renting out the first floor as apartments. Think of them as minnows. And as their new tenant they have attractive, persuasive Carter Hayes (played by Michael Keaton). Think of him as a shark. Carter does not just know his legal rights as a tenant; he understands how to use those rights in intelligent and creative ways to grind up and swallow his unsuspecting landlords. And all the while he is doing this grinding, the law is on his side and pulling for him.
Had this been a film about a monster whose powers were all granted him by the law, PACIFIC HEIGHTS could have been a terrific thriller that would have been making a powerful statement. Unfortunately, at some point someone decided that Carter Hayes would be more than a crooked tenant: he would also be a psychopath. It may be the first horror film about real estate law ever, but it is probably the second or third film with a psychotic villain this month. When the psychotic side of Hayes becomes more important than his legal savvy, PACIFIC HEIGHTS just falls apart. The screenplay is Daniel Pyne's first and is inspired by his own experience as a landlord. Presumably he had an axe to grind. Curiously, his screenplay starts faltering only when he stops grinding it. I give PACIFIC HEIGHTS a low +1 on the -4 to +4 scale.
Mark R. Leeper att!mtgzy!leeper<EMAIL_ADDRESS>.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


There's three types of projects you can create using the Kitura app.
Select which type of project you'd like to create by selecting the corresponding tile.
Then you'll be asked to select a destination to save the project.
Once you've chosen your desired destination click the create button.
The project will be created and built for you.
Add logging: Get useful feedback from your server about startup and errors
Add routing: Add REST APIs, such as HTTP GET, to your server


{% extends "base.html" %} {% block title %}Subscribe{% endblock %} {% block body %} {% include "header.html" %}
Thank you for subscribing! You are now a Premium user and have full access to your data that was previously locked up within the GAS (unfairly, we know). Please click here to view your annotation results.
Your subscriber account number is {{ stripe_id }}. Please make a note of this since the GAS service doesn't. Yes, we know we should, but at this stage we have your money and credit card details so we don't care much!


Doctor's Connect
About Us
Search
Scheduled Appointments
Log Out
Sign Up Form
First Name
Last Name
Phone Number
Email address
Password
Error:
Sign Up
Or log in
here


--- layout: blog ---
I'm Guochun Shen, an assistant professor in the Tiantong National Station of Forest Ecosystem, at East China Normal University, Shanghai. Our group focus on how and why species, especially subtropical forest trees, coexist in heterogeneous environments. What are the main ecological, evolutionary processes, and their relative importance in determining current spatial dispersions of species? How can we accurately and robustly detect, estimate effects of abotic habitat, dispersal, individual interaction on community structures from spatial explicitly perspective.
Address: Resources & Environment Science Buiding, East China Normal University, 500 Dongchuan Rd. Shanghai 200241, China
Email: gcshen@des.ecnu.edu.cn


Dogs for Adoption
= Special Needs
Minerva
2 years,Female
Changa
7 years,Female
Sasha
1 years,Female
Bart
6 years,Male
Candy
12 years,Female
Ginger
2 years,Female
Everett
6 months,Male
Olivia
2.5years,female
Doodle
1 year,Male
Alai
2 years,Female
January
2 years,Female
Moe
9 months,Male
Cody
7 years,Male
OC
4 years,Male
Jake
2 years,Male
Holden
3 months,Male


VminusGen
Require Import List.
Import ListNotations.
Require Import Arith.
Require Import String.
Require Import QuickChick.QuickChick.
Import QcDefaultNotation. Open Scope qc_scope.
Require Import Vminus.Atom.
Require Import Vminus.CFG.
Require Import Vminus.ListCFG.
Require Import Vminus.Vminus.
Require Import Vminus.AtomGen.
Import ListCFG.
lbl, uid, addr
Definition show_lbl_func x :=
("lbl "%string ++ show (Atom.nat_of x) ++ "")%string.
Definition show_uid_func x :=
("uid "%string ++ show (Atom.nat_of x) ++ "")%string.
Definition show_addr_func x :=
("addr "%string ++ show (Atom.nat_of x) ++ "")%string.
Instance gen_lbl : Gen lbl :=
{| arbitrary := gen_fresh fresh_store |}.
Instance shrink_lbl : Shrink lbl := {| shrink x := [] |}.
Instance gen_uid : Gen uid :=
{| arbitrary := gen_fresh fresh_store |}.
Instance shrink_uid : Shrink uid := {| shrink x := [] |}.
Instance gen_addr : Gen addr :=
{| arbitrary := gen_fresh fresh_store |}.
Instance shrink_addr : Shrink addr := {| shrink x := [] |}.
Values and commands
Derive Arbitrary for val.
Derive Show for val.
(* Sample (@arbitrary val _). *)
Derive Arbitrary for bop.
Derive Show for bop.
(* Sample (@arbitrary bop _). *)
Derive Arbitrary for tmn.
Derive Show for tmn.
(* Sample (@arbitrary tmn _). *)
Instance gen_phiarg : Gen phiarg.
Proof. unfold phiarg. auto with typeclass_instances. Defined.
Instance shrink_phiarg : Shrink phiarg.
Proof. unfold phiarg. auto with typeclass_instances. Defined.
Instance show_phiarg : Show phiarg.
Proof. unfold phiarg. auto with typeclass_instances. Defined.
Derive Arbitrary for cmd.
Derive Show for cmd.
(* Sample (@arbitrary cmd _). *)
Instance gen_insn : Gen insn.
Proof. unfold insn. auto with typeclass_instances. Defined.
Instance shrink_insn : Shrink insn.
Proof. unfold insn. auto with typeclass_instances. Defined.
Instance show_insn : Show insn :=
{| show instr :=
let '(uid, cmd) := instr in
"(" ++ show_uid_func uid ++ ", " ++ show cmd ++ ")"
|}.
Program counters and CFG
Instance gen_pc : Gen pc.
Proof.
unfold pc. auto with typeclass_instances. Defined.
Instance shrink_pc : Shrink pc.
Proof. unfold pc. auto with typeclass_instances. Defined.
Instance show_pc : Show pc :=
{| show p :=
let '(lbl, offset) := p in
"(blk " ++ (show_lbl_func lbl) ++ ", ofs "
++ show_nat offset ++ ")"
|}.
Instance gen_block : Gen block.
Proof. unfold ListCFG.block. auto with typeclass_instances. Defined.
Instance shrink_block : Shrink block.
Proof. unfold block. auto with typeclass_instances. Defined.
Instance show_block : Show block.
Proof. unfold block. auto with typeclass_instances. Defined.
Instance gen_cfg : Gen ListCFG.t.
Proof. unfold t. auto with typeclass_instances. Defined.
Instance shrink_cfg : Shrink ListCFG.t.
Proof. unfold ListCFG.t. auto with typeclass_instances. Defined.
Instance show_cfg : Show ListCFG.t :=
{| show cfg :=
let '(entry_label, blks) := cfg in
"(entry " ++ show entry_label ++ ", blks: " ++
(List.fold_left
(fun accum blk ⇒
let '(lbl, insns) := blk in
show_lbl_func lbl ++ ": " ++ (show insns))
blks "")
|}.
(* Sample (@arbitrary ListCFG.t _). *)


This is the name displayed in the layers panel. This name should be unique for each layer.
This is the URL used by Leaflet.JS to generate the tile map. See leaflet documentation for further details.
Credit where credit is due, required for many client facing products. Use the attribution to add credit where it is due.
By clicking the plus button you may add new layers to the table. Click the plus icon to the right of a new record to add it to the table. Records can also be edited and deleted with the buttons found to the far right.
This is the name displayed in the layers panel. This name should be unique for each layer.
Type can be 1 of 3 values: "TABLE", "RANGE" and "JSON". The type of data entered affects where the plugin will get the data from.
Choose table if your data is being stored within a table.
Choose named range if your data is being stored within a named range.
Choose range if your data is being stored within a range, in this case data will ask you to specify the range formula.
Choose JSON if you want to add custom data to the map from a JSON string.
The value of this field changes with respect to the type supplied. Refer to the type section.
A projection specified in the projections settings section. Earth and British national grid are defaults added for testing.
By clicking the plus button you may add new layers to the table. Click the plus icon to the right of a new record to add it to the table. Records can also be edited and deleted with the buttons found to the far right.


Welcome to Hell
Discografia
Albuns em Destaque
- Iron Maiden- 1980
- Killers 1981
- The Number of the Beast 1982
- Piece of Mind 1983
- Powerslave 1984
- Somewhere in Time 1986
- Seventh Son of a Seventh Son 1988
- No Prayer for the Dying 1990
- Fear of the Dark 1992
- The X Factor 1995
- Virtual XI 1998
- Brave New World 2000
- Dance of Death 2003
- A Matter of Life and Death 2006
- The Final Frontier 2010
- The Book of Souls 2016


Copyright 2013 Christopher Jenkins
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2017 greenrobot.org
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2008 Google, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2016 Joda.org
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2016 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright 2015 The RxAndroid authors.
LLicensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright (c) 2016-present, RxJava Contributors.
LLicensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


V3 Marker Performance Demo
Use MarkerClusterer?
How many markers?
100
|
300
|
500
|
750
|
1000
Marker count:
0
Time (create):
0
ms
Time (add):
0
ms