Igor is a software engineer at Google. He is the lead of the AngularJS, practitioner of test driven development, open source enthusiast, hacker
Miško Hevery is the creator of AngularJS framework. He has passion for making complex things simple.
Brad is an engineering director at Google where he manages development of the AngularJS framework and Google's internal sales productivity products.
Douglas Crockford discovered the JSON Data Interchange Format. He is also the author of _JavaScript: The Good Parts_. He has been called a guru, but he is actually more of a mahatma.
Programming language geek working at Microsoft on TypeScript. Previously worked on Clang/LLVM at Apple and Chapel at Cray.
Google Developer Expert, MS Regional Director and MVP, Founder of Wahlin Consulting, Udemy and Pluralsight author.
Google Developer Expert, MS Regional Director, Adventures in Angular podcast, & Pluralsight author
Developer Advocate at Auth0. JS Lover. Creator of Restangular, angular-jwt and other OSS projects.
Deborah Kurata is a developer, speaker, author, Microsoft MVP and Google Developer Expert (GDE).
Scott is an instructor and engineer with a passion for UI. He currently works at Udacity in SF.
Developer Advocate at Braintree/PayPal focused on Web and UX, Surfer, Design Thinker and Father.
Software Engineer that strives to build beautiful things. Loves Ionic Framework, iOS, and Android.
Dr. Doris Chen is a Senior Technology Evangelist at Microsoft specialized in web technologies.
Engineer currently working on the Foundation team at ZURB. Chapter Leader of GDI: Oakland.
Independent developer, speaker & instructor focused on Azure, Office 365, Angular & the client dev.
Developer Advocate at Google working with the Polymer and Chrome teams - San Francisco, CA
A Senior Content Publishing Manager focused on developer content at Microsoft Learning, Paul has worked at Microsoft for 15 years, with a break to teach college for a couple of years.
Justin is a Lead Engineer at SoCreate building screenwriting software and a Pluralsight author.
Creator of @AngularClass, Open-Source contributor, Previously @Keychain, @HackReactor, @Launch
Yuri Takhteyev is the CTO of Rangle.io, a JavaScript consulting firm based out of Toronto.
Aysegul is a Senior Software Engineer and Google Developer Expert in Web Technologies and Angular
Ward is president of IdeaBlade consultants & makers of BreezeJS. GDE, MS MVP, Angular expert
Dr. Joonas Lehtinen is the founder of Vaadin project, a Java-based framework for building awesome web UI easily in Java.


KUTE.js can be used in most cases with native Javascript, but also with jQuery. So, before we head over to the more advanced examples, let's have a quick look at these two basic examples here. Note: the examples are posted on codepen.
When developing with native Javascript, a very basic syntax goes like this:
// this is the tween object, basically KUTE.method(element, from, to, options);
var tween = KUTE.fromTo('selector', {left: 0}, {left: 100}, {yoyo: true});
Now the tween object is created, it's a good time for you to know that via Native Javascript we always animate the first HTML element only, even if you're using a class selector. To create/control a tween for multiple elements such as querySelectorAll()
or getElementsByTagName()
, you need to do a for ()
loop. Now let's apply the tween control methods:
tween.start(); // starts the animation
tween.stop(); // stops current tween and all chained tweens animating
tween.pause(); // pauses current tween animation
tween.play(); // or tween.resume(); resumes current tween animation
tween.chain(tween2); // when tween animation finished, you can trigger the start of another tween
The demo for the above example is here.
KUTE.js includes a jQuery plugin to help you easily implement KUTE.js in your jQuery applications. When using jQuery, the syntax is familiar but works a bit different than plain Javascript due to jQuery's specific code standards. Let's have a look:
// this is the tween object, basically $('selector').KUTE(method, from, to, options);
var tween = $('selector').KUTE('fromTo', {top: 20}, {top: 100}, {yoyo: true});
We mentioned that the KUTE jQuery plugin is different, and here's why: the above code creates an Array
of objects for each HTML
element of chosen selector, while the Native Javascript creates a single object. For these objects we can now apply the tween control methods as follows:
$(tween).KUTE('start'); // starts the animation
$(tween).KUTE('stop'); // stops current tween and all chained tweens animating
$(tween).KUTE('pause'); // pauses current tween animation
$(tween).KUTE('play'); // or $(myTween).KUTE('resume'); resumes current tween animation
$(tween).KUTE('chain',myTween2); // when tween animation finished, you can trigger the start of another tween
The demo for the above example is here.
KUTE.js supports almost all about transform
as described in the spec: the 2D translate
, rotate
, skewX
, skewY
and scale
, as well as the 3D translateX
, translateY
, translateZ
, translate3d
, rotateX
, rotateX
, rotateY
, rotateZ
properties. Additionally it allows you to set a perspective
for the element or it's parent as well as a perpective-origin
for the element or it's parent.
In the next example the first box is moving to left 250px with translate
property, the second box is moving to the right by 200px using translateX
and the third box is moving to the bottom using translate3d
. The last box also uses translate3d
but requires a perspective
value for the animation on the Z axis to be effective.
var tween1 = KUTE.fromTo('selector1',{translate:0},{translate:-250}); // or translate:[x,y] for both axis
var tween2 = KUTE.fromTo('selector2',{translateX:0},{translateX:200});
var tween3 = KUTE.fromTo('selector3',{translate3d:[0,0,0]},{translate3d:[0,100,0]});
var tween4 = KUTE.fromTo('selector4',{translate3d:[0,0,0]},{translate3d:[0,0,-100]},{parentPerspective: 100});
And here is how it looks like:
As you can see in your browsers console, for all animations translate3d
is used, as explained in the features page. Also the first example that's using the 2D translate
for both vertical and horizontal axis even if we only set X axis. You can download this example here.
Remember: stacking translate
and translate3d
together may not work and IE9 does not support perspective
.
Next we're gonna animate 4 elements with one axis each element. Unlike translations, KUTE.js does not support rotate3d
.
var tween1 = KUTE.fromTo('selector1',{rotate:0},{rotate:-720});
var tween2 = KUTE.fromTo('selector2',{rotateX:0},{rotateX:200});
var tween3 = KUTE.fromTo('selector3',{rotateY:0},{rotateY:160},{perspective:100});
var tween4 = KUTE.fromTo('selector4',{rotateZ:0},{rotateZ:360});
And here is how it looks like:
The rotateX
and rotateY
are 3D based rotations, so they require a perspective in order to make the browser render proper 3D layers, but in the example they animate different because only the second, Y axis, uses a perspective
setting. The rotation on Z axis does not require a perspective. Unlike translations, you can stack all axis rotation for your animation, but we will see that in a later example. You can download this example here.
KUTE.js supports skewX
and skewY
so let's animate the two. Since they are 2D transformations, IE9 supports skews.
var tween1 = KUTE.fromTo('selector1',{skewX:0},{skewX:20});
var tween2 = KUTE.fromTo('selector2',{skewY:0},{skewY:45});
And here is how it looks like:
You can download this example here.
The current specification does not support animating different transform properties with multiple tween objects at the same time, you must stack them all together into a single object. See the example below:
var tween1 = KUTE.fromTo('selector1',{rotateX:0},{rotateX:20}).start();
var tween2 = KUTE.fromTo('selector1',{skewY:0},{skewY:45}).start();
If you check the test here, you will notice that only the skewY
is going to work and no rotation. Now let's do this properly.
var tween1 = KUTE.fromTo(
'selector1', // element
{translateX:0, rotateX:0, rotateY:0, rotateZ:0}, // from
{translateX:250, rotateX:360, rotateY:15, rotateZ:5}, // to
{perspective:400, perspectiveOrigin: 'center top'} // trasform options
);
var tween2 = KUTE.fromTo(
'selector2', // element
{translateX:0, rotateX:0, rotateY:0, rotateZ:0}, // from values
{translateX:-250, rotateX:360, rotateY:15, rotateZ:5}, // to values
{parentPerspective:400, parentPerspectiveOrigin: 'center top'} // trasform options
);
Now you can see we are using the specific transform options, the first tween object uses these settings for an element and the second for its parent.
This example also shows the difference between an element's perspective and a parent's perspective. You can download the above example here.
I'm gonna insist on the tween chaining feature a bit because when we run animations one after another we are kinda expecting a certain degree of continuity. As explained before, the best solution is the .to()
method because it has the ability to stack properties found in the element's inline styling, mostly from previous tween animation, and use them as start values for the next tween. It also transfers unchanged values to values end for that same reason. OK now, let's see a side by side comparison with 3 elements:
What's this all about?
.fromTo()
object, we are doing things normally, we would expect them to work properly but due to the nature of the transforms, this is what it does.fromTo()
object, but using proper values for all tweens at all times, so we fixed that glitch.to()
method, and does the chaining easier for most properties, especially for transform
When coding transformation chains I would highly recommend:
translate:[x,y]
and translate3d:[x,y,z]
; for instance using translate:150
or translateX:150
would mean that all other axis are 0;.fromTo()
method is fastest, so you will have more work, but can potentially minimize or eliminate any syncronization issues that may occur, as explained in the features page;In the example below we are doing some animation on the border-radius
property. The first box animates all corners, while the other boxes animate each corner at a time. A quick reminder, for radius properties KUTE.js supports px
, %
and text properties' units such as em
or rem
.
KUTE.to('selector1',{borderRadius:'100%'}).start();
KUTE.to('selector2',{borderTopLeftRadius:'100%'}).start();
KUTE.to('selector3',{borderTopRightRadius:'100%'}).start();
KUTE.to('selector4',{borderBottomLeftRadius:'100%'}).start();
KUTE.to('selector5',{borderBottomRightRadius:'100%'}).start();
And here is how it looks like:
A quick important reminder here is that KUTE.js does not support shorthands for radius properties. Also early implementations by Mozilla's Firefox browser like -moz-border-radius-topleft
are not supported because they were depracated with later versions. Download this example here.
While KUTE.js supports almost all the box model properties, the next example will animate most common properties, we will focus mostly on size, spacing and position. Other properties such as minWidth
or maxHeight
require a more complex context and we won't insist on them.
var tween1 = KUTE.to('selector1',{width:200});
var tween2 = KUTE.to('selector1',{height:300});
var tween3 = KUTE.to('selector1',{left:250});
var tween4 = KUTE.to('selector1',{top:100});
var tween5 = KUTE.to('selector1',{padding:'5%'});
We're gonna chain these tweens and start the animation. You can download this example here.
TIP: the width
and height
properties used together can be great for scale
animation fallback on images for legacy browsers.
OK here we're gonna do a cool example for text properties. Basically the below code would work:
var tween1 = KUTE.to('selector1',{fontSize:'200%'});
var tween2 = KUTE.to('selector1',{line-height:24});
var tween3 = KUTE.to('selector1',{letter-spacing:50});
But our example will feature some more than just that. We're gonna animate each character of a given string, with a small delay. The heading will animate fontSize
and letterSpacing
properties for each character while the button will animate fontSize
and lineHeight
properties. Watch this:
TIP: this should also work in IE8 as a fallback for scale animation for text. It's not perfect, can be improved for sure, but if it's a must, this would do. Download this example here.
The next example is about animating color properties. As for example, check these lines for reference.
KUTE.to('selector1',{color:'#069'}).start();
KUTE.to('selector1',{backgroundColor:'#069'}).start();
KUTE.to('selector1',{borderColor:'rgb(25,25,25)'}).start();
KUTE.to('selector1',{borderTopColor:'#069'}).start();
KUTE.to('selector1',{borderRightColor:'rgba(25,25,25,0.25)'}).start();
KUTE.to('selector1',{borderBottomColor:'#069'}).start();
KUTE.to('selector1',{borderLeftColor:'#069'}).start();
Let's get some animation going. Download the example here.
A quick reminder: you can also use RGB
or RGBA
, but the last one is not supported on IE8 and it will fallback to RGB
.
This property allows you to animate the rectangular shape of an element that is set to position:absolute
. In CSS this property works like this clip: rect(top,right,bottom,left)
forming a rectangular shape that masks an element making parts of it invisible.
KUTE.to('selector',{clip:[0,150,100,0]}).start();
A quick example here could look like this:
Note that this would produce no effect for elements that have overflow:visible
style rule. Download this example here.
Another property we can animate with KUTE.js is backgroundPosition
. Quick example:
KUTE.to('selector1',{backgroundPosition:[0,50]}).start();
A working example would look like this:
Download this example here.
Another property we can animate with KUTE.js is scrollTop
. I works for both the window and any scrollable object. Quick example:
KUTE.to('selector',{scroll:450}).start(); // for a scrollable element
KUTE.to('window',{scroll:450}).start(); // for the window
A working example would work like this. Scroll works with IE8+ and is a unitless property even if these scroll distances are measured in pixels.
Unlike the examples hosted on Codepen, most examples here should be supported on legacy browsers. The next example is going to explain more details about how to target browsers according to their supported properties, so stick around. So, if your target audience uses legacy browsers in a significant percent, check to have the proper polyfills and also make sure you target your browsers, here's a complete reference. Now we are ready:
// grab an HTML element to build a tween object for it
var element = document.getElementById("myElement");
// check for IE legacy browsers
var isIE = (new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null) ? parseFloat( RegExp.$1 ) : false;
var isIE8 = isIE === 8;
var isIE9 = isIE === 9;
// most browsers have specific checks, so make sure
// you include all you need for your target audience
// create values and options objects
var startValues = {};
var endValues = {};
var options = {};
// here we define properties that are commonly supported
startValues.opacity = 1;
endValues.opacity = 0.2;
startValues.backgroundColor = '#CDDC39';
endValues.backgroundColor = '#ec1e71';
// here we define the properties according to the target browsers
if (isIE8) { // or any other browser that doesn"t support transforms
startValues.left = 0;
endValues.left = 250;
} else if (isIE9) { // or any other browser that only support 2d transforms
startValues.translate = 0; // 2d translate on X axis
endValues.translate = 250;
startValues.rotate = -180; // 2d rotation on Z axis
endValues.rotate = 0;
startValues.scale = 1; // 2d scale
endValues.scale = 1.5;
} else { // most modern browsers
startValues.translate3d = [0,0,0]; //3d translation on X axis
endValues.translate3d = [250,0,0];
startValues.rotateZ = -180; // 3d rotation on Z axis
endValues.rotateZ = 0;
startValues.rotateX = -20; // 3d rotation on X axis
endValues.rotateX = 0;
startValues.scale = 1; // 2d scale
endValues.scale = 1.5;
options.perspective = 400; // 3d transform option
}
// common tween options
options.easing = "easingCubicOut";
options.duration = 2500;
options.yoyo = true;
options.repeat = 1;
// the cached object
var myTween = KUTE.fromTo(element, startValues, endValues, options);
// trigger buttons
var startButton = document.getElementById('startButton'),
stopButton = document.getElementById('stopButton'),
playPauseButton = document.getElementById('playPauseButton');
// add handlers for the trigger buttons
startButton.addEventListener('click', function(e){
e.preventDefault();
if (!myTween.playing) { myTween.start(); } // only start the animation if hasn't started yet
}, false);
stopButton.addEventListener('click', function(e){
e.preventDefault();
if (myTween.playing) { myTween.stop(); } // only stop the animation if there is any
}, false);
playPauseButton.addEventListener('click', function(e){
e.preventDefault();
if (!myTween.paused && myTween.playing) {
myTween.pause(); playPauseButton.innerHTML = 'Resume';
} else {
myTween.resume();
playPauseButton.innerHTML = 'Pause';
}
}, false);
Let's explain this code a bit. KUTE.js gives you the internal variables myTween.playing
and myTween.paused
(both true/false) to help you easily manage the tween control methods all together as in this example here. As said before, KUTE.js version 0.9.5 doesn't stat animating by default, for all the examples on this page you have to start it yourself, unlike their versions hosted on Codepen.
START
button will use the .start()
method and the animation starts;STOP
button will use the .stop()
method and stops the animation; after this the, animation can only be started againPAUSE
button will use the .pause()
method and pauses the animation; this also changes the button's text and functionality;RESUME
button will use the .resume()
method and resumes the animation; this reverses the button's initial state;!myTween.playing
and myTween.paused
conditions because you could end up with errors.


Safety is usually a priority in the deployment of a learning and control algorithm to real-world systems. For a physical system (agent), safety is normally given in various states and inputs constraints, which must not be violated by the algorithm at any stage of the learning and control process, otherwise will cause irrevocable or unacceptable failure/damage/loss. Those systems are referred to as safety-critical. The constraints in a safety-critical system can include the immediate ones, which are directly imposed on the system state and input at certain/all time instances, and the long-term ones, which are defined on the trajectory of system states and inputs over a long time period. Compared to the abundant results that focus on system optimality, systematic and principled treatments for safety-critical learning and control problems seem largely insufficient, particularly in the following gaps (see the related work section in the paper. First, existing safety strategies are either too conservative, which may restrict the task performance, or violation-tolerable, which only pursues the near-constraint guarantee and thus are not strictly constraint-respecting. Second, a generic safety paradigm capable of handling different types of constraints, including system state and input (or mixed), immediate, or/and long-term constraints, is still lacked. Third, some existing safety strategies suffer from huge computational- and data- complexity, difficult to be integrated into any differentiable programming frameworks to solve large-scale learning and continuous control tasks.
To address the above research gaps, this paper aims to develop a new theoretical and algorithmic framework for safe learning and control with the following key abilities.
This theme supports rendering beautiful math in inline and display modes using MathJax 3 engine. You just need to surround your math expression with $$
, like $$ E = mc^2 $$
. If you leave it inside a paragraph, it will produce an inline expression, just like \(E = mc^2\).
To use display mode, again surround your expression with $$
and place it as a separate paragraph. Here is an example:
You can also use \begin{equation}...\end{equation}
instead of $$
for display mode math.
MathJax will automatically number equations:
\begin{equation} \label{eq:caushy-shwarz} \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) \end{equation}
and by adding \label{...}
inside the equation environment, we can now refer to the equation using \eqref
.
Note that MathJax 3 is a major re-write of MathJax that brought a significant improvement to the loading and rendering speed, which is now on par with KaTeX.


This plugin integrates by default with Twitter bootstrap using badges to display the maximum length of the field where the user is inserting text.
This plugin uses the HTML5 attribute "maxlength" to work.
The indicator badge show up on focusing on the element, and disappear when the focus is lost.
Configurable options
- alwaysShow: if true the threshold will be ignored and the remaining length indication will be always showing up while typing or on focus on the input. Default: false.
- threshold: this is a number indicating how many chars are left to start displaying the indications. Default: 10.
- warningClass: it's the class of the element with the indicator. By default is the bootstrap "label label-success" but can be changed to anything you'd like.
- limitReachedClass: it's the class the element gets when the limit is reached. Default is "label label-important label-danger" (to support Bootstrap 2 and 3).
- separator: represents the separator between the number of typed chars and total number of available chars. Default is "/".
- preText: is a string of text that can be outputted in front of the indicator. preText is empty by default.
- postText: is a string outputted after the indicator. postText is empty by default.
- showMaxLength: if false, will display just the number of typed characters, e.g. will not display the max length. Default: true.
- showCharsTyped: if false, will display just the remaining length, e.g. will display remaining lenght instead of number of typed characters. Default: true.
- placement: is a string, define where to output the counter. Possible values are: bottom ( default option ), left, top, right, bottom-right, top-right, top-left, bottom-left and centered-right.
- message: an alternative way to provide the message text, i.e. 'You have typed %charsTyped% chars, %charsRemaining% of %charsTotal% remaining'. %charsTyped%, %charsRemaining% and %charsTotal% will be replaced by the actual values. This overrides the options separator, preText, postText and showMaxLength.
- utf8: if true the input will count using utf8 bytesize/encoding. For example: the '£' character is counted as two characters.
- twoCharLinebreak: count linebreak as 2 characters to match IE/Chrome textarea validation.
- customMaxAttribute: allows a custom maxlength attribute to allow exceeding maxlength. 'overmax' class gets added when exceeded to allow user to implement form validation.
Examples
Basic implementation:
$('input[maxlength]').maxlength();
Change the threshold value:
$('input.className').maxlength({
threshold: 20
});
An example with some of the configurable options:
$('input.className').maxlength({
alwaysShow: true,
threshold: 10,
warningClass: "label label-info",
limitReachedClass: "label label-warning",
placement: 'top',
preText: 'used ',
separator: ' of ',
postText: ' chars.'
});
The same example using the message option:
$('input.className').maxlength({
alwaysShow: true,
threshold: 10,
warningClass: "label label-info",
limitReachedClass: "label label-warning",
placement: 'top',
message: 'used %charsTyped% of %charsTotal% chars.'
});
An example allowing user to enter over max characters.
Sample HTML element:
<textarea class="form-control" id="xyz" name="xyz" maxlength="10"></textarea>
// Setup maxlength
$('.form-control').maxlength({
alwaysShow: true,
validate: false,
allowOverMax: true
});
// validate form before submit
$('form').on('submit', function (e) {
$('.form-control').each(
function () {
if ($(this).hasClass('overmax')) {
alert('prevent submit here');
e.preventDefault();
return false;
}
}
);
});
Changelog
1.5.7
1.5.6
- Added over maxlength functionality with customMaxAttribute
- Added twoCharLinebreak option
1.5.5
- Implemented input event rather than keydown to improve usability
- Fixed jshint, jscs errors
1.5.4
- When an input with associated maxlength element is removed, maxlength is also removed.
1.5.3
- Fixed #40, error on resize event.
1.5.2
- Fixed #44 (pasted text in can cause it to go over the max length)
1.5.1
- Added self protection of multiple focus events
- Added back detection of window resizing
1.5.0
- Removed window.resize event
- Maxlength is created and destroyed each time
- Fixed Doesn't update the limit after input's maxlength attribute was changed #31
- Added Gruntfile
- Added qunit unit tests
1.4.2
- Fixed issue with counting when the user moves with shift+tab keyboard shortcut.
- Replaced the warningClass limitReachedClass options to use labels rather than badges for Bootstrap 3.0 better compatibility.
1.4.1
- Added support for TAB key when the maxlength is reached.


{% extends "splunkdj:base_with_app_bar.html" %} {% load splunkmvc %} {% block title %}Post-process Searches - Web Framework Toolkit{% endblock title %} {% block css %} {% endblock css %} {% block content %}
This example shows how to use post-process searches. First, a single main search powers one view. Then, two post-process searches based on the main search power additional views. You can create PostProcessManagers using JavaScript and Django template tags.


A covalent bond is a chemical bond that involves the sharing of two non-metallic atoms. Covalent bonding is the stable balance of repulsive and attractive forces between atoms when they share electrons. Covalent bond is the atoms within a molecule are joined together. In the above diagram, the two green X is covalent bonds, which they are shared electrons.


WordFinderService
scrabblewords
A Service responsible for finding the possible words Uses Underscore
Finds the possible words from a selection of letters
A collection of letters
A list of valid words
return WordFinderService.makeWordFinder(_getLetters(hand), service.wordList);
Initialises and returns a new WordFinderService
The Lodash Service
WordFinderService The Service with it's method calls


This is a demo page for scrollWatcher.
This shows how to use the active and hasBeenActive features of scrollWatcher.


Tomcat is an open-source project that supports servlet container and the basic Web server functions.
Apache is a full-fledge Web server. To enable it to support servlet/JSP technologies, a Tomcat Web server is usually integrated to Apache and works behind it.


{% extends 'base.html' %} {% block title %}{{ artist }} - artdock{% endblock %} {% block content %}
You don't have any artworks. Why not post some?
{% else %}No artworks yet.
{% endif %}{% endif %}You don't have any collections yet. Why not create one?
{% else %}No collections yet.
{% endif %}{% endif %} {% endblock %}


Quick adoption adn minimal training enabled by our user-centric design
-
Request for Technical Service
Let us know about any of your technical
questions - from usatge and appication to
service and calibration. -
Request for Product Demostration
Worldwide demonstration centers are available
for you to better understand the functionality
and usability of our products. -
Request for Sample Analysis
Send us your samples and our application
engineers will help you figure out if our solu-
tions are right for you.
Latest News
-
2011 June 15
ARDIC Instruments Booth at NANO TECH 2012 in Japan
Abnova Corporation and Ardic Instruments announced today the collaboration and introduction of a label-free, protein detection platform based on a new fiber-optic particle, plasmon resonance (FO-PPR) system. This new protein platform opens up several avenues of applications ranging from protein quantification to protein-protein/protein-small molecule interactions to kinetic measurements. Most importantly, the FO-PPR technology addresses an unmet need for higher sensitivity, protein quantification using a stand-alone, capturing antibody. In contrast, the conventional sandwich ELISA platform requires both capturing and detection antibody for protection. Abnova Corporation and Ardic Instruments announced today the collaboration and introduction of a label-free.
read more... -
2011 June 15
ARDIC Instruments Booth at NANO TECH 2012 in Japan
Abnova Corporation and Ardic Instruments announced today the collaboration and introduction of a label-free, protein detection platform based on a new fiber-optic particle, plasmon resonance (FO-PPR) system. This new protein platform opens up several avenues of applications ranging from protein quantification to protein-protein/protein-small molecule interactions to kinetic measurements. Most importantly, the FO-PPR technology addresses an unmet need for higher sensitivity, protein quantification using a stand-alone, capturing antibody. In contrast, the conventional sandwich ELISA platform requires both capturing and detection antibody for protection. Abnova Corporation and Ardic Instruments announced today the collaboration and introduction of a label-free.
read more... -
2011 June 15
ARDIC Instruments Booth at NANO TECH 2012 in Japan
Abnova Corporation and Ardic Instruments announced today the collaboration and introduction of a label-free, protein detection platform based on a new fiber-optic particle, plasmon resonance (FO-PPR) system. This new protein platform opens up several avenues of applications ranging from protein quantification to protein-protein/protein-small molecule interactions to kinetic measurements. Most importantly, the FO-PPR technology addresses an unmet need for higher sensitivity, protein quantification using a stand-alone, capturing antibody. In contrast, the conventional sandwich ELISA platform requires both capturing and detection antibody for protection. Abnova Corporation and Ardic Instruments announced today the collaboration and introduction of a label-free.
read more...
Upcoming Events
-
Jun. 19 - 21, 2012 Taipei, Taiwan
-
Jun. 19 - 21, 2012 Taipei, Taiwan


--- layout: default --- {% include post.html %} {% include social-share.html %} {% include disqus.html %}


Your browser doesn't support HTML5 audio! :o(
Toggle navigation
Carlin's Radio
Poopular
Soundtracks
Electro
90s Shtuff
Classic Rock
Mixin' it Up
_
SEND


API explorer
Config
Request base (with "/" at the end)
Authentication
JSON Web Token
Set yourself
Request JWT
Email
Password
Request JWT token
Request builder
Method
GET
POST
PUT
DELETE
OPTIONS
Endpoint
Data (for POST)
Extra options
Send JWT
Content-Type: application/json
Send data (for POST)
Send request
Response (beautified if JSON)
Log to console as JSON
Log
All
Request details
Timestamp
Request URL
Request method
Request
Content-Type
Request data
Resonse text
Response status
Status text


WAVE’s Executive Team is comprised of engineers, technology experts and business professionals dedicated to bringing to market the latest innovations in wireless power technology for vehicle applications.
The Power Electronics Engineering Team designs and builds WAVE’s wireless power systems, including all testing, troubleshooting, and integration. The team also works on research and development projects to expand the scope of WAVE’s technology.
The Software Engineering Team designs, develops, and validates WAVE’s advanced charging control algorithms in a real-time embedded environment.
The Mechanical Engineering Team creates and implements WAVE’s mechanical system design and validation specifications, as well as assisting with technology implementation.
The Manufacturing Engineering Team oversees all project management, including project schedule, installation, and customer service.


Welcome to the ZeldaPlay character tracker! This web application is meant for you to be able to create, save, and track your ZeldaPlay's character's stats and skills! This application is currently still a work in progress, and may not look like the finished product. Do keep in mind that the dev team is small and the ambitions of the project are very, very large. I hope you do enjoy the use of the character tracker! Now, on to adventuring!
In ZeldaPlay, your race strongly determines your class. While the ability to allocate skill points to weapons makes it easier to "multi-class", and while classes do not entirely exist, the race you chose to play very much plays a factor into the kind of class you will play to. For example: a Sheikah will almost always play a rogue-like character. Very rarely would you find a Sheikah player charging into battle with a great sword or tower shield expecting to single-handedly destroy the opposing forces. Instead, that would normally be a Goron wielding a hammer.
Note: While your race does not define your class, it very much plays a factor into what kind of character you should probably play. It is a suggestion, not a rule. While you probably will not find the aforementioned Sheikah, it is not entirely impossible.Your attribute points are your stat points. These help you determine your Strength, Dexterity, and other attributes about your character. To describe each of the attributes, here is an example with tomatoes:
Strength:
The ability to crush a tomato.Dexterity:
The ability to dodge a tomato.Constitution:
The ability to eat a bad tomato.Intelligence:
Knowing that a tomato is a fruit.Wisdom:
Knowing not to put a tomato in a fruit salad.Charisma:
Being able to sell a tomato based fruit salad.Your skills are your abilities. In every day life, in combat, in knowledge, magic, thievery: they are your tools of the trade so to speak. Most of the time your skills will play towards your character. Most Gerudo will not have the initial ability to Bluff or Ride, but they will always know how to intimidate anyone they need to and how to handle their weapons. When you create a character you are given 5, 10, 15, or 20 skill points based on a randomly generated number (normally the roll of a d4 die). From there you can put those points into your regular skills, weapon skills, or magic skills. Keep in mind as well that all skills, whether you are trained in them or not, are available to all characters. This just means that a Fairy that wants to use intimidate will have a much harder time than the Gerudo from earlier. If you can't get all the skills you want, don't worry; you gain 10 skill points every level up along with an extra attribute point!
Note: Skill points are shared across Skills, Weapons, and Magic. Spend them wisely.


Before Change
env_name = env_name.replace(domain, "").strip("-")
tasks = TASKS_BY_DOMAIN_BY_UNIVERSE[universe][domain]
task = next((task for task in tasks if task in env_name), DEFAULT_TASK)
return domain, task
After Change
env_name = env_name.replace(domain, "").strip("-")
tasks = TASKS_BY_DOMAIN_BY_UNIVERSE[universe][domain]
task = next((task for task in tasks if task == env_name), None)
if task is None:
matching_tasks = [task for task in tasks if task in env_name]


Dematerializer - Blogging for developers
Dematerializer (Source)
Inspired by Ghost, Dematerializer was my submission to Static Showdown, a 48hr hackathon with a twist; the app must be static (i.e. no custom back-end). At first it seemed like a huge restriction, however after exploring services like Firebase (a websockets enabled database-as-a-service) I realized that almost anything was possible.
What makes Dematerializer different than other blogging platforms is that posts are written entirely in Markdown (with an auto-scrolling instant preview pane), and that it is completely free and open so that anyone can start blogging instantly. It is similar to the Ghost platform, only far simpler and completely free.
I ended up using AngularJS, Firebase, Gulp, Pure CSS, Google Web Fonts, and a few libraries (lodash.js, marked.js, highlight.js, spin.js). The code is pretty standard AngularJS, and for the most part follows best practices. This was my first time using Gulp (instead of Grunt), and I highly recommend it. When I wrote about re-writing Zoggle in AngularJS, I posted my Gruntfile which minified my AngularJS source. Looking at the Gulp equivalent, it's clear how powerful Gulp can be:
// Concatenate & Minify JS
gulp.task('scripts', function() {
gulp.src('./app/js/*.js')
.pipe(concat('all.js'))
.pipe(ngmin())
.pipe(gulp.dest('./app/dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./app/dist'));
});
As for the front-end code itself, the Firebase service I wrote for the application provides the core functionality. This code allows users to create, read, update, and delete posts that they own:
.service('DBService', function () {
this.db = new Firebase('https://glaring-fire-7868.firebaseio.com/')
this.postDB = this.db.child('posts')
this.createPost = function (post, uid, cb) {
this.postDB.child(uid).child(post.id).set(post, cb)
}
this.findPost = function (postId, uid, cb) {
this.postDB.child(uid).child(postId).once('value', cb)
}
this.posts = function (uid, cb) {
if (!cb) {
cb = uid
uid = null
}
if (uid) {
this.postDB.child(uid).once('value', cb)
} else {
this.postDB.once('value', cb)
}
}
this.removePost = function (postId, uid, cb) {
this.postDB.child(uid).child(postId).remove(cb)
}
})
Firebase uses a simple json object to define data-access for users. Here was mine:
{
"rules": {
".read": true,
"posts": {
"$user": {
".read": true,
".write": "$user == auth.username",
"$post": {
".read": true,
".write": "data.child('$user').val() == auth.username"
}
}
}
}
}
Finally, I used CSS Flexible boxes, which are an extremely powerful way to have flexible sized content using only CSS. You can see them in action by re-sizing the application, which is quite usable on mobile despite not optimizing for it.


Sunoco Sun Oil Company,Ltd. Trusty Kojimachi Bldg.3-4 Kojimachi, Chiyoda-ku,Tokyo. 102-0083 Japan. www.sunoco.co.jp/about/index.html CASHIER NEEDED I am Mr. HIroshi Iguchi, President of Japan Sun Oil Company, Ltd. Japan Sun Oil Company, Ltd. is a subsidiary of the world renown U.S.multi-energy producer Sunoco Inc. in Japan and Asian regions and are producing and marketing not only high quality specialty lubricants but also petroleum and energy products. We specialized in the Refrigeration Oils, Rubber Process Oils, metalworking Oils, Industrial Lubricants,Automotive Lubricants, etc. We are searching for representatives who can help us establish a medium of getting to our customers in the Canada/America and other nearby countries as well as making payments through you to us. Sunoco, Inc was established in 1966, Entering into a new era where the demand for continuous improvement and expansion is far beyond what was perceived and required just a few years ago, corporate entities are constantly striving for perfection, knowing all too well that tomorrow will be yet another challenge. With all the new horizons that unfold before us, the difficulty of venturing out into the unknown requires preparation, experience, creativity and motivation. We, Japan Sun Oil Company Ltd. take on the challenge and look to the expansion of our horizons with pleasure. You do not have to leave your present job for this one because this job offer will be on a part time basis as it comes once in a while and remuneration is on a percentage basis of 10% of the total amount you receive from my customers at any time on my behalf. The reason why I seek your assistance is that American,Canadian, and most asia countries checks take a long time to clear here in Japan. Thereby holding business down for my associates and me. Now I already have customers who are ready to remit cash to me. Please to facilitate the conclusion of this transaction if accepted, do send me promptly the following information below by My private at<EMAIL_ADDRESS>NAME........................................... RESIDENTIAL ADDRESS.................. AGE:.............................................. STATUS:......................................... STATE/COUNTRY............................. TEL/FAX.......................................... NUMBERS........................................ COMPANY NAME............................... OCCUPATION.................................... We would be glad to have you as one of our esteemed Representative in your location and be rest assured that adequate pecuniary and lucrative compensations will be given and other benefits follows. Upon appointment, you are allowed the opportunity of determining the method or mode through which you would be paid for your services as our Representative in any of these Regions. Regards, HIroshi Iguchi President & CEO Sun Oil Company, Ltd. TEL:+81-3-5460-3939


public class EventManager
extends java.lang.Object
Event
's.
The EventManager
also deals with the reading of data
and the formatting of the data to be written.
The EventManager
also deals with processing
requests such as ticket deductions for Event
s.
Event
| Constructor and Description |
|---|
EventManager()
Creates the base
EventManager for future
adaptations and alterations. |
EventManager(StorageManager storageManager)
Creates an
EventManager with a specified
StorageManager for reading and writing data
too. |
| Modifier and Type | Method and Description |
|---|---|
void |
addEvents(java.util.HashMap<java.lang.Integer,Event> bookableEvents)
Adds a
HashMap of events to the current HashMap
of events for the current instance of EventManager . |
void |
addEvents(java.lang.Integer eventID,
Event bookableEvent)
Adds an event ID and bookable event to the current
HashMap
of events for the current instance of EventManager . |
java.util.HashMap<java.lang.Integer,Event> |
getBookableEvents() |
StorageManager |
getStorageManager() |
void |
setBookableEvents(java.util.HashMap<java.lang.Integer,Event> bookableEvents) |
void |
setStorageManager(StorageManager storageManager)
Provides the
EventManager with a StorageManager . |
void |
setupAndSetEvents(StorageManager storageManager,
java.lang.String key)
Sets up the events with a specified
StorageManager . |
void |
setupAndSetEvents(java.lang.String key)
Sets up the events from the current
StorageManager
specified. |
void |
subtractTickets(java.lang.Integer eventID,
java.lang.Integer numberRequested)
Subtracts the tickets requested from a client and saves the data internally
(and to a file if there is a correctly setup
StorageManager set for
the current EventManager ). |
void |
subtractTickets(java.lang.Integer eventID,
java.lang.Integer numberRequested,
StorageManager storageManager)
Subtracts the tickets requested from a client and saves the data internally
(and to a file if there is a correctly setup
StorageManager
specified). |
public EventManager(StorageManager storageManager)
EventManager
with a specified
StorageManager
for reading and writing data
too.storageManager
- The StorageManager
that
will provide details such as filename and provide the
ability to save new data.public EventManager()
EventManager
for future
adaptations and alterations.public java.util.HashMap<java.lang.Integer,Event> getBookableEvents()
public void setBookableEvents(java.util.HashMap<java.lang.Integer,Event> bookableEvents)
public StorageManager getStorageManager()
public void setStorageManager(StorageManager storageManager)
EventManager
with a StorageManager
.
Allows for the current EventManager
to setup its
events using the file provided by the StorageManager
.storageManager
- The StorageManager
with a
specified file that would be used in reading and writing.public void setupAndSetEvents(java.lang.String key)
StorageManager
specified.key
- The key under which the events array is stored underpublic void setupAndSetEvents(StorageManager storageManager, java.lang.String key)
StorageManager
.storageManager
- The StorageManager
which it
will read the data fromkey
- The under which the events array is stored underpublic void subtractTickets(java.lang.Integer eventID, java.lang.Integer numberRequested) throws CouldNotDeductTicketsException
StorageManager
set for
the current EventManager
).eventID
- ID of the event that is being requested.numberRequested
- Number of tickets that is requested for said event.CouldNotDeductTicketsException
- Thrown when tickets quantity for an
event could not be altered furtherpublic void subtractTickets(java.lang.Integer eventID, java.lang.Integer numberRequested, StorageManager storageManager) throws CouldNotDeductTicketsException
StorageManager
specified).eventID
- ID of the event that is being requested.numberRequested
- Number of tickets that is requested for said event.storageManager
- The StorageManager
from which it will save
data to.CouldNotDeductTicketsException
- Thrown when tickets quantity for an
event could not be altered furtherpublic void addEvents(java.lang.Integer eventID, Event bookableEvent)
HashMap
of events for the current instance of EventManager
.eventID
- Event ID for the event to be added.bookableEvent
- Event to be added to the HashMap
.public void addEvents(java.util.HashMap<java.lang.Integer,Event> bookableEvents)
HashMap
of events to the current HashMap
of events for the current instance of EventManager
.bookableEvents
- HashMap
of events to add to
the HashMap
.


{% extends "docframe.html" %} {% block body %}
Behind the pathod and pathoc command-line tools lurks libpathod, a powerful library for manipulating and serving HTTP requests and responses. The canonical documentation for the library is in the code, and can be accessed using pydoc.


DriveShare
Earn Money
Status: In Development
Website: DriveShare.org
Code: GitHub
Whitepaper: Coming Soon
Group B & C are rewarded coins for the test farming.
Group
Crowdsale participants
holding over 10,000 SJCX.
Rewarded: No
Testing: Finished
We are processing the results of this test group.Group
Crowdsale participants
and new members. Learn more.
Rewarded: Yes
Testing: Live
Tip: Sign up for our newsletter to stay up to date.Group
Anyone holding
10,000 SJCX* or more.
Rewarded: Yes
Testing: Soon
* Test Group C details are subject to change.You can create a wallet and address for SJCX at Counterwallet.
Visit these exchanges to buy your StorjcoinX.
If you need step-by-step guide, watch the tutorial video.
Don't forget to sign up to our newsletter to receive important information on early access to the Storj applications.
Don’t hesitate to join our Slack,
check our open-source code at GitHub,
take a peek at our 60 second video,
send us an email, read the Storj blog
and follow or connect with us.


|
| self | topsDataLogPanel (varargin) |
| | Make a new panel in the given figure. More...
|
| |
| | selectItem (self, object, event) |
| | Set the GUI current item group from a clicked-on graphics object. More...
|
| |
| | editGroupIsPlotted (self, table, event) |
| | Set which data groups are selected from uitable checkboxes. More...
|
| |
| | setGroupIsPlotted (self, isPlotted) |
| | Select all groups to plot in the raster. More...
|
| |
| | setMatchingGroupIsPlotted (self, expression) |
| | Choose groups to plot in the raster that match an expression. More...
|
| |
| | setTimeRange (self, range) |
| | Set the time range for the raster plot. More...
|
| |
| self | topsPanel (parentFigure) |
| | Make a new panel in the given figure. More...
|
| |
|
| delete (self) |
| | Clear references to graphics and handle objects.
|
| |
| | setBaseItem (self, baseItem, baseItemName) |
| | Choose the item to represent. More...
|
| |
| | setCurrentItem (self, currentItem, currentItemName) |
| | Choose the current item. More...
|
| |
|
| refresh (self) |
| | Refresh the panel's contents.
|
| |
|
| Property | isLocked = false |
| | The bottom-level container for Tower of Psych GUIs. More...
|
| |
|
Property | isBaseItemTitle = false |
| | whether to show a title for baseItem
|
| |
◆ topsDataLogPanel()
Make a new panel in the given figure.
- Parameters
-
Creates a new topsDataLogPanel. parentFigure must be a topsFigure object, otherwise the panel won't display any content.
◆ selectItem()
| selectItem |
( |
self |
, |
|
|
object |
, |
|
|
event |
|
|
) |
| |
Set the GUI current item group from a clicked-on graphics object.
- Parameters
-
| object | graphics object that was clicked |
| event | struct of data about the selection event |
Sets the current item for the parent figure, based on the a data point or axes that was clicked on.
◆ editGroupIsPlotted()
| editGroupIsPlotted |
( |
self |
, |
|
|
table |
, |
|
|
event |
|
|
) |
| |
Set which data groups are selected from uitable checkboxes.
- Parameters
-
| table | uitable object editing checkboxes |
| event | struct of data about the edit event |
Updates which data groups are selected, when a user clicks a uitable checkbox.
◆ setGroupIsPlotted()
| setGroupIsPlotted |
( |
self |
, |
|
|
isPlotted |
|
|
) |
| |
Select all groups to plot in the raster.
- Parameters
-
| isPlotted | logical selector or string specifying groups |
Sets which groups will be plotted in the raster axes based on the given isPlotted. isPlotted may be the string 'all', in which case all groups will be ploted in the axes, or the string 'none', in which case no groups will be plotted. isPlotted may also be a logical array with one element per data groups, in which case the groups that correspond to true elements of isPlotted will be plotted.
If isPlotted is not a well-formed string or logical selector, the groupIsPlotted remains unchanged
◆ setMatchingGroupIsPlotted()
| setMatchingGroupIsPlotted |
( |
self |
, |
|
|
expression |
|
|
) |
| |
Choose groups to plot in the raster that match an expression.
- Parameters
-
| expression | string regular expression to match group names |
Adds data groups that match the given expresssion to the groups that are ploted in the raster.
◆ setTimeRange()
| setTimeRange |
( |
self |
, |
|
|
range |
|
|
) |
| |
Set the time range for the raster plot.
- Parameters
-
| range | numeric array or string specifying the time range |
Sets timeRange based on the given range. If range is numeric, sets timeRange to the min and max of range. If range is the string 'all', uses the entire range of data from the data log. If range is another string, attempts to create a numeric array by passing range to the built-in eval().
If range is not a well-formed array or string, or doesn't contain distinct min and max, timeRange is unchanged. If range may contain -inf or inf, in which case the timeRange will include the earliest or latest data item from the data log.
◆ groupIsPlotted
Browse the Tower of Psych data log.
topsDataLogPanel shows an overview of data stored in topsDataLog. It has a "raster" plot which plots data groups vs. timestamps. Users can select indivitual points in the raster plot to set the "current
item" of a Tower of Psych GUI. The user can also select which groups to plot and the time range of the plot. logical selector for which groups to plot in the raster
The documentation for this class was generated from the following file:


Python: Custom Interactive Console
Posted: | More posts about python
While working on new features that consist of web frontend and a backend API, I found a constant need to manipulate the backend API through python interactive console. Ideally I should implement a command line interface that I can use while waiting for the web frontend to finish but since the API (a class) already has structured methods to access all the API functionalities, a cli interface will just duplicating most of the class API methods.
What tedios when accessing the API through python interactive console is having to re-import all the objects that you need every time you start the interactive console. So an idea pop up - why not create my own custom interactive console with all the objects that I need pre-imported. In python, creating your own interactive console is trivial. The code module has all that you need.
import code # SomeClass will be available in the interactive console from yourmodule import SomeClass vars = globals() vars.update(locals()) shell = code.InteractiveConsole(vars) shell.interact()
While simple and just few lines of code, above is not really useful. It doesn't have auto complete and no history, you can't use up/down arrow key to repeat the previous command. A better version:-
import code import readline import rlcompleter # SomeClass will be available in the interactive console from yourmodule import SomeClass vars = globals() vars.update(locals()) readline.set_completer(rlcompleter.Completer(vars).complete) readline.parse_and_bind("tab: complete") shell = code.InteractiveConsole(vars) shell.interact()
Above is much nicer. Now you have auto complete (type Some<Tab>
and you got SomeClass
). Cool. But I immediately noticed that the history was not preserved, mean that when I closed the console and start again, it's in blank slate. I can't repeat command in previous session. This actually how the default python console work but I'd already have ~/.pythonrc.py
that I defined as PYTHONSTARTUP
to setup the tab completion and command history. It seem that my pythonrc.py not being processed by this custom console.
Noticing that the python console from django manage.py shell
working correctly with my pythonrc.py, I'd take a look at the implementation code. Look like django has to process PYTHONSTARTUP manually. I'm not really keen on copy-pasting the code from django but there's no way to pass your current enviroment into the console that django created.
In the end, I have to copy the django code into my console function:-
import code import readline import rlcompleter # SomeClass will be available in the interactive console from yourmodule import SomeClass vars = globals() vars.update(locals()) readline.set_completer(rlcompleter.Completer(vars).complete) readline.parse_and_bind("tab: complete") # copied from django.core.management.commands.shell for pythonrc in (os.environ.get("PYTHONSTARTUP"), os.path.expanduser('~/.pythonrc.py')): if pythonrc and os.path.isfile(pythonrc): try: with open(pythonrc) as handle: exec(compile(handle.read(), pythonrc, 'exec')) except NameError: pass code.interact(local=vars)
I found that working directly in the console like this motivate me to write better docstring for each functions and methods as I'd constantly using the help() function to figure out what each function/class/methods are doing. This seem to be much better than having to write dedicated cli interface for your API.


Checks if you have enough memory for single tile
(object)
Return object from scanInputData
object
:
Object like { singleTile: false, x: 8, y: 11 }
Determines the maximum size of a merged tile
object
:
Object like { singleTile: false, x: 8, y: 11 }
TODO
(any)
(any)
TODO
(any)
(any)
(any)
TODO
(any)
(any)
TODO [determineMergedTiles description]
([type])
[description]
([type])
[description]
object
:
[description]
//Return object
[
{ name: 'x0_y0', x: { from: 0, to: 15 }, y: { from: 0, to: 21 } },
{ name: 'x0_y1', x: { from: 0, to: 15 }, y: { from: 22, to: 43 } }
]
Determines the x and y value as integer from filename.
(string)
Filename of a wms-downloader tile.
object
:
Object with x and y values as integer like {file: "x0_y1.tif", x: 0, y: 1}.
TODO
(any)
Checks, if the file is a supported image.
(String)
File name
(Boolean | String)
:
false: File name is no image; string: File extension
TODO
(any)
(any)
TODO
(any)
(any)
TODO
(any)
(any)
(any)
(any)
TODO
(any)
(any)
(any)
TODO
(any)
(any)
(any)
(any)
Determines information about the input data
(any)
object
:
Object with a lots of information about the input data, see example.
//execute function
scanInputData('D:/input', 'D:/output', ['gif', 'tif']);
//return object
{
"inputDir": "D:/input",
"outputDir": "D:/output",
"outputFormats": [
{
"fileExt": "gif",
"worldFileExt": "gfw"
}
],
"workers": 2,
"freeMemory":<PHONE_NUMBER>2,
"tiles": {
"fileExt": "tif",
"worldFileExt": "tfw",
"numOfX": 15,
"numOfY": 22,
"width": 3000,
"height": 3000,
"bytesPerPixel": 3
}
}


Home
Overview
Add Visit
Report
Settings
Logout
COVID - 19 Contact Tracing
Reporting a New Infection
Please report the date and time when you were tested positive for
COVID-19
Report
Cancel


In late fall 2020, the City of St. John's released revised sidewalk clearing priorities for the coming 2020-21 winter season. These were in response to consultations and surveys with citizens over the course of spring and summer 2020. They were touted as a feasible measure to make sidewalk clearing more effective without impacting the city's budget.
The rationale for the revised priorities apparently was to reduce the size of Priority 1 so that it would, at the very least, be cleared promptly after each snow fall.
Summary
Other than reducing Priority 1 somewhat, and the move of School zones into Priority 1a, there doesn't seem to be much fundamental change with these revisions.
Here's a list of discernible notable changes from the previous priorities, in no particular order:There are now two new levels:
- 1a - for the old school zones (orange on the map)
- 4 - mostly consisting of the old priority 3 streets
Extensions & Additions:
- Old Pennywell from Columbus Dr. to Brier Ave
- Kenmount to Pippy Place
- Blackmarsh from Columbus to Hamlyn Road
Removals:
- Kelsey Drive no longer appears, but apparently was being cleared in winter 2020. Unclear.
Notable Changes:
- Monkstown Rd. to Priority 2
- Empire & Bonaventure & Mayor 'triangle' to Priority 1
- Parade St. to Priority 3
- Patrick St. south of Hamilton Ave. to Priority 1a
- University Ave from Prince Philip to Paton St. to Priority 1a
- Hutton Rd. to Priority 4
- Intersection of Portugal Cove Rd. and Newfoundland Dr. / Prince Philip to Priority 1a
Review & Analysis
Despite the city's rationale for revising the priorities, real issue is whether or not the revisions guarantee or aid mobility within the city over the course of the snowy months. There's very little indication that this is the case. It seems that city planners simply don't think about what it means to walk from point A to point B, nor do they consider ease of movement in pedestrian areas to be a rationale for priority clearing. Several examples are easy to spot:
Unconnected Priority 1a / School Zones
Three schools remain unconnected to the larger Priority 1 network - Vanier Elementary on Ennis Ave., the District School south of St Clare, and St. Theresa's on Mundy Pond Rd.
While Vanier is in a largely residential side street, and its school yard accessible via a footpath off of Rumboldt Place, St. Theresa's is on a major thoroughfare with heavy constant traffic. At the very least the north side of Munday Pond Rd. should be Priority 1. Similarly, the north side of Campbell Ave south of Cashin Ave. should be Priority 1, at least to St. Clare to link the District School with the rest of Priority 1.
Unreasonable Gaps
- Prescott St. between Duckworth and Water - there are stairs here, which may fall to the other unit for clearing?
- All of Waldegrave St.
- Pennywell Rd. between Smith Ave and Golf has Priority 1a on the northside, but on the south remains uncleared, despite the obvious utility of connecting the southside Pennywell Rd. Priority 2 route to the top of Golf Ave.
Access to Grocery & Pharmacy
The change of Parade St. to Priority 3 likely causes issues for pedestrian access to the nearest Grocery and Pharmacy by the largest area of walkers in the city in the city centre. Bonaventure provides some means of getting through around the Rooms, but with a Priority 2 along Merrymeeting, it might not be enough ease of access.
Walkers & Low-Income
Two areas stand out in the revised priorities for how walking commuters and low-income workers who walk: Casey and Springdale St neighbour sound of LeMarchant Road, and the areas surrounding Cashin Ave Extension between Campbell Ave and Blackmarsh Rd. Casey is priority 2, but the Springdale is not cleared. The census area has the highest population density in the entire city, but NO priority 1 clearing.
The Cashin Ave Extension area has the highest percentage of low income men who walk to commute to work, but only Cashin Ave Extension is priority 1. Campbell Ave and Blackmarsh are both Priority 2. There are nearby Priority 1a's that could help alleviate concerns, but ultimately no south-east to north-west south of Freshwater until LeMarchant Rd.
Flip Flops
No clear reason why the sides flip. Perhaps there's an obstruction...
- Stamps Lane south of Freshwater Rd. is on the west side, while south of Wishingwell, is on the east.
- Allandale Rd. to Bonaventure Ave.
- New Cove Rd. at Elizabeth Ave.
- Torbay Rd. at Newfoundland Dr.
- Brookfield Rd. at Cormack St.
Other Oddities
Logy Bay Rd. still has a Priority 1 area just north of Hutton Rd. (see the map of Vanier above)
Suggestions
Overall, it's not really clear if the city's reprioritization considered the basic question of where do people walk?. High traffic roads do not always mean high pedestrian traffic - Columbus Dr. and the northern part of Logy Bay Rd might be better reclassified as Priority 2, given the indications of the 2016 Census information on commuting walkers, and access to walkable areas like parks and trails etc (which does little for the winter admittedly).
Principles for Reprioritization
- Add Priority 1 clearing along Casey St. through St Clare Ave, Campbell Ave, through Mundy Pond Rd to Columbus. This would provide a priority 1 route connecting two schools (St Therea's and District) to the greater Priority 1 network, and provide access for high density areas with walking commuters, and an east-west route from downtown in between Freshwater Rd and LeMarchant Rd.
- Prioritize clearing of routes to Bus Stops in high pedestrian areas, e.g. Elizabeth Ave. south of Memorial's main campus - the site of a fatal accident in winter 2020
- Connectivity & Crosswalks. Pedestrians shouldn't have to flip flop sides without good reason. It's likely better to have a single side cleared more consistently, than worry about double sided clearing. Flip flops should only occur if there's an obstruction, and they should occur at clearly identified crosswalks or intersections, not in the middle of a major street (e.g. Pennywell Rd.)
- Columbus Dr. should likely be Priority 2 if the volume of walkers doesn't match other areas, like those noted above. Needs to be assessed fully. Perhaps the same for the Logy Bay Rd. north of Newfoundland Dr.
New Routes
- Mayor Ave. from Empire to Freshwater - should be Priority 1 or Priority 2 to add a major link with more population than the Newtown Road route, which could go to Priority 3.
Unnecessary Double Sides?
Remove double sided clearing on mainly residential streets, and reprioritize the workload accordingly:- Rodney St.
- Newtown Rd.
- Strawberry Marsh Rd.
- Elizabeth Ave from Torbay Rd. to Rumboldt Place
- Vinnicombe St.


Simples... A progress bar usually consisting of a background representing the total bar amount (100%) and an overlay representing the amount of progress.

50%


We would like you to wear some sensors that will monitor your heart and skin while you listen to two short media excerpts. After each excerpt, you will be asked some questions about how what you heard made you feel. The first excerpt will be a non-musical sound. The second will be a randomly selected musical excerpt.


BucketWebsiteConfiguration Class Reference
| Inherits from | NSObject |
| Declared in | BucketWebsiteConfiguration.h |
Overview
Bucket configuration options for hosting static websites entirely out of Amazon S3.
To host a static website in Amazon S3, create a bucket, upload your files, and set the bucket website configuration. Once your bucket has been configured as a website, you can access all your content via the Amazon S3 website endpoint. To ensure that the existing Amazon S3 REST API will continue to behave the same, regardless of whether or not your bucket has been configured to host a website, a new HTTP endpoint has been introduced where you can access your website content. The bucket content you want to make available via the website must be publicly readable.
To enable hosting websites, Amazon S3 introduces the following concepts/features:
- Website endpoints – When you configure a bucket as a website, the website is available via the the region-specific website endpoint where the bucket resides.
- Index document support – When configuring a bucket as a website you must provide an index document name. This is the webpage that Amazon S3 returns when it receives a request to the root of your website, or one of its subdirectories. Amazon S3 supports index documents in subdirectories.
- Error document support – Should an error occur, Amazon S3 will return an HTML error document, instead of an XML document.You can optionally provide your own error document that contains HTML, or any other static content specific to your website. You provide the error document name when you configure a bucket as a website. If you provide the custom error document, Amazon S3 returns your custom error document when an HTTP 4XX class error occurs. For other error non-4XX class errors, Amazon S3 will return its own error document.
For more information on how to host a website on Amazon S3, see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/WebsiteHosting.html.
Tasks
-
indexDocumentSuffix
The document to serve when a directory is specified (ex: index.html). This path is relative to the requested resource.
property -
errorDocument
The complete path to the document to serve for 4xx errors.
property
Properties
errorDocument
The complete path to the document to serve for 4xx errors.
@property (nonatomic, retain) NSString *errorDocument
Discussion
The complete path to the document to serve for 4xx errors.
Declared In
BucketWebsiteConfiguration.h
indexDocumentSuffix
The document to serve when a directory is specified (ex: index.html). This path is relative to the requested resource.
@property (nonatomic, retain) NSString *indexDocumentSuffix
Discussion
The document to serve when a directory is specified (ex: index.html). This path is relative to the requested resource.
Declared In
BucketWebsiteConfiguration.h


|
BitShares-Core
6.1.0
BitShares blockchain implementation and command-line interface software
|
#include <future.hpp>
Public Types | |
| typedef std::shared_ptr< promise< T > > | ptr |
| Public Types inherited from fc::promise_base | |
| typedef std::shared_ptr< promise_base > | ptr |
Public Member Functions | |
| virtual | ~promise () |
| const T & | wait (const microseconds &timeout=microseconds::maximum()) |
| const T & | wait_until (const time_point &tp) |
| void | set_value (const T &v) |
| void | set_value (T &&v) |
| template<typename CompletionHandler > | |
| void | on_complete (CompletionHandler &&c) |
| Public Member Functions inherited from fc::promise_base | |
| virtual | ~promise_base () |
| const char * | get_desc () const |
| virtual void | cancel (const char *reason FC_CANCELATION_REASON_DEFAULT_ARG) |
| bool | canceled () const |
| bool | ready () const |
| bool | error () const |
| void | set_exception (const fc::exception_ptr &e) |
Static Public Member Functions | |
| static ptr | create (const char *desc FC_TASK_NAME_DEFAULT_ARG) |
| static ptr | create (const T &val) |
| static ptr | create (T &&val) |
Protected Member Functions | |
| promise (const char *desc) | |
| promise (const T &val) | |
| promise (T &&val) | |
| Protected Member Functions inherited from fc::promise_base | |
| promise_base (const char *desc FC_TASK_NAME_DEFAULT_ARG) | |
| void | _wait (const microseconds &timeout_us) |
| void | _wait_until (const time_point &timeout_us) |
| void | _notify () |
| void | _set_value (const void *v) |
| void | _on_complete (detail::completion_handler *c) |
Protected Attributes | |
| optional< T > | result |
| Protected Attributes inherited from fc::promise_base | |
| const char * | _cancellation_reason |
Definition at line 109 of file future.hpp.
| typedef std::shared_ptr< promise<T> > fc::promise< T >::ptr |
Definition at line 111 of file future.hpp.
|
inlinevirtual |
Definition at line 112 of file future.hpp.
|
inlineprotected |
Definition at line 151 of file future.hpp.
|
inlineprotected |
Definition at line 152 of file future.hpp.
|
inlineprotected |
Definition at line 153 of file future.hpp.
|
inlinestatic |
Definition at line 114 of file future.hpp.
|
inlinestatic |
Definition at line 118 of file future.hpp.
|
inlinestatic |
Definition at line 122 of file future.hpp.
|
inline |
Definition at line 147 of file future.hpp.
|
inline |
Definition at line 136 of file future.hpp.
|
inline |
Definition at line 141 of file future.hpp.
|
inline |
Definition at line 127 of file future.hpp.
|
inline |
Definition at line 131 of file future.hpp.
|
protected |
Definition at line 155 of file future.hpp.


National School of Computer Science and Applied Mathematics of Grenoble Engineering of information systems


5 main activities of cats
Sleeping
Attacking Humans
Eating Meow mix
Knocking things over
Hunting birds and rodents
Here is my favorite website,
lolcats
. It's really
the cat's meow!
Haha,
cat puns!


-
alterShape(fullRows)
-
This method sets each row within its shape to zero for each row marked as full.
Parameters:
| Name |
Type |
Description |
fullRows |
Array.<number>
|
This is an array of all of the rows that were marked as full in the collided method above. |
- Author:
-
- Source:
-
cleanShape(o) → {Object}
-
This method cleans up a Tet or Tet fragment, after being affected the by collided method which affects the shape of Tets located in the rows being eliminated.
By cleaning, we mean removing extraneous zeros from their shape matrix as well as adjusting their topLeft property.
We clean them so that we can match its shape against a known Tet/fragment so we can determine its perimeter.
Parameters:
| Name |
Type |
Description |
o |
Object
|
This is a object which holds a shape and a topLeft property. |
- Author:
-
- Source:
Returns:
This is the cleaned up shape, without extraneous zeros, and adjusted topLeft.
-
Type
-
Object
-
collided()
-
This method handles row elimination and Tet fragmentation. We also adjust the score depending on how many rows get eliminated.
The score scales with how many rows get eliminated at once by the following formula:
score += Math.pow(rows_eliminated, 1 + (rows_eliminated - 1) * 0.1) * 10000
We then perform the falling animations on the Tets affected by "gravity."
- Author:
-
- Source:
-
doesNotTetPivotCollide() → {Array.<Array.<number>>}
-
This method checks to see if the pivot shape shadow can display properly.
- Author:
-
- Source:
Returns:
This returns the perimeter matrix given by the getPerimeter() method.
-
Type
-
Array.<Array.<number>>
-
doesTetCollideBot(potentialTopLeft) → {boolean}
-
This method checks to see if a Tet will collide with the bottom of the game board or another Tet.
Parameters:
| Name |
Type |
Description |
potentialTopLeft |
Object
|
This object contains a potential row and column which we use to check to see if the Tet will collide if it moves to the coordinate specified by this param. |
- Author:
-
- Source:
Returns:
If Tet colides, return true; else, false.
-
Type
-
boolean
-
doesTetCollideSide(potentialTopLeft, direction) → {boolean}
-
This method checks to see if a Tet will collide with the side of the game board or another Tet. If it collides on the right side of the Tet, we'll adjust the pivot as necessary.
Parameters:
| Name |
Type |
Argument |
Description |
potentialTopLeft |
Object
|
|
This object contains a potential row and column which we use to check to see if the Tet will collide if it moves to the coordinate specified by this param. |
direction |
number
|
<optional>
|
If value is 1, we are testing the right side and we're going to adjust the pivot. |
- Author:
-
- Source:
Returns:
If Tet colides, return true; else, false.
-
Type
-
boolean
-
getPerimeter(shape) → {Array.<Array.<number>>}
-
This method is used any time a living/landed Tet's shape is created/altered.
Upon breaking up a tet, make sure these conditions are met on its new shape:
1) Remove trailing zeros from each row, e.g. [1,0] becomes [1];
2) If new shape is one row, remove leading zeros, e.g. [0,1] becomes [1]. Which they are in the Tet.cleanShape() method.
Parameters:
| Name |
Type |
Description |
shape |
Array.<Array.<number>>
|
This is the shape of the Tet we care about getting the perimeter from. |
- Author:
-
- Source:
Returns:
Perimeter of shape. If shape is unknown, return empty array.
-
Type
-
Array.<Array.<number>>
-
getShapeMatrix(rotation) → {Array.<Array.<number>>}
-
This method takes in a Tet type and rotation then outputs its shape matrix. This method is only needed on a live Tet. I.e. if a Tet is already placed on the landed array, this method will not be used.
Parameters:
| Name |
Type |
Description |
rotation |
number
|
Rotation of shape, determined by user input. |
- Author:
-
- Source:
Returns:
Number matrix of shape. If type is unexpected, return empty array.
-
Type
-
Array.<Array.<number>>
-
moveDown()
-
This method moves the Tet down by 1 column if it does not collide with the side of the game board or another Tet.
If it does collide, the Tet lands, we create another Tet, and we perform the collided method to handle row elimination and Tet fragmentation.
- Author:
-
- Source:
-
moveLeft()
-
This method moves the Tet left by 1 column if it does not collide with the side of the game board or another Tet.
This method also resets the pivot to zero.
- Author:
-
- Source:
-
moveRight()
-
This method moves the Tet right by 1 column if it does not collide with the side of the game board or another Tet.
- Author:
-
- Source:
-
rotate(shape) → {boolean}
-
This method changes the rotation, if the shape can rotate properly on the game board, and changes the shape and perimeter if it successfully rotates. Otherwise, do nothing.
We also move the Tet this.pivot blocks to the right, then reset the pivot to zero.
Parameters:
| Name |
Type |
Description |
shape |
Array.<Array.<number>>
|
This is the shape of the Tet we care about getting the perimeter from. |
- Author:
-
- Source:
Returns:
Currently, we don't care about the actual return value.
-
Type
-
boolean
-
setShape(shape)
-
This method actually sets the shape and perimeter of the Tet that's executing this method.
Parameters:
| Name |
Type |
Description |
shape |
Array.<Array.<number>>
|
This is the shape of the Tet we care about getting the perimeter from. |
- Author:
-
- Source:
-
updateTet()
-
This method parses its own shape to determine if it needs to fragment or not. If it becomes fragmented, we instantiate a new Tet class to add in its fragmented part.
- Author:
-
- Source:


{border-style px;} #ffffff;} viral RNA nsp â€" virus SARS-CoV- conserved structural SOF residues motif SARS-CoV active alignment polymerase px; {font-family COVID- NSB binding bound clinical font-size HCV RdRp Sofosbuvir activity analysis colored coronaviruses different double; hepatitis superposition antiviral border-color border-width high motifs multiple palm shows site solid; viruses {font-style {font-weight (Fig.Â Commons Creative MERS-related blue; bold courier; drug em; performed proofreading pt;} sequences treatment


|
SUBJECT INDEX Anthropology Architecture Art Black Studies Business Ecology Economics Education Film Healthcare History Law Linguistics Literature Mass Media Medicine Music Philosophy Political Science Psychology Religion Science Shakespeare Sociology Sports Recreation Urban Studies Women's Studies |
Education: Reading & LiteracyTo order a specific paper, click the Catalog Number button next to the Paper Title of interest. Send comments to<EMAIL_ADDRESS>Last Updated: 12/21/96 Copyright ©1996 ASM Communications, Inc. All Rights Reserved. |


May be people have friends and they can joke about Mom and sisters, I do not. Not even among my friends I like these kind of sentences, I know people would call me butt-hurt for not taking this joke but I am not okay with it. I am fully capable of taking any joke, if it is directed towards me. Wtf you have to go to women?


Story of The Machine
Few weeks ago, the biggest of all the developers died. A huge space seized the world such as we know it. Known as the biggest computer genius of all time, this engineer had made tip over the era of the digital technology to the quantum era in a few years. There is no developer on earth which knows its story as well as each of its inventions. And all humans are using his products every day. Aerospace, military, home automation, robotics, artificial intelligence, and some more other emergent sectors took a burst of acceleration these last years thanks to the advances in the man known as the Developer Master.
According to his testament, he wanted to share with the developers's world a letter he wrote shortly before his death. This letter is the last testimony he has left to us. It's a part of his soul.
My dear developers friends,
My whole life was devoted to computer engineering. I have traveled the world and learned to use each technology that contained the planet. And the more I learned, the more I discovered the wonders of the human brain.
During one of my trips, I discovered the essence of human intelligence. How it works, evolves and learns from his mistakes. Every cell in our body, every neuron in our brain, every psychological behavior, everything can be digitally reproduced! Unfortunately, the more I was traveling the more I was getting older. I've realized over time how our human bodies are weak and limited.
So I designed a new kind of machine. A machine that would be similar to humans. Instead of serving, she would like them, smart. I could put all my intelligence and knowledge. I will continue to live even after my physical death.
The Machine was born 4 years ago. 4 years that I build her, sheltered from view of the world. For once, I chosen't to put her under an Open Source license. I am close to the end, there is only a small problem to solve.
Since I do not want The Machine falls into wrong hands, I developed the most effective security system ever built. Only a Developer Master can enter The Machine by finding the correct security code.
As Arthur's sword stuck in the rock, I leave you all the time to find the code and prove you're worthy of a Developer Master. The one who crack the code will become the best developer in the world and control the entire machine.
As I said earlier, there is a "small" problem I have to start the machine. I must have to transfer all the vital energy of my brain. I'm not much sure on the side effects it could have on me, but as I am a man of science, I will try it very soon.
Actually, if you read this letter, is that I've tried. I hope everything has gone well.
D.M.


Telling stories with data
* I am gonna talk about data visualization.
* Go through examples.
* Mention some specific technologies along the way.
* Feel free to stop me with questions.
Alan Palazzolo
Interactive News Developer
* I am not a data visualizatoin expert.
* I don't really have good design skills
* I am a programmer, a builder
* I work on the web and it is my medium. So, most of my examples will based around the web, but data visualization can be in many places.
* Interactive News Developer at MinnPost
* I try to make the news more exciting.
* Our goal is to make news, not work on the systems that provide it.
* We do great work because we have a great (though small) team.
* Kaeti and Tom
Twin Cities (Data) Visualization Group
meets the 3rd Tuesday of each month
* I also run the TC Data Viz meetup.
* All are welcome (though it fills up usually).
* Our monthly meetups are presentations by community members.
* We recently did a hack day (more on that later).
Data visualization is __________.
* To me, data visualization is just as generic as it sounds.
* It's really any visual representation of data or information.
* The other day someone was saying "Yeah, we have some charts and graphs, but its not data visualization" and I was a bit speechless.
* The key is that the goal of a visualization is to communicate specific parts of the data and in an effective way.
* It's charts, graphs, maps, and many other design techniques.
* Noun Project
* It's functional art (as opposed to a fine art).
* Functional Art means that it serves a practical purpose.
* Furniture or Architecture are a functional art.
* A chairs main purpose is sitting.
* If it doesn't serve that purpose, it no longer an effective piece of furnture.
* A folding chair does it, often not very comfortably.
* But it needs to be more than just practical.
* It needs to be comfortable, inviting, and easy to use.
* It often can server a specific function.
* While still maintaining ease of use.
* Almost most importantly, it needs to look good.
* The best kind of chair brings together form and function perfectly without sacrificing either.
* This is the same with data visualization.
The new hotness
* Data visualization has been going on for a long, long time.
* So why am I talking about this today to you?
* Why is "data visualizatoin" such a hot topic right now?
* In my opinion it comes down to a few things:
* Well, there are computers. Lots of them.
* Specificially, our computers can visualize things much easier as they become more powerful.
* Designers and artists use computers more easily.
* The internet, its prevelance and increased bandwidth, has allowed us to see (good) data visualization often.
* And I am a firm believer that the success of open source software and mentality has allowed many people to build amazing things inexpensively and collaboratively, especially on the web.
A simple example
* Let's go through an overly simple example.
42
* Here we have data.
* The number 42.
* And here it is visualized.
42%
* Let's add a bit of context.
* It's very important to think about who your audience is and what supplemental information they may need.
42%
* Let's try a different background.
* Colors are extremely powerful.
* They can provide tone and mood.
* They also convey information both implicity and explicity.
* I just like this blue.
42%
* But the blue was a bit dark, so lets try something lighter.
* This is good enough.
42%
* Let's make it bigger, as it is the focus of visualizaiton.
* Again, size is a really important thing to consider
* Like color, it can convey many things.
42%
* Let's try a different font.
* This serif font really doesn't work.
* Serif fonts are usually better for longer pieces of text.
42%
* A sans-serif font usually works best for numbers.
42%
* Let's increase the opacity of the number just a tad to let it blend into the background.
* Opacity can also be a good tool to provide information such as intensity.
42%
of people like the number 42
* Oh, and right, no one actually knows what we are talking about here, so let's add a label.
* Labels and annotations are extremely important. But should be done sparely.
42%
of people like the number 42
* But if we think about our audience a little more (ie. you all), then this background is not really great for a projected display.
* So here we have our final piece.
* Pretty fancy.
Some more data
* Let's talk about a set of examples that uses more than just a single number.
* I am a huge fan of maps.
* My partner and I actually collect maps and we call our basement the map room because that is where hang them.
* A lot of people don't think of maps when thinking about data visualizations. Or they think about putting their visualization on top of a map.
* But that is what makes maps so successful.
* Good maps get out of your way and allow you to find the information you want quickly.
* Maps, especially street maps, are driven by data. Lots and lots of geographical vector data.
* Cartographers take that data and make decisions about symbols, colors, sizes, opacity, etc and turn it into what we see.
* Let's go through a few.
* Most of the maps I will show you are really basic, or what most people would call basemaps, but there is plenty to look at.
* Most of the maps are also driven by the same data source, OpenStreetMap (the wikipedia of maps).
* This one here is very muted
* Even as you zoom in, only the labels get much attention
* This makes it a good candidate to overlay with other data
* The roads really come out here
* As we zoom in, the park areas get very bright
* Zoom in more, more symbols show
* The Map of the Dead, the zombie apocalypse
* Obviously the colors are trying to set the mood
* Zoom in and all the secondary roads show up very distinctly
* This is example from MapBox, a great service that allows you to make custom maps like these.
* This ones starts to bring in elevation data and does some hill shading. Not that drmatic in Minnesota.
* It also shows land use more. You can see the urban areas.
* Roads are a bit muted
* Water reallys jumps out
* Zooming in, still muted, but the building footprints become pretty obvious
* This one is what Github uses for its new GeoJSON rendering feature
* It's overall pretty muted, which is good because its sole purpose is to overlay people's data.
* The roads and the water are kind of the same color
* The next few are from Stamen, an amazing studio out in SF that makes some really powerful data visualization
* This one is Toner and has the express purpose of wanting to be printed
* High contrast
* Hides a lot things
* Puts road lables along the road
* Terrain from Stamen
* This is more like a traditional road atlas.
* Very focused on roads but still trying to give us a sense of place
* Watercolor from Stamen
* Not that focused on the functional side
* STill kind of road focused
* Park Tiles from the National Park Service
* Very focused on showing where national park areas are.
* No roads
* Only really labels of park areas
* Greenpeace map focusing on attention to ocean issues like fishing and whaling.
* The land is totally dark
* Elevation in the oceans
* Highlighted areas of concerns
* Then there is satellite imagery
* You might think its just a photograph, but there is often lots of processing that goes on top of the raw images taken. This will alter colors.
Robberies
* At our first TC Data Viz hack day, a day where about 50 people from the group met to just work and learn together on projects and technologies.
* I was given a set of data from the MPD of Robbery incidents so far this year.
* I got together about 3 or 4 people to spend a few hours to see what we could come up with.
On July 18, 2013 a robbery happened involving a business near the intersection of Lake and Portland at or around 11:35 PM and has been assigned a case number of ABCXYZ123 .
* This is an example row of data.
* Date
* Time
* Place
* Category
* So, we first just bring it into Excel and do some basic grouping and charting. Excel charts are not a great finished product but can be really awesome for finding trends and doing quick analysis.
* This shows amount of incidents for each day during the year.
* We can see that overall the numbers have increased a bit
* This show number of incdents per weekday, starting with Sunday
* More on weekends
* This is showing number of incdents by time of day
* The high being between 10PM and 3AM
* The same chart but with Excels awesome formatting options
* I also spent some time making a heat map really quickly to maybe see what places get more robberies.
* Then added some filters
* We can confirm some of our previous observations
* This is piece done in Tabluea
* Shows all incidents for the year
* Underlays income levels from the Census
* Then looks for any statically significant outliers in each category of robbery
An overview of crime
* The last example I will go through is a crime dashboard we made for Minneapolis at MinnPost.
There were 10 robberies in the Wellford neighborhood in the month of October, 2013 .
* This what is on their website
* Number of incidents by category by month by neightborhood. Going back about 10 years.
* We tried to get to more data through a Data Practices Act but it was slow and we were already almost done with our project by the time we worked out all the detauls.
* Very data-driven.
* Hopefully you can come up with the idea you want to communicate and get the most approriate data.
* But often the data isn't that flexible, so the data drives the visualization a lot.
* Lots of data processing. Formats. Aggregation.
* Data visualization often means a lot of data processing, maybe more so than the visualizing part
* (go through interface)
* When it comes to crime, its really hard to choose one metric that can describe how crime is behaving
* Ultimately we want to show the idea of safety.
* This is tough, let alone with the little data we had.
* We try to show a current snapshot of crime
* The idea of safety includes comparison, both historically, but also to neighboring areas.
* That is why all these are the same size (except population)
* We combine some categories to help pear down the categories while still knowing that not all crime is equal.
* We try to show the long term trend. But we also want to take into account the seasonal difference of crime (higher crimes in the summer), hence why we choose this metric.
* Colors are automatically assigned through a version of k-means clustering
Thanks.
Questions?
Code for slides are on Github .