PostCSS plugin to parse CSS and add vendor prefixes to CSS rules using values from Can I Use. It is recommended by Google and used in Twitter and Taobao.
Write your CSS rules without vendor prefixes (in fact, forget about them entirely):
css
:fullscreen a {
display: flex
}
Autoprefixer will use the data based on current browser popularity and property support to apply prefixes for you. You can try the interactive demo of Autoprefixer.
css
:-webkit-full-screen a {
display: -webkit-box;
display: flex
}
:-moz-full-screen a {
display: flex
}
:-ms-fullscreen a {
display: -ms-flexbox;
display: flex
}
:fullscreen a {
display: -webkit-box;
display: -ms-flexbox;
display: flex
}
Twitter account for news and releases: @autoprefixer.
Working with Autoprefixer is simple: just forget about vendor prefixes and write normal CSS according to the latest W3C specs. You don’t need a special language (like Sass) or remember where you must use mixins.
Autoprefixer supports selectors (like :fullscreen
and ::selection
),
unit function (calc()
), at‑rules (@supports
and @keyframes
)
and properties.
Because Autoprefixer is a postprocessor for CSS, you can also use it with preprocessors such as Sass, Stylus or LESS.
Just write normal CSS according to the latest W3C specs and Autoprefixer will produce the code for old browsers.
css
a {
display: flex;
}
compiles to:
css
a {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex
}
Autoprefixer has 27 special hacks to fix web browser differences.
Autoprefixer utilizes the most recent data from Can I Use to add only necessary vendor prefixes.
It also removes old, unnecessary prefixes from your CSS
(like border-radius
prefixes, produced by many CSS libraries).
css
a {
-webkit-border-radius: 5px;
border-radius: 5px;
}
compiles to:
css
a {
border-radius: 5px;
}
Autoprefixer uses Browserslist, so you can specify the browsers
you want to target in your project by queries like last 2 versions
or > 5%
.
The best way to provide browsers is browserslist
config
or package.json
with browserslist
key. Put it in your project root.
We recommend to avoid Autoprefixer option and use browserslist
config
or package.json
. In this case browsers will be shared with other tools
like babel-preset-env or Stylelint.
See Browserslist docs for queries, browser names, config format, and default value.
By default, Autoprefixer also removes outdated prefixes.
You can disable this behavior with the remove: false
option. If you have
no legacy code, this option will make Autoprefixer about 10% faster.
Also, you can set the add: false
option. Autoprefixer will only clean outdated
prefixes, but will not add any new prefixes.
Autoprefixer adds new prefixes between any unprefixed properties and already written prefixes in your CSS. If it will break the expected prefixes order, you can clean all prefixes from your CSS and then add the necessary prefixes again:
```js var cleaner = postcss([ autoprefixer({ add: false, browsers: [] }) ]); var prefixer = postcss([ autoprefixer ]);
cleaner.process(css).then(function (cleaned) { return prefixer.process(cleaned.css) }).then(function (result) { console.log(result.css); }); ```
Many other tools contain Autoprefixer. For example, webpack uses Autoprefixer to minify CSS by cleaning unnecessary prefixes.
If you set browsers list to Autoprefixer by browsers
option, only first
Autoprefixer will know your browsers. Autoprefixer inside webpack will use
default browsers list. As result, webpack will remove prefixes, that first
Autoprefixer added.
You need to put your browsers to browserslist
config in project root —
as result all tools (Autoprefixer, cssnano, doiuse, cssnext) will use same
browsers list.
No. Autoprefixer only adds prefixes.
Most new CSS features will require client side JavaScript to handle a new behavior correctly.
Depending on what you consider to be a “polyfill”, you can take a look at some other tools and libraries. If you are just looking for syntax sugar, you might take a look at:
border-radius
?Developers are often surprised by how few prefixes are required today. If Autoprefixer doesn’t add prefixes to your CSS, check if they’re still required on Can I Use.
There is a list with all supported properties, values, and selectors.
@-webkit-keyframes
?Browser teams can remove some prefixes before others. So we try to use all combinations of prefixed/unprefixed values.
-webkit-
only code?Autoprefixer needs unprefixed property to add prefixes. So if you only
wrote -webkit-gradient
without W3C’s gradient
,
Autoprefixer will not add other prefixes.
But PostCSS has a plugins to convert CSS to unprefixed state. Use them before Autoprefixer:
-epub-
prefix?No, Autoprefixer works only with browsers prefixes from Can I Use. But you can use postcss-epub for prefixing ePub3 properties.
system-ui
?system-ui
is technically not a prefix and the transformation is not future-proof. But you can use postcss-font-family-system-ui to transform system-ui
to a practical font-family list.
In Gulp you can use gulp-postcss with autoprefixer
npm package.
```js gulp.task(‘autoprefixer’, function () { var postcss = require(‘gulp-postcss’); var sourcemaps = require(‘gulp-sourcemaps’); var autoprefixer = require(‘autoprefixer’);
return gulp.src('./src/*.css')
.pipe(sourcemaps.init())
.pipe(postcss([ autoprefixer() ]))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./dest')); }); ```
With gulp-postcss
you also can combine Autoprefixer
with other PostCSS plugins.
In webpack you can use postcss-loader with autoprefixer
and other PostCSS plugins.
js
module.exports = {
module: {
loaders: [
{
test: /\.css$/,
loader: "style-loader!css-loader!postcss-loader"
}
]
}
}
And create a postcss.config.js
with:
js
module.exports = {
plugins: [
require('autoprefixer')
]
}
In Grunt you can use grunt-postcss with autoprefixer
npm package.
```js module.exports = function(grunt) { grunt.loadNpmTasks(‘grunt-postcss’);
grunt.initConfig({
postcss: {
options: {
map: true,
processors: [
require('autoprefixer')
]
},
dist: {
src: 'css/*.css'
}
}
});
grunt.registerTask('default', ['postcss:dist']); }; ```
With grunt-postcss
you also can combine Autoprefixer
with other PostCSS plugins.
autoprefixer
npm package and enable it:
environment.enable('autoprefixer')
autoprefixer-rails
and jekyll-assets
to Gemfile
There is postcss-js to use Autoprefixer in React Inline Styles, Free Style, Radium and other CSS-in-JS solutions.
js
let prefixer = postcssJs.sync([ autoprefixer ]);
let style = prefixer({
display: 'flex'
});
You can use the postcss-cli to run Autoprefixer from CLI:
sh
npm install --global postcss-cli autoprefixer
postcss --use autoprefixer *.css -d build/
See postcss -h
for help.
You can use Autoprefixer with PostCSS in your Node.js application or if you want to develop an Autoprefixer plugin for new environment.
```js var autoprefixer = require(‘autoprefixer’); var postcss = require(‘postcss’);
postcss([ autoprefixer ]).process(css).then(function (result) { result.warnings().forEach(function (warn) { console.warn(warn.toString()); }); console.log(result.css); }); ```
There is also standalone build for the browser or as a non-Node.js runtime.
You can use html-autoprefixer to process HTML with inlined CSS.
Autoprefixer should be used in assets build tools. Text editor plugins are not a good solution, because prefixes decrease code readability and you will need to change value in all prefixed properties.
I recommend you to learn how to use build tools like Gulp. They work much better and will open you a whole new world of useful plugins and automatization.
But, if you can’t move to a build tool, you can use text editor plugins:
Autoprefixer uses the PostCSS warning API to warn about really important problems in your CSS:
display: box
instead of display: flex
by latest specification version.You can get warnings from result.warnings()
:
js
result.warnings().forEach(function (warn) {
console.warn(warn.toString());
});
Every Autoprefixer runner should display this warnings.
Autoprefixer was designed to have no interface – it just works. If you need some browser specific hack just write a prefixed property after the unprefixed one.
css
a {
transform: scale(0.5);
-moz-transform: scale(0.6);
}
If some prefixes were generated in a wrong way, please create an issue on GitHub.
Autoprefixer has 4 features, which can be disabled by options:
supports: false
will disable @supports
parameters prefixing.flexbox: false
will disable flexbox properties prefixing.
Or flexbox: "no-2009"
will add prefixes only for final and IE
versions of specification.grid: false
will disable Grid Layout prefixes for IE.remove: false
will disable cleaning outdated prefixes.If you do not need Autoprefixer in some part of your CSS, you can use control comments to disable Autoprefixer.
```css a { transition: 1s; /* it will be prefixed */ }
b { /* autoprefixer: off / transition: 1s; / it will not be prefixed */ } ```
Control comments disable Autoprefixer within the whole rule in which
you place it. In the above example, Autoprefixer will be disabled
in the entire b
rule scope, not only after the comment.
You can also use comments recursively:
css
/* autoprefixer: off */
@supports (transition: all) {
/* autoprefixer: on */
a {
/* autoprefixer: off */
}
}
In Sass/SCSS you can use all the disable options above, add an exclamation mark
in the start of comment: /*! autoprefixer: off */
.
Function autoprefixer(options)
returns new PostCSS plugin.
See PostCSS API for plugin usage documentation.
js
var plugin = autoprefixer({ cascade: false });
There are 8 options:
browsers
(array): list of browsers query (like last 2 versions
),
which are supported in your project. We recommend to use browserslist
config or browserslist
key in package.json
, rather than this option
to share browsers with other tools. See Browserslist docs for available
queries and default value.env
(string): environment for Browserslist.cascade
(boolean): should Autoprefixer use Visual Cascade,
if CSS is uncompressed. Default: true
add
(boolean): should Autoprefixer add prefixes. Default is true
.remove
(boolean): should Autoprefixer [remove outdated] prefixes.
Default is true
.supports
(boolean): should Autoprefixer add prefixes for @supports
parameters. Default is true
.flexbox
(boolean|string): should Autoprefixer add prefixes for flexbox
properties. With "no-2009"
value Autoprefixer will add prefixes only
for final and IE versions of specification. Default is true
.grid
(boolean): should Autoprefixer add IE prefixes for Grid Layout
properties. Default is true
.stats
(object): custom usage statistics for > 10% in my stats
browsers query.Plugin object has info()
method for debugging purpose.
You can use PostCSS processor to process several CSS files to increase performance.
You can check which browsers are selected and which properties will be prefixed:
js
var info = autoprefixer().info();
console.log(info);


# Components#
# Components - Third Party Software#
Component: ComponentName Usage: Brief description of how library component is used in application. Version: 0.0.x
Modifications: True / False
JS Customized: True / False Method: Original / Extended / Both Change notes: Describe modifications
CSS Customized: True / False Method: Original / Extended / Both Change notes: Describe modifications
Component: ComponentName Usage: Brief description of how library component is used in application. Version: 0.0.x
Modifications: True / False
JS Customized: True / False Method: Original / Extended / Both Change notes: Describe modifications
CSS Customized: True / False Method: Original / Extended / Both Change notes: Describe modifications


Just So Stories
by Rudyard Kipling
"How the Alphabet Was Made"
Additional Information
- Year Published: 0
- Language: English
- Country of Origin: England
- Source: Kipling, Rudyard. Just So Stories.
-
Readability:
- Flesch–Kincaid Level: 3.3
- Word Count: 3,727
- Genre: Fantasy
- Keywords: communication, discovery
- ✎ Cite This
Downloads
THE week after Taffimai Metallumai (we will still call her Taffy, Best Beloved) made that little mistake about her Daddy’s spear and the Stranger-man and the picture-letter and all, she went carp-fishing again with her Daddy. Her Mummy wanted her to stay at home and help hang up hides to dry on the big drying-poles outside their Neolithic Cave, but Taffy slipped away down to her Daddy quite early, and they fished. Presently she began to giggle, and her Daddy said, ‘Don’t be silly, child.’
‘But wasn’t it inciting!’ said Taffy. ‘Don’t you remember how the Head Chief puffed out his cheeks, and how funny the nice Stranger-man looked with the mud in his hair?’
‘Well do I,’ said Tegumai. ‘I had to pay two deerskins—soft ones with fringes—to the Stranger-man for the things we did to him.’
‘We didn’t do anything,’ said Taffy. ‘It was Mummy and the other Neolithic ladies—and the mud.’
‘We won’t talk about that,’ said her Daddy, ‘Let’s have lunch.’
Taffy took a marrow-bone and sat mousy-quiet for ten whole minutes, while her Daddy scratched on pieces of birch-bark with a shark’s tooth. Then she said, ‘Daddy, I’ve thinked of a secret surprise. You make a noise—any sort of noise.’
‘Ah!’ said Tegumai. ‘Will that do to begin with?’
‘Yes,’ said Taffy. ‘You look just like a carp-fish with its mouth open. Say it again, please.’
‘Ah! ah! ah!’ said her Daddy. ‘Don’t be rude, my daughter.’
‘I’m not meaning rude, really and truly,’ said Taffy. ‘It’s part of my secret-surprise-think.
‘Don’t you see?’ said Taffy, scratching away on the bark. ‘That will be our little secret s’prise. When I draw a carp-fish with his mouth open in the smoke at the back of our Cave—if Mummy doesn’t mind—it will remind you of that ah-noise. Then we can play that it was me jumped out of the dark and s’prised you with that noise—same as I did in the beaver-swamp last winter.’
‘Really?’ said her Daddy, in the voice that grown-ups use when they are truly attending. ‘Go on, Taffy.’
‘Oh bother!’ she said. ‘I can’t draw all of a carp-fish, but I can draw something that means a carp-fish’s mouth. Don’t you know how they stand on their heads rooting in the mud? Well, here’s a pretence carp-fish (we can play that the rest of him is drawn). Here’s just his mouth, and that means ah.’  Then we’ll know he’s a carp-fish, ‘cause the perches and trouts haven’t got feelers. Look here, Taffy.’ And he drew this. (2.)
‘Now I’ll copy it.’ said Taffy. ‘Will you understand this when you see it?’
‘Perfectly,’ said her Daddy.
And she drew this. (3.) ‘And I’ll be quite as s’prised when I see it anywhere, as if you had jumped out from behind a tree and said ‘”Ah!”’
‘Now, make another noise,’ said Taffy, very proud.
‘Yah!’ said her Daddy, very loud.
‘H’m,’ said Taffy. ‘That’s a mixy noise. The end part is ah-carp-fish-mouth; but what can we do about the front part? Yer- yer-yer and ah! Ya!’
‘It’s very like the carp-fish-mouth noise. Let’s draw another bit of the carp-fish and join ‘em,’ said her Daddy. He was quite incited too.
‘No. If they’re joined, I’ll forget. Draw it separate. Draw his tail. If he’s standing on his head the tail will come first. ‘Sides, I think I can draw tails easiest,’ said Taffy.
‘A good notion,’ said Tegumai. “Here’s a carp-fish tail for the yer-noise.’ And he drew this. (4.)
‘I’ll try now,’ said Taffy.  Will it do if I just draw the split part of the tail, and the sticky-down line for where it joins?’ And she drew this. (5.)
Her Daddy nodded, and his eyes were shiny bright with ‘citement.
‘That’s beautiful,’ she said. ‘Now make another noise, Daddy.’
‘Oh!’ said her Daddy, very loud.
‘That’s quite easy,’ said Taffy.  So an egg or a stone will do for that.’
‘You can’t always find eggs or stones. We’ll have to scratch a round something like one.’ And he drew this. (6.)
‘My gracious!’ said Taffy, ‘what a lot of noise-pictures we’ve made,—carp-mouth, carp-tail, and egg! Now, make another noise, Daddy.’
‘Ssh!’ said her Daddy, and frowned to himself, but Taffy was too incited to notice.
‘That’s quite easy,’ she said, scratching on the bark.
‘Eh, what?’ said her Daddy. ‘I meant I was thinking, and didn’t want to be disturbed.’
‘It’s a noise just the same. It’s the noise a snake makes, Daddy, when it is thinking and doesn’t want to be disturbed. Let’s make the ssh-noise a snake. Will this do?’ And she drew this. (7.)
‘There,’ she said. ‘That’s another s’prise-secret. When you draw a hissy-snake by the door of your little back-cave where you mend the spears, I’ll know you’re thinking hard; and I’ll come in most mousy-quiet. And if you draw it on a tree by the river when you are fishing, I’ll know you want me to walk most most mousy-quiet, so as not to shake the banks.’
‘Perfectly true,’ said Tegumai. And there’s more in this game than you think. Taffy, dear, I’ve a notion that your Daddy’s daughter has hit upon the finest thing that there ever was since the Tribe of Tegumai took to using shark’s teeth instead of flints for their spear-heads.
‘I’ll show,’ said her Daddy. ‘What’s water in the Tegumai language?’
‘Ya, of course, and it means river too—like Wagai-ya—the Wagai river.’
‘What is bad water that gives you fever if you drink it—black water—swamp-water?’
‘Yo, of course.’
‘Now look,’ said her Daddy. ‘S’pose you saw this scratched by the side of a pool in the beaver-swamp?’ And he drew this. (8.)
‘Carp-tail and round egg. Two noises mixed! Yo, bad water,’ said Taffy. ‘’Course I wouldn’t drink that water because I’d know you said it was bad.’
‘But I needn’t be near the water at all. I might be miles away, hunting, and still—’
‘And still it would be just the same as if you stood there and said, “G’way, Taffy, or you’ll get fever.” All that in a carp-fish-tail and a round egg! O Daddy, we must tell Mummy, quick!’ and Taffy danced all round him.
‘Not yet,’ said Tegumai; ‘not till we’ve gone a little further. Let’s see. Yo is bad water, but So is food cooked on the fire, isn’t it?’ And he drew this. (9.)
‘Yes. Snake and egg,’ said Taffy ‘So that means dinner’s ready. If you saw that scratched on a tree you’d know it was time to come to the Cave. So’d I.’
‘My Winkie!’ said Tegumai. ‘That’s true too. But wait a minute. I see a difficulty. SO means “come and have dinner,” but sho means the drying-poles where we hang our hides.’
‘Horrid old drying-poles!’ said Taffy. ‘I hate helping to hang heavy, hot, hairy hides on them. If you drew the snake and egg, and I thought it meant dinner, and I came in from the wood and found that it meant I was to help Mummy hang the two hides on the drying-poles, what would I do?’
‘You’d be cross. So’d Mummy. We must make a new picture for sho. We must draw a spotty snake that hisses sh-sh, and we’ll play that the plain snake only hisses ssss.’
‘I couldn’t be sure how to put in the spots,’ said Taffy. ‘And p’raps if you were in a hurry you might leave them out, and I’d think it was so when it was sho, and then Mummy would catch me just the same. No! I think we’d better draw a picture of the horrid high drying-poles their very selves, and make quite sure. I’ll put them in just after the hissy-snake. Look!’ And she drew this. (10.)
‘P’raps that’s safest. It’s very like our drying-poles, anyhow,’ said her Daddy, laughing. ‘Now I’ll make a new noise with a snake and drying-pole sound in it. I’ll say shi. That’s Tegumai for spear, Taffy.’ And he laughed.
‘Don’t make fun of me,’ said Taffy, as she thought of her picture-letter and the mud in the Stranger-man’s hair. ‘You draw it, Daddy.’
‘We won’t have beavers or hills this time, eh?’ said her Daddy, ‘I’ll just draw a straight line for my spear.’ And he drew this. (11.)
‘Even Mummy couldn’t mistake that for me being killed.’
‘Please don’t, Daddy. It makes me uncomfy. Do some more noises. We’re getting on beautifully.’
‘Er-hm!’ said Tegumai, looking up. ‘We’ll say shu. That means sky.’
Taffy drew the snake and the drying-pole. Then she stopped. ‘We must make a new picture for that end sound, mustn’t we?’
‘Shu-shu-u-u-u!’ said her Daddy. ‘Why, it’s just like the round-egg-sound made thin.’
‘Then s’pose we draw a thin round egg, and pretend it’s a frog that hasn’t eaten anything for years.’
‘N-no,’ said her Daddy. ‘If we drew that in a hurry we might mistake it for the round egg itself. Shu-shu-shu! ‘I tell you what we’ll do. We’ll open a little hole at the end of the round egg to show how the O-noise runs out all thin, ooo-oo-oo. Like this.’ And he drew this. (12.)
‘Oh, that’s lovely! Much better than a thin frog. Go on,’ said Taffy, using her shark’s tooth. Her Daddy went on drawing, and his hand shook with incitement. He went on till he had drawn this. (13.)
‘Don’t look up, Taffy,’ he said. ‘Try if you can make out what that means in the Tegumai language. If you can, we’ve found the Secret.’
‘Snake—pole—broken—egg—carp—tail and carp-mouth,’ said Taffy. ‘Shu-ya. Sky-water (rain).’ Just then a drop fell on her hand, for the day had clouded over. ‘Why, Daddy, it’s raining. Was that what you meant to tell me?’
‘Of course,’ said her Daddy. ‘And I told it you without saying a word, didn’t I?’
‘Well, I think I would have known it in a minute, but that raindrop made me quite sure. I’ll always remember now. Shu-ya means rain, or “it is going to rain.” Why, Daddy!’ She got up and danced round him. ‘S’pose you went out before I was awake, and drawed shu-ya in the smoke on the wall, I’d know it was going to rain and I’d take my beaver-skin hood. Wouldn’t Mummy be surprised?’
Tegumai got up and danced. (Daddies didn’t mind doing those things in those days.) ‘More than that! More than that!’ he said. ‘S’pose I wanted to tell you it wasn’t going to rain much and you must come down to the river, what would we draw? Say the words in Tegumai-talk first.’
‘Shu-ya-las, ya maru. (Sky-water ending. River come to.) what a lot of new sounds! I don’t see how we can draw them.’
‘But I do—but I do!’ said Tegumai. ‘Just attend a minute, Taffy, and we won’t do any more to-day. We’ve got shu-ya all right, haven’t we? But this las is a teaser. La-la-la’ and he waved his shark-tooth.
‘There’s the hissy-snake at the end and the carp-mouth before the snake—as-as-as. We only want la-la,’ said Taffy.
‘I know it, but we have to make la-la. And we’re the first people in all the world who’ve ever tried to do it, Taffimai!’
‘Well,’ said Taffy, yawning, for she was rather tired. ‘Las means breaking or finishing as well as ending, doesn’t it?’
‘So it does,’ said Tegumai. ‘To-las means that there’s no water in the tank for Mummy to cook with—just when I’m going hunting, too.’
‘And shi-las means that your spear is broken. If I’d only thought of that instead of drawing silly beaver pictures for the Stranger!’
‘La! La! La!’ said Tegumai, waiving his stick and frowning. ‘Oh bother!’
‘I could have drawn shi quite easily,’ Taffy went on. ‘Then I’d have drawn your spear all broken—this way!’ And she drew. (14.)
‘The very thing,’ said Tegumai. ‘That’s la all over. It isn’t like any of the other marks either.’ And he drew this. (15.)
‘Now for ya. Oh, we’ve done that before. Now for maru. Mum-mum-mum. Mum shuts one’s mouth up, doesn’t it?  And he drew. (16.)
‘Then the carp-mouth open. That makes Ma-ma-ma! But what about this rrrrr-thing, Taffy?’
‘It sounds all rough and edgy, like your shark-tooth saw when you’re cutting out a plank for the canoe,’ said Taffy.
‘You mean all sharp at the edges, like this?’ said Tegumai. And he drew. (17.)
‘’Xactly,’ said Taffy. ‘But we don’t want all those teeth: only put two.’
‘I’ll only put in one,’ said Tegumai. ‘If this game of ours is going to be what I think it will, the easier we make our sound- pictures the better for everybody.’ And he drew. (18.)
‘Now, we’ve got it,’ said Tegumai, standing on one leg. ‘I’ll draw ‘em all in a string like fish.’
‘Hadn’t we better put a little bit of stick or something between each word, so’s they won’t rub up against each other and jostle, same as if they were carps?’
‘Oh, I’ll leave a space for that,’ said her Daddy. And very incitedly he drew them all without stopping, on a big new bit of birch-bark. (19.)
‘Shu-ya-las ya-maru,’ said Taffy, reading it out sound by sound.
‘That’s enough for to-day,’ said Tegumai. ‘Besides, you’re getting tired, Taffy. Never mind, dear.
So they went home, and all that evening Tegumai sat on one side of the fire and Taffy on the other, drawing ya’s and yo’s and shu’s and shi’s in the smoke on the wall and giggling together till her Mummy said, ‘Really, Tegumai, you’re worse than my Taffy.’
‘Please don’t mind,’ said Taffy. ‘It’s only our secret-s’prise, Mummy dear, and we’ll tell you all about it the very minute it’s done; but please don’t ask me what it is now, or else I’ll have to tell.’
So her Mummy most carefully didn’t; and bright and early next morning Tegumai went down to the river to think about new sound pictures, and when Taffy got up she saw Ya-las (water is ending or running out) chalked on the side of the big stone water-tank, outside the Cave.
‘Um,’ said Taffy. ‘These picture-sounds are rather a bother! Daddy’s just as good as come here himself and told me to get more water for Mummy to cook with.’ She went to the spring at the back of the house and filled the tank from a bark bucket, and then she ran down to the river and pulled her Daddy’s left ear—the one that belonged to her to pull when she was good.
‘Now come along and we’ll draw all the left-over sound-pictures,’ said her Daddy, and they had a most inciting day of it, and a beautiful lunch in the middle, and two games of romps. When they came to T, Taffy said that as her name, and her Daddy’s, and her Mummy’s all began with that sound, they should draw a sort of family group of themselves holding hands. That was all very well to draw once or twice; but when it came to drawing it six or seven times, Taffy and Tegumai drew it scratchier and scratchier, till at last the T-sound was only a thin long Tegumai with his arms out to hold Taffy and Teshumai. You can see from these three pictures partly how it happened. (20, 21, 22.)
Many of the other pictures were much too beautiful to begin with, especially before lunch, but as they were drawn over and over again on birch-bark, they became plainer and easier, till at last even Tegumai said he could find no fault with them. They turned the hissy-snake the other way round for the Z-sound, to show it was hissing backwards in a soft and gentle way (23); and they just made a twiddle for E, because it came into the pictures so often (24);
and they drew pictures of the sacred Beaver of the Tegumais for the B-sound (25, 26, 27, 28); and because it was a nasty, nosy noise, they just drew noses for the N-sound, till they were tired (29); and they drew a picture of the big lake-pike’s mouth for the greedy Ga-sound (30);
and they drew the pike’s mouth again with a spear behind it for the scratchy, hurty Ka-sound (31); and they drew pictures of a little bit of the winding Wagai river for the nice windy-windy Wa-sound (32, 33); and so on and so forth and so following till they had done and drawn all the sound-pictures that they wanted, and there was the Alphabet, all complete.
And after thousands and thousands and thousands of years, and after Hieroglyphics and Demotics, and Nilotics, and Cryptics, and Cufics, and Runics, and Dorics, and Ionics, and all sorts of other ricks and tricks (because the Woons, and the Neguses, and the Akhoonds, and the Repositories of Tradition would never leave a good thing alone when they saw it), the fine old easy, understandable Alphabet—A, B, C, D, E, and the rest of ‘em—got back into its proper shape again for all Best Beloveds to learn when they are old enough.
But I remember Tegumai Bopsulai, and Taffimai Metallumai and Teshumai Tewindrow, her dear Mummy, and all the days gone by. And it was so—just so—a little time ago—on the banks of the big Wagai!


Counter Increment Test
This is a test Section
This is a test subsection
This is a test subsection
This is a test subsection
This is another test Section
This is a test subsection
This is a test subsection
This is a test subsection


The aim of this website is to allow the scientific community to discuss and decide upon the best practices for the validation of satellite soil moisture data using long-term in situ soil moisture station data as e.g. available from the
International Soil Moisture Network. The validation methods have been tested using global surface soil moisture data derived from the Advanced Scatterometer (ASCAT) using the change detection method developed by
TU Wien, but are intended to be applicable to other microwave sensors such as SMOS, SMAP, AMSR-2, Windsat, Sentinel-1 etc. as well.
If you are interested in contributing to this scientific effort, please register here.
The website has been developed within the framework of the ESA projects CEOS Cal/Val Portal (ESRIN/RFQ/3-13669/12/I-BG) and ISMN<PHONE_NUMBER>/10/NL/FF/fk). Furthermore, the support of the following projects is acknowledged:
EUMETSAT H-SAF,
ESA Climate Change Initiative,
GMES/Copernicus Global Land Service.


“I’m hot and damn broke; come chop me and give me money” – Slay queen cries out
by Adu SarpeahSomething is just wrong with this social media generation perhaps majority are suffering from schizophrenia as most of them appear to know no shame taking into consideration their actions on social media.
Now, your favourite entertainment portal, ghbase.com has sighted a viral footage involving one young Ghanaian slay queen publicly calling on guys to come and give her money in an exchange for intercourse.
The anonymous young lady can be heard in the footage saying “Boys, show us something so we know what’s going on; daybreak and we have to know what’s up. Have you guys seen how I’m hard up? Yes, I’m really hot so you guys should come and ‘chop’ so that I can get some money to check my what’s up”.


openSUSE Leap 15.0 - General installation procedure
Introduction
This guide shows how to install openSUSE in UEFI mode. It will be assumed that a bootable USB installer with the "Network Image" is used for the installation. When some of the instructions here do not work, check the openSUSE documentation.
Pre-installation
Partition scheme
The following partition scheme will be used for installing openSUSE in UEFI mode:
| Mount point | Type | Comments |
|---|---|---|
/boot/EFI | EFI partition | |
/ | ext4 | root partition |
/home | ext4 | home partition |
swap | swap | in a non solid-state drive |
Installation
General installation procedure
Power on the computer and boot from the USB installer.
Select "Installation".
Set language and keyboard layout.
When selecting the user interface, first update the online repositories by clicking "Configure Online Repositories" and selecting
- "Main Repository (OSS)",
- "Main Update Repository",
- "Main Repository (Non-OSS)" and
- "Main Update Repository (Non-OSS)."
Then select any user interface. The packages to install will be selected later before starting the actual instalaltion.
Partition the disks according to the partition scheme above.
Set clock and time zone.
Skip user creation, set only the password for root.
In the "Installation Settings" screen, disable firewall and SSH. Then click "Software" to specify the list of packages to install.
Confirm and start the installation.
When the installation finishes, the computer restarts and should boot openSUSE. If that is not the case, the instructions in [1] or [2] might be helpful to boot into the new system.
Install required packages
$ zypper install --no-recommends iputils timezone vim
Keyboard layout
$ localectl set-keymap <map>
where <map>
is one of the available keyboard mappings from
$ localectl list-keymaps
Time zone
$ timedatectl set-timezone <timezone>
where <timezone>
is one of the available timezones from
$ timedatectl list-timezones
Locale
Set the LANG
variable
$ localectl set-locale LANG=<localisation>
Network configuration
Open /etc/hostname
and replace the default hostname with the desired hostname
<hostname>
/etc/hostname
<hostname>
Open /etc/hosts
and the following line
/etc/hosts
<IP_ADDRESS> <hostname>.localdomain <hostname>
in a new line after <IP_ADDRESS> localhost
.
Finally, verify that the new configuration works
$ ping <hostname>


Contget1653.github.io
Faller 222175Two Warning Crosses With Flashing Lights Anleitung.
Faller 222175Two Warning Crosses With Flashing Lights Anleitung and Aeg SDS51200S0 Handbücher.


Host Tool
Reset all active replacements
Delete all custom replacements
Factory Reset (Delete all active replacements and custom replacements)
Report an issue on GitHub


This week we learned about electronics and how to solder... (it's gonna get textual :P)
First, I learned how some of the common conponent does:
Capacitor is used to hold and store energy. Transistor act as a switch that can transfer energy.
Resistor slow down the the electric flow by applying resistance. LED is a light that transfer chemical energy into heat and light energy (emits light)
Diode control the direction of the flow of electricity. Potentiometer is used to measure the amount electrical current to flowing through it.
Breadboard is a board for making an experimental model of an electric circuit (connected through different points).
Multimeter is used to measure electric current or voltage or resistance of a circuit. Switch is used to connect or cut a circuit.
The difference between voltage, current and resistance is:
Voltage is the amount of electrons flowing through, current is the space (width) where the electrons are flowing through (speed of the flow), resistance is the amount of external force that slows down the flow.
The difference between AC and DC is:
DC is direct current, where electric charge (current) only flows in one direction. While AC is alternating current, where it changes direction periodically.
Then we started some practice on using them...
Next, we have soldering coming. How it works is we melt an metal stick and drop it on the iron dot on the device. We are tasked to solder an electronic clock.
It started off pretty hard, the metal kept melting but nothing is sticked on the metal dots.
After a few tries, I figured out the easy way of doing it (somethings like touching one side with heat stick and the other with metal... so hard to explain)
Also, I know that the metal soldered on there must be separated from other metal dots, or the circuit will become parallel and won't work.
Finally, I finished my clock. It is well functioning and I think it's pretty good for first time soldering.


--- layout: post title: 'Angular Connect 2016: Go Beast Mode with Realtime Reactive Interfaces in Angular 2 and Firebase' date: 2016-10-02 03:42:32.000000000 -07:00 type: post published: true status: publish categories: - Angular 2 - Firebase - Programming tags: [] meta: _wpcom_is_markdown: '1' _edit_last: '1' _oembed_d175c7e1d782b4369c75fb1cad238750: '{{unknown}}' _yoast_wpseo_primary_category: '29' _yoast_wpseo_content_score: '60' _nina_cross_promo: a:1:{s:8:"template";s:17:"custom_1399328552";} _thumbnail_id: '1306' author: login: ohmadmin email<EMAIL_ADDRESS>display_name: Lukas Ruebbelke first_name: Lukas last_name: Ruebbelke ---
Here are the presentation slides and code samples from my talk at Angular Connect 2016.
Code samples are below and feedback is welcome. Some of the examples, especially the game is demo quality only and I quite possibly did some very silly things in there.
As promised in my talk, here is the free RxJS course. Enjoy!


Events and Sockets
Listen for Events
To listen for and react to events in bcoin, a listener must be added in the runtime script.
If you are running a full node (for example) you might already be familiar with the bcoin
full node launch script, which
instantiates a FullNode
object, adds a wallet, and begins the connection and synchronization process.
The script ends with an async
function that actually starts these processes, and this is
a good place to add event listeners. Using the table below you can discover which object needs
to be listened on
for each event type. Notice that because the wallet is added as a plugin,
its object hierarchy path is a little... awkward :-)
// Based on https://github.com/bcoin-org/bcoin/blob/master/bin/node
(async () => {
await node.ensure();
await node.open();
await node.connect();
node.startSync();
// add event listeners after everything is open, connected, and started
// NODE
node.on('tx', (details) => {
console.log(' -- node tx -- \n', details)
});
node.on('block', (details) => {
console.log(' -- node block -- \n', details)
});
// MEMPOOL
node.mempool.on('confirmed', (details) => {
console.log(' -- mempool confirmed -- \n', details)
});
// WALLET
node.plugins.walletdb.wdb.on('balance', (details) => {
console.log(' -- wallet balance -- \n', details)
});
node.plugins.walletdb.wdb.on('confirmed', (details) => {
console.log(' -- wallet confirmed -- \n', details)
});
node.plugins.walletdb.wdb.on('address', (details) => {
console.log(' -- wallet address -- \n', details)
});
})().catch((err) => {
console.error(err.stack);
process.exit(1);
});
Events Directory
This list is comprehensive for all Bitcoin transaction, wallet, and blockchain activity. Events regarding errors, socket connections and peer connections have been omitted for clarity. Notice that certain methods emit the same events but with different return objects, and not all re-emitters return everything they receive.
| Event | Returns | Origin | Re-Emitters |
|---|---|---|---|
tip |
ChainEntry | Chain: open() , disconnect() , reconnect() , setBestChain() , reset() |
|
connect |
ChainEntry, Block, CoinView | Chain: setBestChain() , reconnect() |
chain→FullNode (returns ChainEntry, Block only) chain→SPVNode (returns ChainEntry, Block only) SPVNode, FullNode→NodeClient (emits as block connect , returns ChainEntry, Block.txs only) |
disconnect |
ChainEntry, Headers, CoinView | Chain: reorganizeSPV() |
chain→FullNode (returns ChainEntry, Headers only) chain→SPVNode (returns ChainEntry, Headers only) SPVNode, FullNode→NodeClient (emits as block disconnect , returns ChainEntry only) |
disconnect |
ChainEntry, Block, CoinView | Chain: disconnect() |
chain→FullNode (returns ChainEntry, Block only) chain→SPVNode (returns ChainEntry, Block only) SPVNode, FullNode→NodeClient (emits as block disconnect , returns ChainEntry only) |
reconnect |
ChainEntry, Block | Chain: reconnect() |
|
reorganize |
tip (ChainEntry), competitor (ChainEntry) | Chain: reorganize() , reorganizeSPV() |
chain→FullNode chain→SPVNode |
block |
Block, ChainEntry | Chain: setBestChain() CPUMiner: _start() |
chain→Pool chain→FullNode (returns Block only) chain→SPVNode (returns Block only) |
competitor |
Block, ChainEntry | Chain: saveAlternate() |
|
bad orphan |
Error, ID | Chain: handleOrphans() Mempool: handleOrphans() |
|
resolved |
Block, ChainEntry | Chain: handleOrphans() |
|
checkpoint |
Hash, Height | Chain: verifyCheckpoint() |
|
orphan |
Block | Chain: storeOrphan() |
|
full |
Chain: maybeSync() |
chain→Pool | |
confirmed |
TX, ChainEntry | Mempool: _addBlock() |
|
confirmed |
TX, Details | TXDB: confirm() |
txdb→WalletDB (also returns Wallet) txdb→Wallet |
unconfirmed |
TX, Block | Mempool: _removeBlock() |
|
unconfirmed |
TX, Details | TXDB: disconnect() |
txdb→WalletDB (also returns Wallet) txdb→Wallet |
conflict |
TX | Mempool: _removeBlock() |
|
conflict |
TX, Details | TXDB: disconnect() |
txdb→WalletDB (also returns Wallet) txdb→Wallet |
tx |
TX, CoinView | Mempool: addEntry() |
mempool→Pool (returns TX only) mempool→pool→SPVNode (returns TX only) mempool→FullNode (returns TX only) SPVNode, FullNode→NodeClient (returns TX only) |
tx |
TX | Pool: _handleTX() (only if there is no mempool, i.e. SPV) |
pool→SPVNode |
tx |
TX, Details | TXDB: insert() |
txdb→WalletDB (also returns Wallet) txdb→Wallet |
double spend |
MempoolEntry | Mempool: removeDoubleSpends() |
|
balance |
Balance | TXDB: insert() , confirm() , disconnect() , erase() |
txdb→WalletDB (also returns Wallet) txdb→Wallet |
address |
[WalletKey] | Wallet: _add() , |
wallet→WalletDB (returns parent Wallet, [WalletKey]) |
Socket Events
Websocket connections in bcoin are handled by two servers, one for Node
and one for Wallet
.
Those servers each have child objects such as Chain
, Mempool
, Pool
, and WalletDB
, and
relay events from them out the socket. To receive an event, the socket client must watch a
channel (such as chain
, mempool
, or auth
) or join a wallet
(which would be user-defined like primary
, hot-wallet
, or multisig1
). All wallets can be
joined at once by joining '*'
.
Listen for Socket Events with bsock
To make a socket connection to bcoin, you need to run a websocket client.
Luckily the bcoin developers have developed bsock,
a minimal websocket-only implementation of the socket.io protocol. By default, bsock listens on
localhost
, and you only need to pass it a port number to connect to one of the bcoin servers.
The example below illustrates how to establish the socket connection, authenticate with your
user-defined API key and then send and receive events!
See the tables below for a complete list of calls and events available in bcoin.
// bsock-example.js
const bsock = require('bsock');
const {Network, ChainEntry} = require('bcoin');
const network = Network.get('regtest');
const apiKey = 'api-key';
nodeSocket = bsock.connect(network.rpcPort);
walletSocket = bsock.connect(network.walletPort);
nodeSocket.on('connect', async (e) => {
try {
console.log('Node - Connect event:\n', e);
// `auth` must be called before any other actions
console.log('Node - Attempting auth:\n', await nodeSocket.call('auth', apiKey));
// `watch chain` subscirbes us to chain events like `block`
console.log('Node - Attempting watch chain:\n', await nodeSocket.call('watch chain'));
// Some calls simply request information from the server like an http request
console.log('Node - Attempting get tip:');
const tip = await nodeSocket.call('get tip');
console.log(ChainEntry.fromRaw(tip));
} catch (e) {
console.log('Node - Connection Error:\n', e);
}
});
// listen for new blocks
nodeSocket.bind('chain connect', (raw, txs) => {
console.log('Node - Chain Connect Event:\n', ChainEntry.fromRaw(raw));
});
walletSocket.on('connect', async (e) => {
try {
console.log('Wallet - Connect event:\n', e);
// `auth` is required before proceeding
console.log('Wallet - Attempting auth:\n', await walletSocket.call('auth', apiKey));
// here we join all wallets, but we could also just join `primary` or any other wallet
console.log('Wallet - Attempting join *:\n', await walletSocket.call('join', '*'));
} catch (e) {
console.log('Wallet - Connection Error:\n', e);
}
});
// listen for new wallet transactions
walletSocket.bind('tx', (wallet, tx) => {
console.log('Wallet - TX Event -- wallet:\n', wallet);
console.log('Wallet - TX Event -- tx:\n', tx);
});
// listen for new address events
// (only fired when current account address receives a transaction)
walletSocket.bind('address', (wallet, json) => {
console.log('Wallet - Address Event -- wallet:\n', wallet);
console.log('Wallet - Address Event -- json:\n', json);
});
To see this script in action, first start bcoin however you usually do:
bcoin --daemon --network=regtest
Run the script (this is where the event output will be printed):
node bsock-example.js
Then, in a separate terminal window, run some commands to trigger the events!
bcoin-cli rpc generatetoaddress 1 RJ14p2tpf5ANiFJBpKrTSPTgFnzScsDAhN
Sockets made easy: bclient
bsock
is a great low-level library for dealing with sockets, but we also have
bclient which simplifies both socket and regular http
connections. A simple one-line command in the terminal can listen to all wallet events and
print all the returned data:
bwallet-cli listen
bclient
can also be used in a script to listen for events. If you're already familiar with
the bclient API this will look very familiar. Here's part of the
script above re-written using bclient
instead of bsock
:
const {NodeClient} = require('bclient');
const {Network, ChainEntry} = require('bcoin');
const network = Network.get('regtest');
const clientOptions = {
network: network.type,
port: network.rpcPort,
apiKey: 'api-key'
}
const client = new NodeClient(clientOptions);
(async () => {
// bclient handles the connection, the auth, and the channel subscriptions
await client.open();
// use socket connection to request data
const tip = await client.getTip();
console.log(tip);
})();
// listen for new blocks
client.bind('chain connect', (raw) => {
console.log('Node - Chain Connect Event:\n', ChainEntry.fromRaw(raw));
});
Socket Events Directory
Wallet
All wallet events are emitted by a WalletDB
object, which may have been triggered by its parent
TXDB
or Wallet
. The socket emits the event along with the wallet ID, and the same "Returns" as listed above.
| Event | Returns |
|---|---|
tx |
WalletID, TX Details |
confirmed |
WalletID, TX Details |
unconfirmed |
WalletID, TX Details |
conflict |
WalletID, TX Details |
balance |
WalletID, Balance |
address |
WalletID, [WalletKey] |
Node
| Event | Returns | Channel | Origin | Original Event |
|---|---|---|---|---|
chain connect |
ChainEntry.toRaw() | chain |
Chain | connect |
block connect |
ChainEntry.toRaw(), Block.txs | chain |
Chain | connect |
chain disconnect |
ChainEntry.toRaw() | chain |
Chain | disconnect |
block disconnect |
ChainEntry.toRaw() | chain |
Chain | disconnect |
tx |
TX.toRaw() | mempool |
Pool | tx |
Server Hooks
Certain events can also be sent back to the server from the client to request new data or trigger a server action. The client action is a "call" and the server waits with a "hook".
Wallet
| Event | Args | Returns |
|---|---|---|
auth |
1. api key | null |
join |
1. wallet id 2. wallet token |
null |
leave |
1. wallet id | null |
Node
| Event | Args | Returns |
|---|---|---|
auth |
1. api key | null |
watch chain |
(none) | null |
unwatch chain |
(none) | null |
watch mempool |
(none) | null |
unwatch mempool |
(none) | null |
set filter |
1. Bloom filter (Buffer) | null |
get tip |
(none) | ChainEntry.toRaw() |
get entry |
1. hash | ChainEntry.toRaw() |
get hashes |
1. start (int) 2. end (int) |
[hashes] |
add filter |
1. filter ([Buffer]) | null |
reset filter |
(none) | null |
estimate fee |
1. blocks (int) | fee rate (float) |
send |
1. tx (Buffer) | null |
rescan |
1. hash | null |


Primary features finished, app published to Azure!
I've been working steadily adding features to my app. I added filtering by week, interactive search, enabled ssl and added Google & Microsoft Sign in, added email log reports, and sharable links. It was a lot of work, and I did run into some problems, but nothing seemed interesting enough to write about. After all that work, and after a short struggle with Azure itself, my app is now live at https://joblogger.azurewebsites.net.
JobLogger is an application for maintaining job search logs per the Washington
State requirements for receiving unemployment benefits. The logs are not
submitted with benefits claims, but they are subject to audits and must be
provided upon request up to a year after benefits are received. My application
maintains logs in a database, and can share logs either by email or as a hyperlink.
I decided to load all log data upfront in the client, and to skip pagination and demand loading for now. Having all the data in the client made filtering and searching really easy thanks to Moment and Knockout. I would still like to use local storage, but the current setup works for now.
Enabling ssl was pretty trivial, and adding Google sign in was really easy. Adding Microsoft sign in was also easy... eventually. The key is that their sign in service is only accessible on one somewhat hidden page: https://apps.dev.microsoft.com. Once there you can get an app id and secret just like from Google. I also tried adding LinkedIn sign in, but there is no official library. I know just enough about OAuth2 to know I don't want to implement my own solution.
Adding email reporting was actually a little interesting. I started by following this tutorial on enabling email account verification. About half-way down the page though is a little note stating "SendGrid does not yet support .NET Core". After a little research on the SendGrid site it seems they have a new API, and a C# library on Github. I got it working after a little trouble, the key was quote handling per this Github issue.
The sharable link was both really simple, and really complicated. All I needed
was a user id and some log ids and I could pull the report together with a
LINQ. It turns out MVC Core controllers don't databind list arguments, so I had
to parse the log ids myself. I also wanted to put the user's name on the report,
but accessing user info added some dependencies that made testing hard, mocking
a ApplicationDbContext : IdentityDbContext<ApplicationUser>
is really
complicated. Repository pattern to the rescue. One extra layer of abstraction
decouples my controller enough for testing. Also it seems there is no easy way
to use Razor templates to produce strings, so I had to roll my own templates.
I found Azure's web interface really confusing. At first I wasn't even sure how to setup a simple web app. I ended up using my Github repo for deployment, which has good and bad points. My first attempt didn't go well though. First my app wouldn't build (which was my fault), then when I got it built the deployment failed. It seems it always fails the first time, but a retry sorted that out. From there I spent hours trying to debug a code 500 - Internal server error. Everything checked out fine, the build was good, the server was fine, but I couldn't get anything to serve. It turns out to be a common Azure problem, and the solution is to just delete the web app instance and rebuild it.
My app is currently just hosted on the free app service tier. I did have to add a basic SQL database for $4.99 a month. Thus far I have spent about $2.00 of my $200.00 Azure credit just getting things setup. At this burn rate I'll get about 3 months of hosting. I've added Google AdSense banners in case I get any traffic.
Edit - TOS
I just re-read the Terms Of Service: the $200.00 credit expires after one month. Since it will go away if I don't use it I've cranked all my service plans up a few notches. I do have some Windows developer credits too, so I can keep the service running past the end of the month, but only if I turn the burn rate back down. Hopefully I will remember...


male
female
Cat
Dog
Bird
happy
sad
normal
I want to buy a new
animal
.
Valida Password
Please fix the following errors:
The password must contain a number
The password must be longer
The password is cool!


Case Control Odds Ratio Odds Ratio
Weight_M-H, Fixed, 95% Cl M-H, Fixed, 95% Cl Hubacek 2001 64 545 #3°1728 «443.3% 3.02 (2.12, 4.28] Study1 33° «277 27 4666 22.2% 2.65 (1.56, 4.51] Study2 52 317 38 500 34.5% 2.39 [1.53, 3.72] Total (95% Cl) 1139 2784 100.0% 2.72 [2.13, 3.47] Total events 149 138
Heterogeneity: Chi? = 0.68, df= 2 (P= 0.71); F=0% Test for overall effect: Z= 7.98 (P < 0.00001)
0.01 0.1 1 10 100 Favours experimental Favours control


Steamtown Marathon
Scranton PA/USA
Website: www.steamtownmarathon.com
Race Winners
(22 runnings)
07
Oct
2007
08
Oct
2006
09
Oct
2005
10
Oct
2004
12 Oct 2003
13 Oct 2002
07
Oct
2001
08
Oct
2000
10 Oct 1999
11 Oct 1998
12
Oct
1997
13 Oct 1996
Notes: 1996 was the inaugural year. This course drops 6.9 m/km which is
considered excessive.
08
Oct
2017
2:23:40
Hillary Too (NC/KEN)
3:09:34
Lauren Liuzzo (MA/USA)
09
Oct 2016
2:17:30.1
Suleman Abrar Shifa (ESP)
2:41:37.4
Caitlin Phillips (NY/USA)
11
Oct
2015
2:25:21.5
C Fred Joslyn-3
2:50:35.7
Heidi Peoples-4
12 Oct 2014
2:22:37
C
Fred Joslyn-2
2:39:47
Jen Rock (MI/USA)
13
Oct 2013
2:22:08
C Fred Joslyn (PA/USA)
2:45:10
Carol Jefferson (PA/USA)
07
Oct 2012
2:29:06
Mathew Byrne-3
2:50:01
Heidi Peoples-3
09
Oct 2011
2:19:26
Peter Kemboi Chemaoy (KEN)
2:50:58
Renee Skelly (PA/USA)
10 Oct
2010
2:16:41
Luke Watson (PA/USA)
2:39:51
Heidi Peoples-2
11
Oct
2009
2:25:42
Kevin Borrelli-2
2:50:20
Yolanda Mercado (PUR)
12
Oct
2008
2:22:41
Kevin Borrelli (PA/USA)
2:44:28
Heidi Peoples (PA/USA)
2:23:07
Steven Crane (WA/USA)
2:44:42
Kathleen Jobes (PA/USA)
2:21:50
Mathew Byrne-2
2:45:06
Susannah Kvasnicka (VA/USA)
2:22:17
Matthew Marcini (PA/USA)
2:47:32
Megan Duerring (PA/USA)
2:26:38
Mathew Byrne (PA/USA)
2:46:29
Elvira Kolpakova (RUS)
2:21:24
Eric Blake (CT/USA)
2:48:06
Andrea Niggemeier (GER)
2:21:20
Mathew Sandercock (PA/USA)
2:50:05
Tina Bartholomew (PA/USA)
2:22:29
Simon Cherogony (KEN)
2:52:48
Patty Fulton-2
2:24:56
Sergey Khropach (RUS)
2:50:34
Patty Fulton (MD/USA)
2:17:40
Jacob Kirwa (KEN)
2:50:26
Lisa Reilly (PA/USA)
2:20:59
Bob Schwelm (PA/USA)
2:44:01
Charlene Lyford-3
2:22:33
Michael Harrison (VA/USA)
2:49:37
Charlene Lyford-2
2:31:13
Paul Leonard (PA/USA)
2:52:24
Charlene Lyford (NY/USA)
Most Wins (1996-date)
Men
3Mathew Byrne (PA/USA) 2004,2006,2012 C Fred Joslyn (PA/USA) 2013-15
Women
4 Heidi Peoples (PA/USA) 2008,2010,2012,2015
Prize Money (ADR qualified runners) Year Men Woman Total 2017 $3,300 $2,800 $6,100 2016 2,825 3,600 6,425 2015 2,500 3,300 5,800 2014 3,000 3,100 6,100 2013 2,700 2,800 5,500 2012 2,800 2,500 5,300 2011 3,600 2,500 6,100 2010 3,300 2,500 5,800 2009 3,100 3,100 6,200 2008 3,800 3,300 7,100 2007 4,700 5,200 9,900 2006 4,700 4,800 9,500 2005 4,600 4,800 9,400 2004 3,600 4,800 8,400 2003 5,300 5,100 10,400 2002 5,100 5,200 10,300 2001 4,400 4,500 8,900 2000 4,600 3,800 8,400 1999 4,100 3,800 7,900 1998 2,500 2,500 5,000 1997 1,000 1,000 1,000 1996 1,000 1,000 1,000 Sums $76,525 $76,000 $152,525
Race Time Bias
(sec/km)
Insufficient data to calculate the race time bias.
Competitive Level
(1990-date)
Insufficient data to calculate competitive levels.
Quality Performances
Men <2:17 1 <2:18 3 <2:19 5 <2:20 6 Women <2:40 2 <2:42 3 <2:44 3 <2:46 9 <2:48 12 <2:50 16Note: The net drop of 6.9 m/km is considered excessive and these performances are not included in ARRS recors and rankings lists.
Last Updated on 10 Oct 2017


MetricsObserver |
MetricsObserver handles events related to audio/video metrics. interface MetricsObserver |
ObservableMetric |
ObservableMetric represents filtered metrics that are intended to propagate to the top level observers. All metrics are measured over the past second. enum class ObservableMetric |


--- title: "1.3 — Review of Economics & Efficiency — Class Content" citeproc: false bibliography: ../../static/bib/references.bib csl: ../../static/bib/chicago-syllabus-no-bib.csl output: blogdown::html_page: template: ../../pandoc/toc-title_html.template toc: true editor_options: chunk_output_type: console ---
Tuesday, February 9, 2021
Today we essentially review the basic tools of microeconomics with a focus on economic efficiency — its definitions, why markets and consensual exchange are efficient, as well as what can give rise to inefficiencies. This will help us next class when we discuss whether the law should be efficient.
The textbook covers a full review of intermediate microeconomics — utility maximization, supply and demand, perfect competition, monopoly, game theory, choice under risk, informational problems — in Chapter 2. It’s unlikely we’ll need all of it (now), but it will be helpful to refer back to.
Friedman, as usual, provides a great discussion of efficiency (he prefers a “Marshallian” view of efficiency as opposed to Pareto or Kaldor-Hicks) and also launches into a discussion about whether law should be efficient, which will be more relevant next class.


Search:
Search terms:
Food group:
All
American Indian/Alaska Native Foods
Baby Foods
Baked Products
Beef Products
Beverages
Breakfast Cereals
Cereal Grains and Pasta
Dairy and Egg Products
Fast Foods
Fats and Oils
Finfish and Shellfish Products
Fruits and Fruit Juices
Lamb, Veal, and Game Products
Legumes and Legume Products
Meals, Entrees, and Side Dishes
Nut and Seed Products
Pork Products
Poultry Products
Restaurant Foods
Sausages and Luncheon Meats
Snacks
Soups, Sauces, and Gravies
Spices and Herbs
Sweets
Vegetables and Vegetable Products
Results:
Nutrition Facts
Serving size:
---
Amount per serving
Calories
0
Total Fat
0g
Saturated Fat 0g
Monounsaturated Fat 0g
Polyunsaturated Fat 0g
Cholesterol
0g
Sodium
0g
Total Carbohydrate
0g
Dietary Fiber 0g
Sugars 0g
Protein
0g


Geraldton is a major exporting port lying halfway down Australia's western coast. It is the departure point for visiting the protected Houtman Abrolhos Islands.
Position 28°46' S, 114°36' E.
Contact Geraldton Port Authority and Customs prior to arrival.
Last updated March 2014.
This port is well known for its excellent fishing and the Port of Geraldton is a major exporter of crayfish. It is about 300 miles north of Perth.
The new marina encloses a large area within its overlapping breakwaters. There are three pontoons, one of which is for recreational boaters.
The Abrolhos Islands
Written notice must be given to the Department of Fisheries at the Dongara or Geraldton district offices (phone for further details) of boats intending to visit the islands between 15 July and 20 February the following year. Visiting boats must carry enough food, fresh water and fuel to last the length of the intended visit. Boats must be fitted with communication devices and waste-disposal storage and equipment. See the Visitors Guide for full details.
There are a limited number of public mooring available at the Islands.
Last updated March 2014.


The Blair Witch Project (1999) Heather Donahue, Michael Williams, Joshua Leonard, Bob Griffith, Jim King, Sandra Sanchez, Ed Swanson, Patricia Decou. Screenplay by Eduardo Sanchez and Daniel Myrick. Directed by Sanchez and Myrick. 87 minutes. Rated R, 4 stars (out of five stars)
Review by Ed Johnson-Ott, NUVO Newsweekly www.nuvo-online.com Archive reviews at http://us.imdb.com/M/reviews_by?Edward+Johnson-ott To receive reviews by e-mail at no charge, send subscription requests to<EMAIL_ADDRESS>"The Blair Witch Project" opens with a title card that reads "In October of 1994, three student filmmakers disappeared in the woods near Burkittsville, Maryland while shooting a documentary. A year later their footage was found." That's all you really need to know before viewing this ingenious, extremely creepy horror movie. Shot with two shaky hand- held cameras on a shoestring budget, "The Blair Witch Project" works because the creators remembered that the most effective of all special effects is the human imagination.
With very little money (roughly $25,000) to work from, filmmakers Eduardo Sanchez and Daniel Myrick decided to turn lemons into lemonade, constructing a storyline that would transform their financial and technical limitations into assets. The result is a "mockumentary" about the shooting of a documentary.
Heather Donahue, a film student and aspiring director, sets off to explore the legend of the Blair Witch, an 18th century woman who supposedly haunts the Black Hills Forest of Maryland, periodically reaching out from the netherworld to strike at those who trespass on her domain. Heather is accompanied by two fellow students: cameraman and friend Joshua Leonard and sound operator Michael Williams. While Joshua shoots documentary footage on 16mm black and white film, Heather records virtually everything on video, for use in a "The Making Of" feature about their movie.
After playfully filming each other and interviewing some locals, the trio heads off to search for the sight where the legend began, only to get lost in the woods. Hours grow into days, supplies grow scarce, tensions increase, and then the kids start hearing these strange noises...
Setting the story in 1994 was smart. While firmly in our high-tech age, the year predates, just barely, the current climate where having a pocket cell phone is de rigueur for those under 30, so the idea of the three truly being cut-off from the outside world is plausible. Yet 1994 is recent enough to encompass the mentality of shows like "The Real World," so Heather's insistence on keeping the cameras running even when the situation becomes extremely dire is not that much of a stretch. After all, the more dangerous things get, the more important it is to continue filming because, as the "Real World" mindset goes, we are all potential stars if, and only if, our lives provide enough high drama.
The casting of Heather Donahue, Michael Williams and Joshua Leonard was equally inspired. All three actors (their actual names are used in the film, adding to the "is this real?" mystique) have a genuine quality crucial in making the production seem believable. Heather is determined, over-confident and a bit pushy; required traits for a director-in-the- making. When she tapes an introduction to the documentary, her delivery is self-conscious and a tad stilted, exactly what one would expect from a student filmmaker.
Even though he is working with a friend, Joshua remains reticent, clearly more comfortable filming the action than being a part of it. As the outsider, Michael is the wild card of the group. The extremely likable young man does his best to cooperate with the others, despite his discomfort at being stuck in the middle of nowhere with two people he barely knows.
I cared about the fates of these individuals and found myself hoping against hope that they would somehow avoid the fate predicted by the title card. "The Blair Witch Project" deftly creates a sense of dread that grows steadily as events progress, with the shaky camerawork, obscured views and limited night-lighting effectively amplifying the disorientating ambiance.
To a degree, the actors actually experienced those feelings. They were left alone in a Maryland state park for extended periods of time, filming themselves and improvising their dialogue based on directoral notes left at prearranged drop points. The unnerving sounds they heard were provided by the directors, who would periodically sneak around the actors' campsites in the middle of the night.
On Internet film newsgroups, where arguing and sniping is the norm, a debate rages between devotees of the movie and those who consider the production nothing more than an over-hyped gimmick. To be sure, there has been a great amount of hype for the film, but so what? Convincing a mass audience to try out a low-budget independent flick is a tough chore and the folks behind "Blair Witch" have used clever promotion to create a whale of an advance buzz. And the finished product delivers the goods. "The Blair Witch Project" is much more than a gimmick. Eduardo Sanchez and Daniel Myrick have crafted a horror film that is genuinely disquieting, because they understand that no matter how much money studios throw into lurid nightmare imagery, the scariest monsters are those who lurk just out of sight, in the dark recesses of our own minds.
© 1999 Ed Johnson-Ott
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


Corporate Sessions
Payment Options
1x a week for 6 months : $240.00 USD - monthly
1x a week for 12 months : $480.00 USD - monthly
1x a week for 3 months : $120.00 USD - weekly
2x a week for 6 months : $480.00 USD - monthly
2x a week for 12 months : $960.00 USD - monthly
2x a week for 3 months : $240.00 USD - weekly
App (Monthly Pay)
App (Annual Pay)


Class implementing the BRISK keypoint detector and descriptor extractor
As described in [LCS11].
References:
[LCS11]:
Stefan Leutenegger, Margarita Chli, and Roland Yves Siegwart.
"BRISK: Binary Robust Invariant Scalable Keypoints".
In IEEE International Conference on Computer Vision (ICCV) 2011,
pages 2548-2555. IEEE, 2011.
|
|
addlistener |
Add listener for event. |
|
|
clear |
Clears the algorithm state |
|
|
compute |
Computes the descriptors for a set of keypoints detected in an image or image set. |
|
|
defaultNorm |
Returns the default norm type |
|
|
delete |
Destructor |
|
|
descriptorSize |
Returns the descriptor size in bytes |
|
|
descriptorType |
Returns the descriptor type |
|
|
detect |
Detects keypoints in an image or image set. |
|
|
detectAndCompute |
Detects keypoints and computes their descriptors |
|
|
empty |
Checks if detector object is empty. |
|
|
eq |
== (EQ) Test handle equality. |
|
|
findobj |
Find objects matching specified conditions. |
|
|
findprop |
Find property of MATLAB handle object. |
|
|
ge |
>= (GE) Greater than or equal relation for handles. |
|
|
getDefaultName |
Returns the algorithm string identifier |
|
|
gt |
> (GT) Greater than relation for handles. |
| Sealed
|
isvalid |
Test handle validity. |
|
|
le |
<= (LE) Less than or equal relation for handles. |
|
|
load |
Loads algorithm from a file or a string |
|
|
lt |
< (LT) Less than relation for handles. |
|
|
ne |
~= (NE) Not equal relation for handles. |
|
|
notify |
Notify listeners of event. |
|
|
save |
Saves the algorithm parameters to a file |
|
|
typeid |
Name of the C++ type (RTTI) |


--- layout: post title: NYX Lipliner Pencil in Sand Pink-856 tags: - NYX status: publish type: post published: true meta: _edit_last: '2' wp_plus_one_redirect: '' _graphene_slider_img: global _graphene_slider_imgurl: '' _graphene_show_addthis: global _graphene_post_date_display: global _aioseop_title: NYX Lipliner Pencil in Sand Pink-856 _aioseop_keywords: NYX Lipliner Pencil in Sand Pink-856, NYX Lipliner Pencil in Sand Pink review _yoast_wpseo_linkdex: '0' _thumbnail_id: '2815' _yoast_wpseo_focuskw: '' _yoast_wpseo_title: '' _yoast_wpseo_metadesc: '' _yoast_wpseo_metakeywords: '' _yoast_wpseo_meta-robots-noindex: '0' _yoast_wpseo_meta-robots-nofollow: '0' _yoast_wpseo_meta-robots-adv: none _yoast_wpseo_sitemap-include: ! '-' _yoast_wpseo_sitemap-prio: ! '-' _yoast_wpseo_canonical: '' _yoast_wpseo_redirect: '' ---
This particular shade in NYX pencil, I received in a giveaway. You bet I have been running with my luck these days, so many great giveaways and gifts . Giveaway reminds me , have you entered my first International giveaway, if not then please do soon, 7 more days to go ....
Price: Rs. 200-250 Indian websites and $2.49 @cherryculture, @beautyjoint etc.
Nyx says: Slim, trim but never prim, our lip pencils come in 60 dashing shades—from auburn to orange and traffic-stopping red. The buttery, long-wearing lip liner formula goes on easily and resists bleeding. Available in 60 shades.
Ingredients: Sorbitan Isostearate, Isocetyl Stearate, Phenyl Trimethicone, Polyethylene, Euphorbia Cerifera (Candelilla) Wax, Butyrospermum Parkii (Shea Butter) Unsaponifiables, Beeswax, Simmondsia Chinensis (Jojoba) seed oil, Caprylic/Capri Triglyceride, Nylon-12, Octyldodecanol,Polyglyceryl-2 Diisostearate,Silica, Copernicia Cerifera (Carnauba) Wax, Hydrogenated Coconut Oil,Tocopherol, VP/Hexadecene Copolymer,Stearalkonium Hectorite, Stearyl Glycyrrhetinate, Propylparaben, Prolylene Carbonate
My experience: I am not a lip liner person, for me just a dab of a nice lipstick with gloss and I am done. So I used this pencil as a matte crayon on my lips and I am really happy with the results. I just wish if these pencils had the capacity to moisturise I would never buy lipsticks again. They don't crease, have a pretty long staying powers and sharpening is not an issue with them.
What I like:
What I did not like:
Undoubtedly I would recommend this to everyone, even if you are not a lip lining person. I am going to collect them in more shades for sure.
Which is your favorite lip pencil ?


val envvar: String?
The name of the environment variable for this option. Overrides automatic names.
envvar - The name of the environment variable for this option. Overrides automatic names.
envvar


Past
- Birthday: May 29
- Birthtown: Fairfax, VA - lived there until I was 13
- Moved to and attended high school in West Chester, PA
- College: Loyola University Maryland in Baltimore, MD
- Studied Psychology and Studio Art
- Moved to NYC after college and worked for a TV Production Agency...not for me!
- Moved to Boulder, CO in 2012 because of the mountain lifestyle; acquired a job as a therapist
- Moved to Denver, CO last year and started working at Nordstrom while trying to figure out my next career move
Travel Spots:


Main buttons
Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.
<button class="btn mb-2 mr-2 btn-primary" type="button">Primary</button>
<button class="btn mb-2 mr-2 btn-secondary" type="button">Secondary</button>
<button class="btn mb-2 mr-2 btn-tertiary" type="button">Tertiary</button>
<button class="btn mb-2 mr-2 btn-success" type="button">Success</button>
<button class="btn mb-2 mr-2 btn-warning" type="button">Warning</button>
<button class="btn mb-2 mr-2 btn-danger" type="button">Danger</button>
<button class="btn mb-2 mr-2 btn-info" type="button">Info</button>
<button class="btn mb-2 mr-2 btn-dark" type="button">Dark</button>
<button class="btn mb-2 mr-2 btn-gray" type="button">Gray</button>
<button class="btn mb-2 mr-2 btn-light" type="button">Light</button>
<button class="btn mb-2 mr-2 btn-white" type="button">White</button>
Social buttons
Start using the buttons as you would normally do with the Bootstrap buttons that have an icon by adding the relevant class. For example:
.btn-twitter


--- layout: attachment title: cropped-7_4bd868660f8da.jpg categories: [] tags: [] published: false comments: false ---
http://www.onevcat.com/wp-content/uploads/2011/09/cropped-7_4bd868660f8da11.jpg


Anytime is Train Time
Choo Choo. Chee Chee
Train Schedule
Train Name
Destination
Frequency
Next Arrival
Minutes Away
Add Train
Train Name
Destination
First Train of the Day Time (HH:MM - (Military Time))
Frequency (minutes)
Submit


Johnny's Vacation Services
"Not all those who wander are lost"
~ J.R.R. Tolkien for The Lord of the Rings
Vacation packages availble.
Gold Plan
- $3,000
- October 17th - October 24th
- Activities include: swimming with dolphins, staying one night in a castle, meeting the king.
Blue Plan
- $1,250
- October 17th - October 21st
- Activities include: swimming with fish, staying at resort, meeting the prince
Red Plan
- $50
- October 17th
- Activities include: meeting someone on the street.
Clear plan
- Free!
- October 17th
- Activities include: looking at phone.


SHARAF - PORTFOLIO
Home
Case Studies
About
Contact Me
This is
Sharaf
I love to code and create designs.


In Fluidinfo itself, all paths (namespaces and tags) are absolute and have no leading slash. So alice`'s rating tag is ``alice/rating and must always be specified as such.
This contrasts with Unix, where there is a notion of relative and absolute paths. Absolute paths start with a slash and specify how to get to the item you are interested in. So, if we map namespaces to directories and tags to files, then the unix equivalent of alice/rating is /alice/rating. But Unix also has a notion of a current working directory (cwd) and relative paths—the path to the file or directory of interest relative to the working directory. Thus if the cwd is alice, then /alice/rating can be referred to as rating. Unix uses the cd command to allow you to change your working directory, and pwd to print the name of the working directory.
The default behaviour of Fish is the support a limited version of the unix-like behaviour. There are two ways to tell Fish that you would like to use fluidinfo-style paths rather than unix-style paths. First, on any command line, you can add a -F flag, and this will have the desired effect for that command only. Thus, when authenticated as the user alice, the commands
ls -l rating
and
ls -F -l alice/rating
have the same effect. (The -F and -l can also be combined as -lF or -Fl since they are single letter flags that don’t take arguments.)
Alternatively, if you would always like to use fluidinfo-style paths, you can add a third line to your Credentials file saying
unix-style-paths false
When using the default use unix-style paths, the following behaviours occur:
All paths not beginning with a / are taken to be relative to the user’s namespace. So if you authenticate as alice, then rating is a shorthand for /alice/rating (the Fluidinfo tag alice/rating), private/rating is a shorthand for /alice/private/rating.
Paths in other users’ namespaces must be introduced with a slash. Thus, to refer to jacqui‘s rating, use /jacqui/rating etc. For example,
$ fish show -a DADGAD rating /jacqui/ratingwill request the Fluidinfo tags alice/rating and jacqui/rating.
The about tag, fluiddb/about may be referred to with the special abbreviation /about. For example,
$ fish show -a DADGAD rating /jacqui/rating /about(though requesting the about tag for an object specified by about tag is obviously a bit pointless).
The pseudo-tag /id may be used to request the object’s ID. (This is also available when not using unix-style paths, in fact.)
The exception to this is in the body of queries: Fish does not rewrite queries, which are passed directly to Fluidinfo. Thus, to request the about tags for all objects containing DADGAD, you would say:
$ fish show -q 'fluiddb/about matches "DADGAD"' /aboutSimilarly, to request all objects alice has rated 10:
$ fish show -q 'alice/rating = 10' /about
NOTES
- At present, although there is a pwd command, it always simply returns the authenticated user’s username; there is no cd command at present. This may change.
- It is quite likely that at some point in the future, when unix paths are in use, Fish will rewrite queries too, i.e. unix-style paths will be extended to the query; however, that is a slightly more delicate operation, so hasn’t been tackled yet.


interface EphemeralKeyUpdateListener
Represents a listener for Ephemeral Key Update events.
onKeyUpdate |
Called when a key update request from your server comes back successfully. abstract fun onKeyUpdate(stripeResponseJson: String): Unit |
onKeyUpdateFailure |
Called when a key update request from your server comes back with an error. abstract fun onKeyUpdateFailure(responseCode: Int, message: String): Unit |


How to join us
Official Chia Instructions.
Make sure you are running official Chia client 1.2.0 or later.
Connection
https://pool.openchia.io
Step 1: Sync your full node and wallet
- before joining the pool, your node and wallet must be fully synchronized with Chia
blockchain
Step 2: Receive some XCH
- you are going to need 1 mojo (0.000000000001 XCH) which you can get through our faucet
service on
Discord channel or through Faucet website: https://faucet.chia.net/
- join Discord
- go to “faucet” text channel
- type in message box:
.faucet <wallet address>
Step 3: Create Plot NFT
- go to the “Pool” tab, and click on “Join the Pool”
- choose “Connect to pool” and enter the url: https://pool.openchia.io (exactly, no ending slash)
then wait for pool description to appear
- click the “Create” button. In the next couple of minutes, the Plot NFT will be created, and it
will appear in your “Pool” tab
- You can now start creating Plots in “Plots” tab using this new Plot NFT to start farming XCH
Switching pools
- Go to "Pool" menu in the left menu
- If you already have a Plot NFT select "Change Pool" then enter https://pool.openchia.io
- Click “Change” button


Bootstrap Table
The table displays data in a tabular format and offers rich support to radio, checkbox, sort, pagination and so on. The table has been designed to reduce development time and to require no specific knowledge from developers. It is both featherweight and feature-rich.
Features
- Created for Bootstrap 3 (Bootstrap 2 supported)
- Responsive web design
- Scrollable Table with fixed headers
- Fully configurable
- Via data attributes
- Show/Hide columns
- Show/Hide headers
- Get data in JSON format using AJAX
- Simple column sorting with a click
- Format column
- Single or multiple row selection
- Powerful pagination
- Card view
- Localization


Nothing to see here. But I ain’t leaving you empty-handed my partially outdated résumé can be found here. Have a wonderful day!
Nothing to see here. But I ain’t leaving you empty-handed my partially outdated résumé can be found here. Have a wonderful day!


Some sample example page header
Some page content that also serves as an example.
Some example message text.
Some example success text.
Some example warning text.


Provides a quantitative toolkit to explore elastic net families and to uncover correlates contributing to prediction under a cross-validation framework. Fits linear, binomial (logistic) and multinomial models. Candia J and Tsang JS (2018), bioRxiv 305870 (under review).
| Version: | 1.0.1 |
| Depends: | R (≥ 2.10) |
| Imports: | glmnet, stats, graphics, methods, grDevices, Matrix, progress, calibrate, RColorBrewer, gplots |
| Published: | 2018-06-10 |
| Author: | Julian Candia and John S. Tsang |
| Maintainer: | Julian Candia <julian.candia at nih.gov> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| Citation: | eNetXplorer citation info |
| Materials: | ChangeLog |
| CRAN checks: | eNetXplorer results |
| Reference manual: | eNetXplorer.pdf |
| Package source: | eNetXplorer_1.0.1.tar.gz |
| Windows binaries: | r-devel: eNetXplorer_1.0.1.zip, r-release: eNetXplorer_1.0.1.zip, r-oldrel: eNetXplorer_1.0.1.zip |
| OS X binaries: | r-release: eNetXplorer_1.0.1.tgz, r-oldrel: eNetXplorer_1.0.1.tgz |
| Old sources: | eNetXplorer archive |
Please use the canonical form https://CRAN.R-project.org/package=eNetXplorer to link to this page.


class: center, middle, title-slide # Shiny apps and aiR quality ## EARL 2021 ### Adithi R. Upadhya ### ILK Labs ### 10 September, 2021 --- # Hi! My name is Adithi, and I am a Geospatial Data Analyst at ILK Labs in Bengaluru, India. I will now be presenting about how I use shiny to build tools to provide a workflow to analyse air quality data. --- # Who all R there? ![ - With the ever increasing global measurements of air pollutants (through stationary, mobile, low-cost, and satellite monitoring) it has become necessary to use management platforms. - So here we present two shiny applications. ??? R and shiny are a powerful couple which can be used to build interactive platforms to manage and work with the data collected. With the ever increasing global measurements of air pollutants (through stationary, mobile, low-cost, and satellite monitoring), the amount of data being collected is huge and it necessitates the use of management platforms. In an effort to address this issue, we developed two Shiny applications to analyse and visualise air quality data. --- # Why shiny apps? - Shiny apps can be deployed - The user needs no programming knowledge - Help available --- # 2 types of Air Quality Measurements .left-column[ ###Staionary monitoring ![Stationary reference grade monitor](WWW/SM.png) ] -- .right-column[ ###Mobile monitoring ![Sensors in a car](img/google-street-view.png) ] ??? Typically, we have two main types of air quality measurements. --- # Stationary Monitoring ![Network of air quality sensors in Begaluru, India](img/pa.png) ??? This is what stationary monitoring network looks like. Multiple sensors recording data at real time ~ 1 min frequency. Gives information about trends at the city scale --- # Mobile Monitoring ![Individual instruments for each parameter](img/setup.png) ??? For a neighborhood level measurement, we use mobile monitoring. This schematic shows the many instruments that go in the mobile platform. You can imagine the complexity, diff instruments, have different download methods, from the point of view of analysis - different data formats, different time stamps, etc. --- .left-column[ ###Our set-up in Bengaluru, India ] .right-column[ ![Internal set up in the mobile monitoring platform](img/cng.jpg) ] ??? We are looking at the inside of the car now. We have a laptop as a logger for some instruments. And all instruments are secured in the blue tray with inlets outside the vehicle. This is what looks like in practise. --- .left-column[ ###but sometimes our ride is unexpected ] .right-column[ ![Unplanned and unanticipated road blocks](img/challenges.jpg) ] ??? All that to say that many times, things are out of our control in the field. --- # Our next step - Build an app to make public use the open source air quality data available and think about science. - Build another app which helps team at ILK to perform quality checks to the high frequency data. ??? Once we saw that stationary monitors can sometimes need cleaning and also the freely available data was for public use. To facilitate public use why not try to make an app which navigates a user to use the open source air quality data easily and think about science. And we at ILK Labs we waiting to understand how to perform quality checks on the high dimensional data we were collecting everyday. --- .left-column[ #Data Cleaning - Important!!! ![](img/tidyverse_logo.png) ] .right-column[ ![](img/tidyverse.png) ] ??? We use all tidyverse packages for data cleaning. Ggplot for highly flexible plotting, purrr and map functions for more efficient and faster code instead of for loops, and forcats for functions. Readr, read_csv automatically parses date-time objects, that is is very helpful --- # Working with datetime using `lubridate` .left-column[ ![](img/lubridate.jpeg) ] .right-column[ Date for different instruments can have different ![](img/data_issues.png) - Parsing date-times with `ymd_hms()`, `dmy_hms()`... - Assigning time zone with `with_tz()` ] ??? Step 1 is consistent time stamps so that we can join all data sets together. Some instruments are either in UTC time zone, or depending on the country of origin in a diff time zone. --- class: center # Stationary Monitoring - pollucheck  .center[CSTEP, Begaluru, India] ??? The second shiny application "pollucheck" helps processing open source air quality data usually called stationary monitoring. There are several platforms which provide open source air quality data. We built this application for users of these platforms who can have quick analysis and basic plots of air quality easily generated and think about science. --- class: center # [pollucheck](https://aruapps.shinyapps.io/OpenSourceAirQualityApp)  ??? This is how pollucheck looks like. --- # [pollucheck](https://github.com/adithirgis/pollucheck)  - sources compatible - [CPCB (specific to India)](https://app.cpcbccr.com/ccr/#/caaqm-dashboard-all/caaqm-landing), [OpenAQ](https://openaq.org/#/countries/IN?_k=5ecycz), and [AirNow](https://www.airnow.gov/international/us-embassies-and-consulates/#India) - Data processing options available along with different summary statistics - Generates statistical and summary plots - Implements linear or multilinear regression - Allows users to compare from two sites ??? "pollucheck" can be used for data downloaded from CPCB (specific to India), OpenAQ and AirNow, it aims at generating a range of statistical plots and summary statistics with several data processing options. There are options for different averaging periods as well. It also checks for normality, generates density, Q-Q plots along with all these checks for trends in the time series for the selected parameter. It can implement linear or multilinear regression. pollucheck allows users to upload another set of data to compare selected parameters and generate plots. It also implements two plots from the openair package. This is made into a package. Don't forget to check out air quality of your city using our application! --- class: center # Mobile Monitoring - mmaqshiny  .center[Google Street View car] --- class: center # [mmaqshiny](https://aruapps.shinyapps.io/mmaqshiny/)  ??? This is how mmaqshiny looks like. The first shiny application is called "mmaqshiny" which helps in processing high resolution air quality data collected on a moving platform usually called mobile monitoring. So we take multiple sensors in a car, and take repeated measurements of each road in an area to generate stable high resolution air pollutant maps (usually daily maps are generated). There is superior performance in estimating long-term mean concentrations when multiple repeated drives are possible. --- # [mmaqshiny](https://github.com/meenakshi-kushwaha/mmaqshiny)  - Handles high frequency data (~ 1 Hz) - Only mandatory file is GPS and multiple inputs possible - Visualise air pollution hot spots - Pre-processes for various instrumental sensitivities - Provides unit of analysis for further study - Joins output files from different instruments - Reduces computational labour - Alarms user on instrumental errors - Near real time quality check of the data (usually after the ride) ??? mmaqshiny can handle data of the order 1000's every day from each of the instrument, we had nearly 5 instruments for this study. It reduces the time consumed for analysing each pollutant individually, helps in visualising the data collected on field each day, it can also be used to look for pollution hotspots, locations that are relatively more polluted than neighboring areas. Each pollutant or sensor data requires specific kind of pre-processing which depends on the principle on which it operates or its mechanical setup. Eventually, it joins different instrument data into one single corrected file. This really helps us in achieving the unit of analysis for the rest of the study. This application has reduced computational labour. Since mobile data contains a huge amount of spatial data, GPS data file is mandatory but other files from different instruments are not necessary. Since Alarm tab is also present in the application, it helps the user to give a near real-time check on the health of all the instruments used. This application is available as a package on CRAN. --- # Coming up next - Working with models for low cost sensor data - Working with satellite images --- # Resources used .pull-left[ - R packages - [xaringan](https://github.com/yihui/xaringan) - [xaringanextra](https://github.com/gadenbuie/xaringanExtra) - Images from [rawpixel](https://www.rawpixel.com/) - Logos from [The Noun Project](https://thenounproject.com/) ] --- ![](img/Team_ILK.PNG) --- .left-column[ ##Thank You everyone and EARL 2021! Website: [Adithi R. Upadhya](https://adithirugis.rbind.io/) Twitter: [AdithiUpadhya](https://twitter.com/AdithiUpadhya) Github: [@adithirgis](https://github.com/adithirgis) Email: [adithi@ilklabs.com]() ] .right-column[ ![](img/code_hero.jpg) ] ??? Please let me know if you all have any further questions. I am also available in the Lounge if you want to discuss. Have a great day ahead! Enjoy EARL!


{% extends 'base.html' %} {% load bootstrap4 %} {% block content %}
{{hood.name}} {{hood.location}}
Since {{hood.pub_date|timesince}}


| |
Methods defined here:
- __init__(self, kp, ki, kd)
- Creates a PIDController.
Args:
kp: Integer. The constant term.
ki: Integer. The integrator term.
kd: Integer. The differential term.
- get_output(self, error)
- Does a PID calculation and returns the new output value.
Args:
error: Float. The current error value.
Returns:
Float. The output of the PID controller for the current error.
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
Data and other attributes defined here:
- Worker = <class 'pyparts.logic.pid_controller.Worker'>
- A worker for a PIDController to allow background processing.
PIDController.Worker can be used to run a PID controller loop in a
background thread. The worker calls the input function to get the current
error value. It then computes the output value using the PID controller and
calls the output function with that value.
Attributes:
_controller: PIDController. The PIDController used to calculate output
values.
_input_func: Function. Function called to determine error.
_output_func: Function. Function called with the output of the PID.
_set_point: Float. The desired value.
_stop: Boolean. Set to true to disable the controller.
|


9.2. Using .NET Regular Expressions.NET regular expressions are powerful, clean, and provided through a complete and easy-to-use class interface. But as wonderful a job that Microsoft did building the package, the documentation is just the oppositeit's horrifically bad. It's woefully incomplete, poorly written, disorganized, and sometimes even wrong. It took me quite a while to figure the package out, so it's my hope that the presentation in this chapter makes the use of .NET regular expressions clear for you. 9.2.1. Regex QuickstartYou can get quite a bit of use out of the .NET regex package without even knowing the details of its regex class model. Knowing the details lets you get more information more efficiently, but the following are examples of how to do simple operations without explicitly creating any classes. These are just examples; all the details follow shortly. Any program that uses the regex library must have the line Imports System.Text.RegularExpressions at the beginning of the file (☞415), so these examples assume that's there. The following examples all work with the text in the String variable TestStr. As with all examples in this chapter, names I've chosen are in italic. <IP_ADDRESS>. Quickstart: Checking a string for matchThis example simply checks to see whether a regex matches a string: If Regex.IsMatch( TestStr, "^\s*$") Console.WriteLine("line is empty") Else Console.WriteLine("line is not empty") End If This example uses a match option:
If Regex.IsMatch( TestStr, "^subject:", RegexOptions.IgnoreCase)
Console.WriteLine("line is a subject line")
Else
Console.WriteLine("line is not a subject line")
End If
<IP_ADDRESS>. Quickstart: Matching and getting the text matchedThis example identifies the text actually matched by the regex. If there's no match, TheNum is set to an empty string. Dim TheNum as String = Regex.Match( TestStr, "\d+") .Value If TheNum <> "" Console.WriteLine("Number is: " & TheNum) End If This example uses a match option: Dim ImgTag as String = Regex.Match( TestStr, "]*>", _ RegexOptions.IgnoreCase).Value If ImgTag <> "" Console.WriteLine("Image tag: " & ImgTag) End If <IP_ADDRESS>. Quickstart: Matching and getting captured textThis example gets the first captured group (e.g., $1) as a string: Dim Subject as String = _ Regex.Match( TestStr, "^Subject: (.*)").Groups(1).Value If Subject <> "" Console.WriteLine("Subject is: " & Subject) End If Note that C# uses Groups[1] instead of Groups(1). Here's the same thing, using a match option: Dim Subject as String = _ Regex.Match( TestStr, "^subject: (.*)", _ RegexOptions.IgnoreCase).Groups(1).Value If Subject <> "" Console.WriteLine("Subject is: " & Subject) End If This example is the same as the previous, but using named capture: Dim Subject as String = _ Regex.Match(TestStr, "^subject: (?<Subj>.*)", _ RegexOptions.IgnoreCase).Groups("Subj").Value If Subject <> "" Console.WriteLine("Subject is: " & Subject) End If <IP_ADDRESS>. Quickstart: Search and replaceThis example makes our test string "safe" to include within HTML, converting characters special to HTML into HTML entities: TestStr = Regex.Replace( TestStr, "&", "&") TestStr = Regex.Replace( TestStr, "<", "<") TestStr = Regex.Replace( TestStr, ">", ">") Console.WriteLine("Now safe in HTML: " & TestStr) The replacement string (the third argument) is interpreted specially, as described in the sidebar on page 424. For example, within the replacement string, '$&' is replaced by the text actually matched by the regex. Here's an example that wraps ⋯ around capitalized words: TestStr = Regex.Replace( TestStr, "\b[A-Z]\w*", "$&") Console.WriteLine("Modified string: " & TestStr) This example replaces ⋯ (in a case-insensitive manner) with ⋯: TestStr = Regex.Replace(TestStr, "(.*?)/", "$1", _ RegexOptions.IgnoreCase) Console.WriteLine("Modified string: " & TestStr) 9.2.2. Package OverviewYou can get the most out .NET regular expressions by working with its rich and convenient class structure. To give us an overview, here's a complete console application that shows a simple match using explicit objects: Option Explicit On ' These are not specifically required to use regexes, Option Strict On ' but their use is good general practice. ' Make regex-related classes easily available. Imports System.Text.RegularExpressions Module SimpleTest Sub Main() Dim SampleText as String = "this is the 1st test string" Dim R as Regex = New Regex("\d+\w+") 'Compile the pattern. Dim M as Match = R.match(SampleText) 'Check against a string. If not M.Success Console.WriteLine("no match") Else Dim MatchedText as String = M.Value 'Query the results ... Dim MatchedFrom as Integer = M.Index Dim MatchedLen as Integer = M.Length Console.WriteLine("matched [" & MatchedText & "]" & _ " from char#" & MatchedFrom.ToString() & _ " for " & MatchedLen.ToString() & " chars.") End If End Sub End Module When executed from a command prompt, it applies \d+\w+ to the sample text and displays: matched [1st] from char#12 for 3 chars. <IP_ADDRESS>. Importing the regex namespaceNotice the Imports System.Text.RegularExpressions line near the top of the program? That's required in any VB program that wishes to access the .NET regex objects, to make them available to the compiler. The analogous statement in C# is: using System.Text.RegularExpressions; // This is for C# The example shows the use of the underlying raw regex objects. The two main action lines: Dim R as Regex = New Regex("\d+\w+") 'Compile the pattern. Dim M as Match = R.Match(SampleText) 'Check against a string. can also be combined, as:
Dim M as Match = Regex.Match(SampleText, "\d+\w+") 'Check pattern against
string.
The combined version is easier to work with, as there's less for the programmer to type, and less objects to keep track of. It does, however, come with at a slight efficiency penalty (☞432). Over the coming pages, we'll first look at the raw objects, and then at the "convenience" functions such as the Regex.Match static function, and when it makes sense to use them. For brevity's sake, I'll generally not repeat the following lines in examples that are not complete programs: Option Explicit On Option Strict On Imports System.Text.RegularExpressions It may also be helpful to look back at some of VB examples earlier in the book, on pages 96, 99, 204, 219, and 237. 9.2.3. Core Object OverviewBefore getting into the details, let's first take a step back and look the .NET regex object model. An object model is the set of class structures through which regex functionality is provided. .NET regex functionality is provided through seven highly-interwoven classes, but in practice, you'll generally need to understand only the three shown visually in Figure 9-1 on the facing page, which depicts the repeated application of \s+(\d+) to the string 'May•16,•1998'. Figure 9-1. .NET's Regex-related object model<IP_ADDRESS>. Regex objectsThe first step is to create a Regex object, as with: Dim R as Regex = New Regex("\s+(\d+)") Here, we've made a regex object representing \s+(\d+) and stored it in the R variable. Once you've got a Regex object, you can apply it to text with its Match(text) method, which returns information on the first match found: Dim M as Match = R.Match("May 16, 1998") <IP_ADDRESS>. Match objectsA Regex object's Match(⋯) method provides information about a match result by creating and returning a Match object. A Match object has a number of properties, including Success (a Boolean value indicating whether the match was successful) and Value (a copy of the text actually matched, if the match was successful). We'll look at the full list of Match properties later. Among the details you can get about a match from a Match object is information about the text matched within capturing parentheses. The Perl examples in earlier chapters used Perl's $1 variable to get the text matched within the first set of capturing parentheses. .NET offers two methods to retrieve this data: to get the raw text, you can index into a Match object's Groups property, such as with Groups(1).Value to get the equivalent of Perl's $1. (Note: C# requires a different syntax, Groups[1].Value, instead.) Another approach is to use the Result method, which is discussed starting on page 429. <IP_ADDRESS>. Group objectsThe Groups(1) part in the previous paragraph actually references a Group object, and the subsequent .Value references its Value property (the text associated with the group). There is a Group object for each set of capturing parentheses, and a "virtual group," numbered zero, which holds the information about the overall match. Thus, MatchObj.Value and MatchObj.Groups(0).Value are the samea copy of the entire text matched. It's more concise and convenient to use the first, shorter approach, but it's important to know about the zeroth group because MatchObj.Groups.Count (the number of groups known to the Match object) includes it. The MatchObj.Groups.Count resulting from a successful match with \s+(\d+) is two (the whole-match "zeroth" group, and the $1 group). <IP_ADDRESS>. Capture objectsThere is also a Capture object. It's not used often, but it's discussed starting on page 437. <IP_ADDRESS>.1. All results are computed at match timeWhen a regex is applied to a string, resulting in a Match object, all the results (where it matched, what each capturing group matched, etc.) are calculated and encapsulated into the Match object. Accessing properties and methods of the Match object, including its Group objects (and their properties and methods) merely fetches the results that have already been computed. |


{% extends parent_template|default:"user/base_user.html" %} {% block title %} {{ block.super }} | User Profile {% endblock %} {% block page_heading %} User Details {% endblock %} {% block page_subheading %} {% endblock %} {% block page_breadcrumb %}
Services for which this user has registered to receive notifications:
This user is currently not registered to receive notifications for any services. To register for notifications, the user should go to his/her profile page for details.
{% endfor %} {% endwith %}


- Bubble size reflects population size; Edge thickness reflects connectivity scores;
- Use the sliders to set plotting parameters;
- Click the canvas area to select a cell population and reposition it by dragging;
- Plot can be saved by right click on canvas area and choose 'Save as'; For higher image resolution increase canvas area, font size and scales before saving;


Please configure your name
Save to DropBox
Another action
Something else here
Separated link
Loading...
Group Chat
Private Chats
@fat
@mdo
Total Available:
Say It!
Hide offline users?
c
d
×
Modal title
One fine body…
×
Name your account
×
Please confirm
You are about to send a transaction to the value of
0.00
×
qrcode
×
Scan or Upload a QR Code
- scanning -


Ventana
Ventana is a client to help connecting and making requests to a SugarCRM REST API on multiple versions.
Currently this library provides only a Javascript connector. Please contribute to help us grow this client connector.
Ventana is a client to help connecting and making requests to a SugarCRM REST API on multiple versions.
Currently this library provides only a Javascript connector. Please contribute to help us grow this client connector.