src/app/dendrogram.ts
A dendrogram (from Greek dendro-tree and gramma-drawing) is a tree diagram frequently used to illustrate the arrangement of the clusters produced by hierarchical clustering. Dendrograms are often used in computational biology to illustrate the clustering of genes or samples, sometimes on top of heatmaps. Source: wikipedia
Properties |
|
Methods |
|
constructor(title: string)
|
||||||||
|
Defined in src/app/dendrogram.ts:29
|
||||||||
|
Initialize a new Dendrogram structure, by providing only a name for it. The pointer to the root node is by default initialized to null, the default cutoff distance is set to 1.5, and the flip variable is by default set to false.
Parameters :
|
| Private _cutoff |
_cutoff:
|
Type : number
|
|
Defined in src/app/dendrogram.ts:25
|
|
Cuttof distance, from the leaves, up to which matching nodes are found in in a Dendrogram. Can also be understand as the distance, from the leaves up to which labels for internal nodes will be calculated. |
| Private _flipped |
_flipped:
|
Type : boolean
|
|
Defined in src/app/dendrogram.ts:29
|
|
Flag that indicates whether the dendrogram should be visualized using a default arrangement (root on the left and leaves on the right), or fliped on its Y-axis (root on the right and leaves on the left) |
| Private _leafCount |
_leafCount:
|
Type : number
|
|
Defined in src/app/dendrogram.ts:21
|
|
The number of leaves in the dendrogram |
| Private _root |
_root:
|
Type : any
|
|
Defined in src/app/dendrogram.ts:19
|
|
Pointer to the root node withtin the dendrogram's hierarchy |
| Private _title |
_title:
|
Type : string
|
|
Defined in src/app/dendrogram.ts:17
|
|
The name used to identify the dendrogram within the visualization |
| Private _flipXCoordinates | ||||||||
_flipXCoordinates(labelWidth: number)
|
||||||||
|
Defined in src/app/dendrogram.ts:114
|
||||||||
|
All nodes in a Dendrogram are initially drawn with the root at the left end of the diagram, and the leaves at the right end. When set as flipped, the coordinates of each node within the Dendrogram are mirrored, as to display it with its root at the right end, and the leaves at the left end.
Parameters :
Returns :
void
|
| Private _matchCluster | ||||||||||||||||
_matchCluster(node: any, other: Dendrogram, minChildren: number)
|
||||||||||||||||
|
Defined in src/app/dendrogram.ts:224
|
||||||||||||||||
|
For a given node in the Dendrogram, find a matching node within the other Dendrogram.
Parameters :
Returns :
any
A list of exactly one ClusterMatch object that contains the given node and the matching node found in the other Dendrogram. If not match was found, a null value is returned. |
| Private _scaleXCoordinates |
_scaleXCoordinates()
|
|
Defined in src/app/dendrogram.ts:257
|
|
Nodes are not equally distributed along the X axis, as returned by the hierarchization arrangement of D3, but they are at specific distances from eachother, as result of the original clutering analysis. This function shifts the nodes positions, along the X axis, in order to properly display such information.
Returns :
void
|
| Public findMatchingClusters | ||||||||||||||||||||
findMatchingClusters(node: any, other: Dendrogram, minChildren: number)
|
||||||||||||||||||||
|
Defined in src/app/dendrogram.ts:75
|
||||||||||||||||||||
|
Given a node (representing a whole sub-tree in the structure) of the Dendrogram, search for a matching node within the other Dendrogram structure. When no matching node is found, recursively search for matches among the children of the current node. minChildren indicates the minimum number of children that the current node has to have in order to search for matches. This is used to avoid searching for trivial (leaves) matches.
Parameters :
Returns :
any
A list of ClusterMatch objects, representing the matching of the given node (or its descendants) to nodes within the other Dendrogram. If no match is found for the given node or any of its descendats, a null value is returned |
| Public flipYNode | ||||||||
flipYNode(node: any)
|
||||||||
|
Defined in src/app/dendrogram.ts:135
|
||||||||
|
Given a node in the Dendrogram, do a vertical flip of all of its children.
Parameters :
Returns :
void
|
| Public getCutoff |
getCutoff()
|
|
Defined in src/app/dendrogram.ts:163
|
|
Provide access to the cutoff distance.
Returns :
number
The cuttoff distance set for this Dendrogram. |
| Public getFlipped |
getFlipped()
|
|
Defined in src/app/dendrogram.ts:173
|
|
Provide access to the flipped state of the Dendrogram.
Returns :
boolean
Whether the Dendrogram should be displayed using a default or flipped layout |
| Public getLeafCount |
getLeafCount()
|
|
Defined in src/app/dendrogram.ts:182
|
|
Provide access to the number of leaves the dendrogram has.
Returns :
number
The number of leaves of the dendrogram |
| Public getRoot |
getRoot()
|
|
Defined in src/app/dendrogram.ts:191
|
|
Provide access to the root of the Dendrogram.
Returns :
any
The pointer to the root node of the Dendrogram |
| Public getTitle |
getTitle()
|
|
Defined in src/app/dendrogram.ts:200
|
|
Provide access to the name of the Dendrogram.
Returns :
string
The title of the Dendrogram |
| Public initLeafCount |
initLeafCount()
|
|
Defined in src/app/dendrogram.ts:207
|
|
Initialize the value of leafCount.
Returns :
void
|
| Public setCutoff | ||||||||
setCutoff(cutoff: number)
|
||||||||
|
Defined in src/app/dendrogram.ts:274
|
||||||||
|
Modify the cutoff distance of this Dendrogram.
Parameters :
Returns :
void
|
| Public setDistance |
setDistance()
|
|
Defined in src/app/dendrogram.ts:285
|
|
Initinally, nodes only contain incremental information regarding the distance at which they stand from their parent. This is stored in field distToParent, within the node's data. Using this method, we add information to each node on the absolute distance from itself to its leaves.
Returns :
void
|
| Public setLabels | ||||||||||||||||||||
setLabels(keepStructure: boolean, keepDuplicates: boolean, separator: string)
|
||||||||||||||||||||
|
Defined in src/app/dendrogram.ts:334
|
||||||||||||||||||||
|
Our matching algorithm works under the assumption that only leaves in the original Dendrogram representation have a label. Under this assumption, we define the labels for the internal nodes of the Dendrogram, in a way that allows us to reduce the problem of finding matching nodes across different structure, to compare their respective labels. The labels for each internal node are defined in a way that, depending on user selection, retain information on the children of the node, their organization, and whether they are repeated or not.
Parameters :
Returns :
void
|
| Public setLeafLabels | |||||||||||||||
setLeafLabels(trim: boolean, separator: string)
|
|||||||||||||||
|
Defined in src/app/dendrogram.ts:414
|
|||||||||||||||
|
Our algorithm for finding matching nodes (and this clusters) across different Dendrograms is based on the assumption that initially only leaves are given a name. Then, we use this name to assign a label to each node on the Dendrogram, so the required first step for this process, is to assign a label to each leave. In some biological contexts, the name of the leaves is made out of different components, where the last one, for example, could reference a sample number. Since this information is not necesarily biologically signficant, we add a way to remove the last component of the leave's name before setting it as label.
Parameters :
Returns :
void
|
| Public setRoot | ||||||||
setRoot(root: any)
|
||||||||
|
Defined in src/app/dendrogram.ts:431
|
||||||||
|
Set the root node for the Dendrogram
Parameters :
Returns :
void
|
| Public setTitle | ||||||||
setTitle(title: string)
|
||||||||
|
Defined in src/app/dendrogram.ts:440
|
||||||||
|
Change the name of the Dendrogram.
Parameters :
Returns :
void
|
| Public sort |
sort()
|
|
Defined in src/app/dendrogram.ts:450
|
|
Automatically sort the nodes of a Dendrogram, based on their label, from top to bottom. Notice that the sorting of nodes retains the structure of the Dendrogram, i.e. the nodes are not moved from one branch of the tree to a different one as part of the sorting procedure.
Returns :
void
|
| Public toggleFlipped |
toggleFlipped()
|
|
Defined in src/app/dendrogram.ts:465
|
|
Toggle the current value of flipped, i.e. change it to false when the current value is true, and vice-versa.
Returns :
void
|
| Public updateCoordinates | ||||||||||||||||||||||||
updateCoordinates(dx: number, dy: number, width: number, height: number, labelWidth: number)
|
||||||||||||||||||||||||
|
Defined in src/app/dendrogram.ts:490
|
||||||||||||||||||||||||
|
After loading, the nodes in a Dendrogram are give an initial screen position by the cluster method available on D3 for hierarchical structures. However, this provides a layout of the nodes arranged from top-down of the elements. Based on a series of parameters, this function applies geometrical transformations on the coordinates that represent the node's positions are made to arrange them appropriately. We also need to consider the fact that, in the case of displaying more than one Dendrogram structure, from the second structure onwards, we need to add in our calcuation infomration regarding how much each structure is to be displaced, in order to fit the drawing area.
Parameters :
Returns :
void
|
import * as d3 from 'd3';
import { Utils } from './utils';
import { ClusterMatch } from './clusterMatch'
import { ClusterMatchEnum } from './clusterMatchType'
/**
* A dendrogram (from Greek dendro-tree and gramma-drawing) is a tree diagram
* frequently used to illustrate the arrangement of the clusters produced by
* hierarchical clustering. Dendrograms are often used in computational biology
* to illustrate the clustering of genes or samples, sometimes on top of heatmaps.
* Source: wikipedia
*/
export class Dendrogram{
/** The name used to identify the dendrogram within the visualization */
private _title: string;
/** Pointer to the root node withtin the dendrogram's hierarchy */
private _root: any;
/** The number of leaves in the dendrogram */
private _leafCount: number;
/** Cuttof distance, from the leaves, up to which matching nodes are found in
* in a Dendrogram. Can also be understand as the distance, from the leaves
* up to which labels for internal nodes will be calculated. */
private _cutoff: number;
/** Flag that indicates whether the dendrogram should be visualized using a
* default arrangement (root on the left and leaves on the right), or fliped on
* its Y-axis (root on the right and leaves on the left) */
private _flipped: boolean;
/**
* Initialize a new Dendrogram structure, by providing only a name for it.
* The pointer to the root node is by default initialized to null, the default
* cutoff distance is set to 1.5, and the flip variable is by default set to
* false.
*
* @constructor
* @param {string} [title=Undefined] The name given to the new dendrogram
*/
constructor(title: string = "Undefined"){
// the title or name for the dendrogram
this._title = title;
// a pointer to the root or the tree
this._root = null;
// the number of leafs in the dendrogram
this._leafCount = -1;
// set the default cutoff to 1.5
this._cutoff = 1.5;
// flag - whether the dendrogram should be presented with the root on the
// left side (flip === false), or on the right side (flip === true)
this._flipped = false;
}
/**
* Given a node (representing a whole sub-tree in the structure) of the
* Dendrogram, search for a matching node within the other Dendrogram structure.
* When no matching node is found, recursively search for matches among the
* children of the current node.
*
* minChildren indicates the minimum number of children that the current node
* has to have in order to search for matches. This is used to avoid searching
* for trivial (leaves) matches.
*
* @param {any} node A node in the Dendrogram we are trying to match within
* the other Dendrogram
* @param {Dendrogram} other The Dendrogram where we will try to find matching
* nodes
* @param {number} minChildren The minimum amount of descendats the given node
* has to have, before being considered a trivial cluster
* @return {any} A list of ClusterMatch objects, representing the matching of
* the given node (or its descendants) to nodes within the other Dendrogram.
* If no match is found for the given node or any of its descendats, a null
* value is returned
*/
public findMatchingClusters(node: any, other: Dendrogram, minChildren: number = 3): any{
// we start by checking the current node is not a leaf, nor is below the
// level where it is considered a trivial cluster
if( node.value < minChildren )
return null;
// check if there is a match for node within the other Dendrogram
var match: any = this._matchCluster(node, other, minChildren);
// and if not null, return it
if( match !== null )
return [match];
// if nothing is found, then we move down the structure on this dendrogram,
// and recursively search for matches for all of the current node's children
var matches: any = [];
for(var i=0; i<node.children.length; ++i){
matches = matches.concat(this.findMatchingClusters(node.children[i], other, minChildren));
}
// filter out the cases where a match for a particular child was not found
// (i.e. we obtained a null return within the loop)
matches = matches.filter( function (n){
return n !== null ;
});
// return the list of all found matches.
return matches;
}
/**
* All nodes in a Dendrogram are initially drawn with the root at the left end
* of the diagram, and the leaves at the right end.
*
* When set as flipped, the coordinates of each node within the Dendrogram are
* mirrored, as to display it with its root at the right end, and the leaves
* at the left end.
*
* @param {number} labelWidth The width, measured in screen pixels, reserved
* for the display of leaves' labels
*/
private _flipXCoordinates(labelWidth: number): void{
// these are the screen coordinates, over the x-axis of the root and leaves
var xroot: number = this._root.x;
var xleaf: number = this._root.leaves()[0].x;
// traverse the dendrogram modifying the coordinates of each node
this._root.each(function(node){
// to flip the nodes, we simply position them at a distance from the root
// (in pixels) to the right, equal to the distance they had from a leaf
// to the left. We need to save some space for the node's label.
node.x = labelWidth + xroot + (xleaf - node.x);
return node;
});
}
/**
* Given a node in the Dendrogram, do a vertical flip of all of its children.
*
* @param {any} node The node in the Dendrogram whose children are to be
* flipped
*/
public flipYNode(node: any): void{
// leaf nodes can't be fliped, so we return
if (node.value === 1)
return;
// as with the horizonal flip, vertically fliping the sub-tree changes only
// Y coordinates of nodes. To do this, and retain the spaced used for the
// display, we need information on the Y coordinate of the top- and bottom-
// most nodes in the sub-tree. This nodes will necesarily be leaves
var leaf: any[] = node.leaves();
var minY: number = Number.POSITIVE_INFINITY;
var maxY: number = Number.NEGATIVE_INFINITY;
// find the maximum and minimum Y coordinates among the leaves of node
leaf.forEach(function(d){
maxY = d.y > maxY ? d.y : maxY;
minY = d.y < minY ? d.y : minY;
});
// change the coordinates of each descendant of node
node.descendants().forEach(function(d){
d.y = maxY - (d.y - minY);
return d;
});
}
/**
* Provide access to the cutoff distance.
*
* @returns {number} The cuttoff distance set for this Dendrogram.
*/
public getCutoff(): number{
return this._cutoff;
}
/**
* Provide access to the flipped state of the Dendrogram.
*
* @returns {boolean} Whether the Dendrogram should be displayed using a
* default or flipped layout
*/
public getFlipped(): boolean{
return this._flipped;
}
/**
* Provide access to the number of leaves the dendrogram has.
*
* @returns {number} The number of leaves of the dendrogram
*/
public getLeafCount(): number{
return this._leafCount;
}
/**
* Provide access to the root of the Dendrogram.
*
* @returns {any} The pointer to the root node of the Dendrogram
*/
public getRoot(): any{
return this._root;
}
/**
* Provide access to the name of the Dendrogram.
*
* @returns {string} The title of the Dendrogram
*/
public getTitle(): string{
return this._title;
}
/**
* Initialize the value of leafCount.
*/
public initLeafCount():void{
this._leafCount = this._root.leaves().length;
}
/**
* For a given node in the Dendrogram, find a matching node within the other
* Dendrogram.
*
* @param {any} node A node in the Dendrogram, for which we are looking
* matches in the other dendrogram
* @param {Dendrogram} other The second Dendrogram structure
* @param {number} minChildren The minimum number of leaves a node needs to
* have not to be considered trivial
* @returns {ClusterMatch} A list of exactly one ClusterMatch object that
* contains the given node and the matching node found in the other Dendrogram.
* If not match was found, a null value is returned.
*/
private _matchCluster(node: any, other: Dendrogram, minChildren: number): any{
// search for the current object (node) in the other dendrogram
var found: boolean = false;
var match: any = null;
other.getRoot().eachBefore(function(trgt){
if( found )
return trgt;
/* a match exits if the labels of the objective and target node are equal
* and the number of children of the target node is at least the minimum
* required not to be considered trivial */
if( node.data["label"] !== undefined &&
trgt.value >= minChildren &&
node.data["label"] === trgt.data["label"]){
// do not continue to look in lower levels if I found a match at the
// current one
found = true;
// we identify the nodes in the source and target dendrograms, to later
// this information to construct the visualization
match = new ClusterMatch(node, trgt);
}
});
// return either the found match or null (match didn't get modified)
return match;
}
/**
* Nodes are not equally distributed along the X axis, as returned by the
* hierarchization arrangement of D3, but they are at specific distances from
* eachother, as result of the original clutering analysis.
* This function shifts the nodes positions, along the X axis, in order to
* properly display such information.
*/
private _scaleXCoordinates(): void{
var world: number = this._root.data.distance;
var pixels: number = this._root.leaves()[0].x - this._root.x;
var rootx: number = this._root.x;
this._root.each(function(node){
node.x = ((world - node.data.distance)/world) * pixels;
node.x += rootx;
return node;
});
}
/**
* Modify the cutoff distance of this Dendrogram.
*
* @param {number} cutoff The new cutoff distance
*/
public setCutoff(cutoff: number):void{
this._cutoff = +cutoff;
}
/**
* Initinally, nodes only contain incremental information regarding the
* distance at which they stand from their parent. This is stored in field
* distToParent, within the node's data.
* Using this method, we add information to each node on the absolute distance
* from itself to its leaves.
*/
public setDistance(): void{
// to set the distance, we traverse the tree, using a post-order approach,
// i.e., we only set the distance for the current node after it has been set
// for all its children
this._root.eachAfter(function(d){
// by definition, the distance for a leaf node is 0, d.value indicates the
// size of the subtree rooted at node d, thus a node with value 1
// corresponds to a leaf
if( d.value === 1 ){
d.data["distance"] = 0;
return d;
}
// since all leaves are positioned at a 0 distance, the distance from the
// current node to its leaves can be calculated as the sum of the distance
// between the node and its first child, and the distance between the first
// child to a leaf
var nodeToChild: number = parseFloat(d.children[0].data["distToParent"]);
var childToLeaf: number = d.children[0].data["distance"];
d.data["distance"] = nodeToChild + childToLeaf ;
return d;
});
/* Update the cutoff to be half the distance between the root and the leaves
* of the Dendrogram */
this._cutoff = this._root.data["distance"] / 2;
}
/**
* Our matching algorithm works under the assumption that only leaves in the
* original Dendrogram representation have a label. Under this assumption, we
* define the labels for the internal nodes of the Dendrogram, in a way that
* allows us to reduce the problem of finding matching nodes across different
* structure, to compare their respective labels.
*
* The labels for each internal node are defined in a way that, depending on
* user selection, retain information on the children of the node, their
* organization, and whether they are repeated or not.
*
* @param {boolean} keepStructure Indicates whether the label should include
* information regarding the structure of the node's descendants or not
* @param {boolean} keepDuplicates Indicates whether duplicated names among
* the current node's children should be included or not on the label. If true,
* then the name of the repeated child will appear on the label as many times
* as the children. When set to false, repeated names will appear on the label
* only once
* @param {string} separator Depending on the selection of the previous flags,
* the separator will be used as part of the concatenation process used in the
* definition of the current node's label
*/
public setLabels(keepStructure: boolean = true, keepDuplicates: boolean = true,
separator: string="-"): void{
// Copy so that we can access this object from within the anonymous function
var self: any = this;
// we traverse the tree using post-order, thus defining the current node's
// label only after all of its children's labels have already been set
this._root.eachAfter(function(d){
// leaf nodes already have a label
if( d.value === 1 )
return d;
// nodes located at a distance larger than the cutoff, are not required
// to have a label
if( d.data["distance"] > self._cutoff ){
d.data["label"] = undefined;
return d;
}
// the label of the current node is based on the name of it's children,
// thus, the first step is to recover all children's names
var childNames: string[] = [];
for( var i: number=0; i<d.children.length; ++i ){
var name:string = d.children[i].data["label"];
if( !keepDuplicates ){ // split composite names to later remove
var s = name.split(separator);
childNames = childNames.concat(s);
}
else
childNames.push(name);
}
// since the branch positioning isn't important in our analysis, we first
// sort the names... this is equivalent to rotate the branches
childNames = childNames.sort();
// remove duplicated names from the list if so requested
if( !keepDuplicates ){
childNames = childNames.filter(function(item, pos){
return childNames.indexOf(item) == pos;
});
}
// we concatenate the children's names into a single string, using the
// defined separator
var label:string = childNames[0];
for( var i=1; i<childNames.length; ++i ){
label += separator;
label += childNames[i];
}
// to keep keepStruct we wrap the name of the node between brackets
if( keepStructure )
label = "_"+label+"_";//label = "("+label+")";
// finally, we assign the composited label to the current node
d.data["label"] = label;
return d;
}); // eachAfter
}
/**
* Our algorithm for finding matching nodes (and this clusters) across
* different Dendrograms is based on the assumption that initially only leaves
* are given a name. Then, we use this name to assign a label to each node on
* the Dendrogram, so the required first step for this process, is to assign a
* label to each leave.
*
* In some biological contexts, the name of the leaves is made out of
* different components, where the last one, for example, could reference a
* sample number. Since this information is not necesarily biologically
* signficant, we add a way to remove the last component of the leave's name
* before setting it as label.
*
* @param {boolean} trim Indicates whether the last component of the leaf's
* name should be included or not in the label
* @param {string} separator the separator used for trimming the name of the leafs.
* Default value "."
*/
public setLeafLabels(trim: boolean = true, separator: string = "."): void{
// traverse the dendrogram structure
this._root.each(function(node){
if( node.value === 1 ) // the node is a leaf
if( trim )
node.data["label"] = Utils.rsplit(node.data["name"],separator,1)[0];
else
node.data["label"] = node.data["name"];
return node;
});
}
/**
* Set the root node for the Dendrogram
*
* @param {any} root A pointer to the root node of the Dendrogram
*/
public setRoot(root: any): void{
this._root = root;
}
/**
* Change the name of the Dendrogram.
*
* @param {string} title The new name given to the Dendrogram
*/
public setTitle(title: string): void{
this._title = title;
}
/**
* Automatically sort the nodes of a Dendrogram, based on their label, from
* top to bottom. Notice that the sorting of nodes retains the structure of
* the Dendrogram, i.e. the nodes are not moved from one branch of the tree to
* a different one as part of the sorting procedure.
*/
public sort(): void{
this._root.sort(function(a,b){
if (a.data.label !== undefined && b.data.label !== undefined ){
var result:number = a.data.label.toLowerCase().localeCompare(b.data.label.toLowerCase());
return result;
}
return -1;
});
}
/**
* Toggle the current value of flipped, i.e. change it to false when the
* current value is true, and vice-versa.
*/
public toggleFlipped(): void{
this._flipped = !this._flipped;
}
/**
* After loading, the nodes in a Dendrogram are give an initial screen
* position by the cluster method available on D3 for hierarchical structures.
* However, this provides a layout of the nodes arranged from top-down of the
* elements.
*
* Based on a series of parameters, this function applies geometrical
* transformations on the coordinates that represent the node's positions are
* made to arrange them appropriately.
*
* We also need to consider the fact that, in the case of displaying more than
* one Dendrogram structure, from the second structure onwards, we need to add
* in our calcuation infomration regarding how much each structure is to be
* displaced, in order to fit the drawing area.
*
* @param {number} dx The amount of pixels in X we need to displace nodes
* @param {number} dy The amount of pixels in Y we need to displace nodes
* @param {number} width The width of a dendrogram structure
* @param {number} height The height of a dendrogram structure
* @param {number} labelWidth The amount of pixels used for label display
*/
public updateCoordinates(dx: number, dy: number, width: number, height: number,
labelWidth: number): void{
// to assign an initial position for all nodes within the dendrogram, we
// use d3's cluster function
var cluster: any;
cluster = d3.cluster()
.size([height, width]); // cluster function arranges the dendrogram
cluster(this._root); // horizontally, so we switch width and height
// once we have the initial coordinates, we update them in order to
// visualize the dendrogram vertically and
// using as much space available
this._root.each(function(node){
var p: number[] = [ node.x, node.y ];
// to place the dendrogram vertically, we rotate it 90 in -Z
p = Utils.rotate(p, -Math.PI/2);
// then, we displace it, allong X and Y, to its final position
p = Utils.translate(p, [dx, dy]);
// finally, we update the corresponding values of the node
node.x = p[0];
node.y = p[1];
return node;
});
// scale the coordinates of nodes to represent the correct distance between
// nodes, as calculated by the underlying clustering algorithm
this._scaleXCoordinates();
// flip vertically if so specified by the user
if( this._flipped )
this._flipXCoordinates(labelWidth);
}
} // class Dendrogram


This webpage allows a user to input integers and later the machine responds with whether the integers inputted have a scalene or equilateral or an isosceles value.


---
layout: default
title: BlueBag > Our Team
section_id: about-the-team
members:
- image: niels_larson.jpg
name: Niels
Larson
position: Founder, CEO
desc:
Niels is a Junior at Carnegie Mellon and is pursuing a B.S. in Business Administration with tracks in Entrepreneurship, Operations Management, and Accounting with a minor in cello performance. As founder at CEO, Niels works closely with ll aspects of the team, utilizing his financial and operational acumen to create a system that runs smoothly from start to finish, creating the cheapest and healthiest option for Blue Bag.
- image: lillian_lee.jpg
name: Lillian
Lee
position: Co-Founder
desc:
Team Member
- image: colin_mccullough.jpg
name: Colin McCullough
position: Buisness
desc:
Colin is a Senior at Carnegie Mellon pursuing a B.S. in Business Administration on the Entrepreneurship track with a minor in global systems management. He is from Orlando, FL and will be enrolling in Law School at Santa Clara University after graduation. In his free time, he enjoys playing golf.
- image: stephanie_l.png
name: Stephanie Lemineux
position: Buisness
desc:
Stephanie is a Junior at Carnegie Mellon pursuing a B.S. in Business Administration with a track in entrepreneurship and a minor in psychology. Stephanie's role focuses on customer research including acquiring beta testers, conducting interviews with potentail customers, and processing feedback.
- image: rebecca_alford.jpg
name: Rebecca Alford
position: Software Engineer
desc:
Rebecca is a Senior at Carnegie Mellon pursuing a B.S. in Computational Chemistry with a focus in software engineering. She created the Blue Bag website and supports the data analytics side of Blue Bag so we can learn and adapt to our customers needs.
- image: justin_finkenaur.jpg
name: Justin Finkenaur
position: Designer
desc:
Justin is a Junior at Carnegie Mellon University pursuing a B.F.A in Industrial Design. He worked on all of the visual details of Blue Bag including the website, branding, and packaging.
---
Learn about our team
Our mission is to feed and educate undergraduate students with a cheaper and healthier alternative to any campus meal plan. To accomplish our goal, we deliver fresh ingredients with simple, easy-to-follow recipes so students can learn to cook in their own kitchens without too much time and great hassle. We have assembled a diverse team to carry out our mission, all Carnegie Mellon students with various expertise. Read about them below!
{{member.position}}
{{member.desc}}


THE CONTENDER -------------
Former film critic Rod Lurie breaks the 'those who can't, teach' maxim by writing and directing "The Contender," a pungent political drama with roots in Otto Preminger's 1962 film "Advise and Consent."
The President (Jeff Bridges, wonderfully funny AND presidential) needs to elect a new VP and chooses Senator Laine Hanson (Joan Allen, "Pleasantville") because he wants to get a woman in high office as part of his Democratic legacy. In doing so, he's overlooking the popular Governor Jack Hathaway (William Petersen, "To Live and Die in LA"), who's just become a media darling for trying to save a woman from drowning. Unfortunately, the chairman of the house committee that must pass the veep's nomination is Congressman Shelly Runyon (an almost unrecognizable Gary Oldman) who's both a political foe of President Jackson Evans and one of Hathaway's best friends. He uncovers a sex scandal (a drunken gang bang) from Laine's college days and leaks it. Laine refuses to acknowledge the story by either confirmation or denial, stating that it's no one's business. The frustrated President continues to back her, although it's clear Runyon is winning the battle and Hathaway hovers in the wings.
This complex drama showcases the political process with all it's gameplay centered with the issue of the right to privacy vs. the right to know. There are thriller elements mostly represented by the character of FBI Agent Wilhemina (Kathryn Morris) whose personal agenda is unclear while she investigates Senator Hanson.
Lurie's screenplay keeps us off base, never sure of characters' true motivations. He makes clever associations with character development as well. We're introduced to Laine as she's enjoying a passionate interlude atop her office desk with her husband, campaign manager William (Robin Thomas), so sex is implanted in our minds with the main character at the onset. The President and his opponent are both food obsessed, with the President humorously trying to stump the White House chef (requests for shark steak sandwiches and hazelnut pudding are an amusing sideline, if done once too often) while Runyon is shown devouring rare steaks. Senator Hathaway's attemptto save a woman whose car plummets from a bridge into a river is the anti-Chappaquiddick. Laine's remark that President Clinton was 'responsible but not guilty,' is later echoed in reverse by her mentor. Lurie's screenplay is solid all the way, except for a major plot twist that's too perfunctorily coincidental to hold water.
The cast is fabulous. Joan Allen has a firm grip on her first lead role (Lurie wrote the screenplay for her). She's clear eyed and strong through overwhelming adversity, always sticking to her principles whatever the country believes of her morals. I'm sure she'll be remembered when Oscar nominations are awarded. Gary Oldman paints a complex, old world politician, who'll pull any trick in the book to force his agenda. He clearly believes he's doing right, however. The film's 'bad guy' is just not that black and white in the hand of this actor. The vastly underrated Jeff Bridges gives the film's most purely entertaining performance as a down to earth President who doesn't showboat his intellect.
Christian Slater plays a young and idealistic congressman who compaigns to join Runyon's committee, only to have his eyes opened by what he learns from the inside. He hasn't been this good since his early teenage films. William Petersen plays Hathaway as the modern equivalent of a good ol' governer with a knack for heroism and ambitions stoked by a nagging wife. Sam Elliott is brusquely outspoken and loyal as the Chief of Staff, who may disagree with Evans' support of Hanson (or any woman), but stays the course. Saul Rubinek fades into the woodwork as the communications officer. Philip Baker Hall appears in one scene as Laine's Republican father and former state Governor. Kathryn Morris makes an impression as the chirpy FBI investigator.
Technically the film is top notch, with Denis Maloney's urgent photography keeping the audience in the midst of the action. Costume design by Matthew Jacobsen (who utilizes designers such as Armani, John Galliano, Pamela Dennis and Brooks Brothers) is notable as well.
"The Contender" is slated to be a real contender itself when year 2000's film lists are tallied.
A-
For more Reeling reviews visit www.reelingreviews.com
<EMAIL_ADDRESS><EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Returns the field's "imported" value, if any processing is required. For example, this function may be used to convert a date/time field's string into a unix timestamp or a numeric string into an integer or float.
Overrides PhormField::import_value() (Returns the field's "imported" value, if any processing is required. For example, this function may be used to convert a date/time field's string into a unix timestamp or a numeric string into an integer or float.)


Python XML Parser Tutorial: Read xml file example(Minidom, ElementTree)
What is XML?
XML stands for eXtensible Markup Language. It was designed to store and transport small to medium amounts of data and is widely used for sharing structured information.
Python enables you to parse and modify XML document. In order to parse XML document you need to have the entire XML document in memory. In this tutorial, we will see how we can use XML minidom class in Python to load and parse XML file.
In this tutorial, we will learn-
How to Parse XML using minidom
We have created a sample XML file that we are going to parse.
Step 1) Inside file, we can see first name, last name, home and the area of expertise (SQL, Python, Testing and Business)
Step 2) Once we have parsed the document, we will print out the "node name" of the root of the document and the "firstchild tagname". Tagname and nodename are the standard properties of the XML file.
- Import the xml.dom.minidom module and declare file that has to be parsed (myxml.xml)
- This file carries some basic information about employee like first name, last name, home, expertise, etc.
- We use the parse function on the XML minidom to load and parse the XML file
- We have variable doc and doc gets the result of the parse function
- We want to print the nodename and child tagname from the file, so we declare it in print function
- Run the code- It prints out the nodename (#document) from the XML file and the first child tagname (employee) from the XML file
Note:
Nodename and child tagname are the standard names or properties of an XML dom. In case if you are not familiar with these type of naming conventions.
Step 3) We can also call the list of XML tags from the XML document and printed out. Here we printed out the set of skills like SQL, Python, Testing and Business.
- Declare the variable expertise, from which we going to extract all the expertise name employee is having
- Use the dom standard function called "getElementsByTagName"
- This will get all the elements named skill
- Declare loop over each one of the skill tags
- Run the code- It will give list of four skills
How to Create XML Node
We can create a new attribute by using "createElement" function and then append this new attribute or tag to the existing XML tags. We added a new tag "BigData" in our XML file.
- You have to code to add the new attribute (BigData) to the existing XML tag
- Then you have to print out the XML tag with new attributes appended with existing XML tag
- To add a new XML and add it to the document, we use code "doc.create elements"
- This code will create a new skill tag for our new attribute "Big-data"
- Add this skill tag into the document first child (employee)
- Run the code- the new tag "big data" will appear with the other list of expertise
XML Parser Example
Python 2 Example
import xml.dom.minidom
def main():
# use the parse() function to load and parse an XML file
doc = xml.dom.minidom.parse("Myxml.xml");
# print out the document node and the name of the first child tag
print doc.nodeName
print doc.firstChild.tagName
# get a list of XML tags from the document and print each one
expertise = doc.getElementsByTagName("expertise")
print "%d expertise:" % expertise.length
for skill in expertise:
print skill.getAttribute("name")
# create a new XML tag and add it into the document
newexpertise = doc.createElement("expertise")
newexpertise.setAttribute("name", "BigData")
doc.firstChild.appendChild(newexpertise)
print " "
expertise = doc.getElementsByTagName("expertise")
print "%d expertise:" % expertise.length
for skill in expertise:
print skill.getAttribute("name")
if name == "__main__":
main();
Python 3 Example
import xml.dom.minidom
def main():
# use the parse() function to load and parse an XML file
doc = xml.dom.minidom.parse("Myxml.xml");
# print out the document node and the name of the first child tag
print (doc.nodeName)
print (doc.firstChild.tagName)
# get a list of XML tags from the document and print each one
expertise = doc.getElementsByTagName("expertise")
print ("%d expertise:" % expertise.length)
for skill in expertise:
print (skill.getAttribute("name"))
# create a new XML tag and add it into the document
newexpertise = doc.createElement("expertise")
newexpertise.setAttribute("name", "BigData")
doc.firstChild.appendChild(newexpertise)
print (" ")
expertise = doc.getElementsByTagName("expertise")
print ("%d expertise:" % expertise.length)
for skill in expertise:
print (skill.getAttribute("name"))
if __name__ == "__main__":
main();
How to Parse XML using ElementTree
ElementTree is an API for manipulating XML. ElementTree is the easy way to process XML files.
We are using the following XML document as the sample data:
<data>
<items>
<item name="expertise1">SQL</item>
<item name="expertise2">Python</item>
</items>
</data>
Reading XML using ElementTree:
we must first import the xml.etree.ElementTree module.
import xml.etree.ElementTree as ET
Now let's fetch the root element:
root = tree.getroot()
Following is the complete code for reading above xml data
import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()
# all items data
print('Expertise Data:')
for elem in root:
for subelem in elem:
print(subelem.text)
output:
Expertise Data:
SQL
Python
Summary:
Python enables you to parse the entire XML document at one go and not just one line at a time. In order to parse XML document you need to have the entire document in memory.
-
To parse XML document
- Import xml.dom.minidom
- Use the function "parse" to parse the document ( doc=xml.dom.minidom.parse (file name);
- Call the list of XML tags from the XML document using code (=doc.getElementsByTagName( "name of xml tags")
-
To create and add new attribute in XML document
- Use function "createElement"


When browsing the internet, digital traces are left behind that websites can legally use to keep track of your activities and identify you. The data collected can include; your location, what device you’re using, which advertisements you’ve clicked on, and more.
Privacy settings do not fully protect you when you are inside of a specified browser. Certain information about you is inevitably revealed to the sites you visit. For example, you start sharing your IP address as soon as you go online, which can be used to pinpoint your approximate location.
Your browser also reveals its name, allowing sites to know whether you’re a Firefox, Explorer, or Chrome user. Even seemingly small and tiny details such as the current battery level can be revealed if you’re online from a phone, tablet, or laptop. Other information revealed by your browser can include, what CPU and GPU are you using,which operating system you’re running, as well as the plugins installed and screen resolution
Browser fingerprinting is another method used by sites to identify users even if they don’t enter any personally identifiable information. It involves tracking and detecting the configuration and settings information that browsers make visible. *See page regarding Browser Fingerprinting for more information
Because of the highly improbable likelihood that another person is using the SAME exact specifications as you such as resolution, screen size, plugins and other browser ID, websites can know if you are the same user as before via these specifications


embed a picture
embed a google map
embed a youtube vid
embed a youtube vid that starts at 3 mins
use HTML5 tag
embedded with the object tag
GeeksforGeeks
embedding hello world webpage with object tag
feature not demoed in workshop: embedding a game


§386A-1 Definitions. As used in this chapter:
"Board" means the fund's board of directors.
"Fund" means the Hawaii state compensation mutual insurance fund. [L 1985, c 296, pt of §11; am L 1989, c 277, §2]


This demo illustrates transferable objects.
Transferable objects are objects that are not copied (e.g. using something like structured cloning).
Instead, the data is transferred from one context to another. The 'version' from the calling context is no longer available once transferred
to the new context. For example, when transferring an ArrayBuffer
from main app to Worker, the
original ArrayBuffer
from the main thread is cleared and no longer usable.
This vastly improves performance of sending data to a Worker.
This demo sends a 32MB ArrayBuffer
to a worker and back using a prefixed version of postMessage()
that supports transferable objects: webkitPostMessage()
.
If your browser doesn't support transferables, the sample falls back to old-skool structured cloning.
Support: Chrome Dev Channel 17+
Transferable Objects are lightning fast! The prefixed [window|worker].webkitPostMessage()
now supports sending an ArrayBuffer
as a transferable.


Motion activated security camera using DeviceMotion/Orientation, canvas, WebRTC
Read more about how its done at
Web Directions
Grab the code from
Github


Ecosystem
ES6 Introduction - Modules (...)
Modules also provides features such as
//Define Aliases for your imports
import {add as addOp, multiply as multOp} from 'es6module-math';
//And use them when you want to...
addOp(1, 2);
// Use the "default" keyword for only one element you want to export
export default class Person{
//
}
// You can also export whatever you want in the same module
export class Citizen{
}
// To get the default import, you can use the name you want (the syntax differs)
import KindOfPerson from 'default-export';
//You still can import other exported members
import {Citizen} from 'default-export';


The ads plugin was devised as a simple way to check wether an ad blocking mechanism is in use and beacon the data back to the server
To achieve this you have to provide a url to an image that you konw is an ad and you know it will be there for a long time. It tries to create the image with the url you provide. If if succeeds the parameter ads is beaconed back with the value of 1, otherwise it is 0
BOOMR.init({ beacon_url: "http://localhost:8000", ads: { ads_src: "http://i.cdn.turner.com/cnn/.element/img/3.0/global/misc/advertisement.gif" } });
There is only one parameter necessary for configuration
One variable is added to the beacon


{% extends "admin/base_site.html" %} {% load static %} {% block branding %}
django-addanother is a small app to enable the "add another" popup feature outside Django's admin.
If you want to replace select fields with autocompletes, try django-autocomplete-light.
If you can reproduce a bug in the demo project, it will be made a
priority to fix it, and add regression test to prevent it from occuring
again in the future. In this case, please clone the
GitHub repository, configure the simplest example you can in a new app in
test_project
and submit your pull request.
The easier you make it for us to reproduce your issue in an isolated use-case, the best are your chances to get a satisfying answer.


Asish Ghoshal
Department of Computer Science. Purdue University.
Office: LWSN 2149 #13
Email: a[last<EMAIL_ADDRESS>I am in the job market and am looking for academic/postdoctoral positions starting Spring 2019.
I am a PhD candidate in the Computer Science department at Purdue, advised by Prof. Jean Honorio. My research focuses on developing efficient algorithms, with provable guarantess, for various statistical and machine learning problems. Recently, I have focussed on the problem of learning graphical models and graphical games from data. I am also interested in using machine learning techniques to solve problems in computational biology and other application domains.
Previously, I obtained my Master in Computer Science and Engineering degree from Texas A&M and briefly worked as a software development engineer in the demand forecasting team at Amazon, Seattle.
news
| May 21, 2018 | Our paper on learning perturbation models for structured prediction has been accepted to ICML 2018. Here is the arxiv version. |
| Apr 13, 2018 | I am pleased to receive the Cagiantas fellowship for the year 2018-2019 from the Purdue University College of Science. |
| Apr 8, 2018 | I will be in Lanzarote, Spain, from the 8th to the 11th of April for AISTATS 2018. |
| Dec 22, 2017 | Two papers accepted to AISTATS 2018. |
awards
| 2018 | Received the Cagiantas fellowship from the Purdue College of Science. One of the two receipients of the award for 2018. The citation reads: "The Cagiantas Fellowship was established in December 2016 with a gift from a generous donor to support a senior Ph.D. student who has demonstrated a high level of accomplishment in their research and has participated in activities that have had a positive impact on the climate of their department, University or community." |
| 2017 | Travel award to attend NIPS'17 |
| 2017 | Travel award to attend AISTATS'17 |
| 2015 | Best paper award, ACM Conference on Bioinformatics, Computational Biology, and Health Informatics (ACM BCB) |
| 2015 | Travel award to attend Big Data in Life Sciences workshop (co-located with ACM-BCB'15) |


Mild Cognitive Impairment at Work (MCI@Work)
May 2018 to Present
This multidisciplinary project (occupational therapy, psychology, elder law and labour law, social and political science, and engineering) will provide new insights into what happens when people develop mild cognitive impairment or early stage dementia while still working, how this is influenced by legislation, and how it is experienced and potentially managed by those concerned. Start date for this three year project is 1 April 2018.
Project Focus
- - The role of technology, the match between persons and technologies, testing new/adapted solutions to support continued work and/or transition from work, and the learning approaches and problem-solving strategies each person develops for adapting and managing working with cognitive impairment;
- - How laws, regulations and policies in different countries and organizations can support and/or hinder continued work and/or transition from work, how these are practiced by a variety of actors, and how they can be understood better by people with dementia/MCI and their employers;
- - The creation of a new digital tool to support understanding, communication, and planning between people with MCI and their employers.
Team Members
In Canada: Dr. Jennifer Boger, Karan Shastri, Sheida Marashi (University of Waterloo) and Dr. Arlene Astell, Dr. Parminder Flora (Ontario Shores Centre for Mental Health Sciences, University of Toronto)
In Sweden: Dr. Louise Nygard, Dr. Charlotta Ryd (Karolinska Institute)
In Finland: Dr. Anna Maki-Petaja-Leinonen, Mervi Issakainen (University of Eastern Finland)
Project Progress and Phases
Domain Knowledge
People involved: Karan Shastri, Dr. Jennifer Boger
Timeline ~ 3 months
This project is part of my Masters thesis at UW. As part of my research and thesis, I am expected to do a literature background review, and understand what's already done by researchers in the field. My review process ranged from reading scientific papers from biomedicial engineering and occupational therapy journals to talking with dementia societies, locally.
After doing a thorough domain review and getting familiar with the project space, the next steps for me were to decide what my thesis and research focus will be on this long-term project. While doing my literature research on the domaiain, I realized that while there is a lot of research being done on dementia and user-centered technology, there is not a lot of focus on early-onset dementia. Early-onset dementia is when people develop symptoms of dementia before the age of sixty-five. The number of documented studies examining designing technology for people with early or young-onset dementia (YOD) is less.
The project focus at our end in Waterloo was designing a digital tool that would better assist employees living with YOD and their employers to identify specific challenge points and changing roles associated with these challenge points. We brainstormed and decided on carrying out the design of the tool in three phases: a) Deploying focus groups to understand people with YOD and their experience at the workplace; b) Deploying participatory workshops with people with YOD to eclicit design and tech preferences; and c) Prototyping the tool. My role and task was to do user research and managing all aspects of UX, all the way from ideation - to prototyping.
EthicsPeople involved: Karan Shastri, Dr. Jennifer Boger, Dr. Parminder Flora
Timeline - 3 months
It is pivotal for me and the team to make sure that the study follows an ethics protocol. This is done to ensure the safety of the participants througout the research and makes the process of raw data - all the way from collection to storage more streamlined. To make sure the study followed an ethics protocol, we submitted an ethics application which was cleared by both - the research ethics boards at the University of Waterloo and Ontario Shores.
Scoping - User ResearchPeople involved: Entire team
Timeline ~ 2 months
The problem space was better understood by interviewing the end-users, i.e. people with mild cognitive impairment or young-onset dementia, following ethics clearance. The recruitment involved posters, advertisements and reaching out to local dementia associations.
The interviews were semi-structured and involved either one-on-one or a focus group setting, depending on participant preference. I co-lead all interviews and better understood what we were dealing with. The sessions were audio and video recorded, transcribed and two analysis' methods were performed to observe themes and barriers at work.


My name is Daniel Mejia and I was born & raised in El Paso, TX. I am a graduate of The University of Texas at El Paso with a Bachelor of Science degree in Computer Science (May 2015) and a Master of Science Degree in Computer Science (May 2017). I am currently pursuing a Ph.D. in Computer Science.


>>> Assignment: Notes on Failure, Joyce Carol Oates & AI Ethics Case Studies
"The idea that treatments had occurred without the explicit consent of Charlie’s users eroded trust in the system. In order to restore trust and provide opportunities for true consent, users demanded transparency."
There's much about this case study that sets off my skepticism antennae — but one thing they fail to mention is that they are engaging communities that have been routinely harmed and manipulated by health systems. A lack of transparency here, given this history, is deeply alienating and undermines any perceived good the "Benevolence Team" might have hoped they were achieving.
"In Hedonia, he pointed out, the trading of stolen identities is not explicitly unlawful. This man further alleged that he had been the victim of entrapment by Panoptica law enforcement, as he had not originally intended to sell the identities in his possession. He blamed JEREMY for egging him on and inducing the sale. Transcripts of their conversation show that JEREMY repeatedly offered an increasing amount for the identities possessed by the man."
I thought this scenario was really fascinating — geopolitics is super complicated in digital space where there are not tangible borders. I'm also fascinated by the JEREMY bot's tendency towards entrapment as it moves towards efficiency. It also makes me think about American policing and AI, where using AI in predictive policing actually creates a self-fulfilling prophecy; the more heavily policed neighborhoods are, the more the need for policing is justified. This feels like a similar self-fulfilling loop: would the individuals have committed crimes if the crimes weren't trying to be found?
“Alice's career invalidism deprives her of everything, yet, paradoxically, of nothing. The triumph of the Diary is the triumph of a distinct literary voice, as valuable as the voice of Virginia Woolf's celebrated diaries.”
I really struggled with Notes on Failure as a whole. While I appreciate the framing that it's necessary to 'fail' in order to bring yourself to the next, higher level of talent, there seems to be some kind of suggestion that creative workers are somehow addicted to strife, to failure, or that they somehow seek out hardship. This feeds into a narrative of suffering artist that I have struggled with my entire professional life. I question if it's empowering or just simply unhealthy to uphold 'the glorious struggle' as necessary, to fesishize or romanticize hardship and the poor conditions under which artists work.
This is especially potent for me in reading the passage about Alice James and her early death. Is it noble to uphold her poor health as the herald to her incredible work? Is it noble to assert that if she were duly recognized as equals to her brother that she wouldn't have created such fabulous work? Is it noble to assert that her dismissal was rise to her genius? Perhaps she would have been less ill had she been treated better, perhaps her talent would have soared higher if it were regarded and supported. Perhaps failure doesn't need to be framed in terms of death and devastation, illness and depression.


Let me share with you a vision of where Steem-engine.com is heading. We want it so that when you create a token it has instant liquidity on the steem-engine.com dex that’s currently in a testing phase, but also on exchanges the world over that already offer Steem! Can you see what that could do for your business? Imagine getting instant access for your token on the major exchanges like Bittrex, Kraken, and Binance!?! Talk about liquidity.
Anyway, that’s what we’re working towards. We’ve barely started, but we should have the Dex out sometime in February. But that also brings up some legal concerns. We’re not legal experts and certainly not agents of the bar association. So, take the following as something to consider as you complete your actual legal due diligence.
(Though I should also note, because this stuff is complicated and the consequences can be massive fines or jail time we’re planning on partnering with a law firm that has some expertise in cryptocurrency to offer legal services. So, watch out for that this month as well, but for now let’s just get started with some token basics.)
USA regulatory body - the Security and Exchange Commission (SEC)
I was born in new england. I have to worry about American laws and the SEC. They have rules regarding selling securities that often involve a ton of reporting, which is difficult for small companies to do. There are exceptions and when our team begins offering legal services it’ll be around these exceptions that make it vastly easier for small companies to issue securities LEGALLY! (looking at you eth for your vast array of illegal security tokens)
Security Tokens
Selling unlicensed securities is no bueno. That can land you in serious legal trouble with fiat based regulatory bodies that have a way of taking your money or locking you away. So, for your sake we don’t want you to do that. That said not all tokens are automatically securities, and there are of course legal ways to make your security legal. **It’s complicated and that’s why we suggest working with a legal team.
Meet the Howey test
To determine if your token is a security the Supreme Court came up with what’s known as the Howey test, which is essentially the litmus test that the legal and financial system uses to determine if what you’re offering is a security.
They ask themselves does this token represent “a contract, transaction, or scheme whereby a person invests his money in a common enterprise and is led to expect profits solely from the efforts of the promoter or a third party.”
That might still be too much legalize for folks, so let me try to break that down into English a little more-
Did you invest money?
Was it in a common enterprise, like you expect to own a part of a company vs owning a product?
Do you have an expectation of profits?
Are your profits coming from the work of other people?
If the answers to those questions are “yes” then you’re very likely buying/creating/issuing a security. If it’s a security you’re going to have to figure out a pathway with regulatory bodies.
This however is just a guideline that they use. Ultimately it doesn’t matter what you think the token is and only matters what the SEC thinks the token is. If they call it a security token, or you don’t get them to weigh in on it initially and they later determine it’s a security token then life may get pretty hard for you and potentially anyone that bought the token.
That’s why we are working to get a legal firm involved and I keep repeating you should be seeking legal advice before you get yourself in hot water with a tool that you didn’t weigh completely.
Be safe as a token creator or a token buyer
If you’re looking to issue a token do some more research or partner with a legal firm (preferrably thorugh us starting later this month) to make sure what you’re doing is legal.
If you’re looking to purchase tokens either for products and services or as an investment make sure you do your due diligence on companies to verify if they are acting within the law they are governed by.
The dex protocol is open to everyone who creates a token and we’re not offering any guarantees or issuing any advice on the tokens that come out. We’re expecting third parties to come through and start talking about and rating the various tokens and possibly categorizing them as securities.
This is for information purposes only, and at this very moment we’re not currently offering legal advice or services. Since we know many people are going to be interested in raising millions of dollars through steem we’re going to start offering those services soon. For now, issue tokens with care and thought, and if you’re going to treat them as company/dapp ownership be careful and be sure that you’re acting within the laws of the country you operate in.
A conversation with @stalkerz from Oracle-D
This page is synchronized from the post: ‘Vision for Steem-Engine.com and some legal challenges along the way for tokens’


Time Your Adventure
Start Date
Check the Schedule
Date
From datepicker
Time
From DB
Available
From DB
Price
From DB
Add To Cart


VirtComp offers a variety of things you can do to get money
This is not the game of upgrading your company, this is the game of thinking
Explore and build your company
Trade and Interact with other players
Profit and Withdraw your money from your company money
Welcome to VirtComp! Our mission is to create a community to bring the world
together through create and sell, where everyone can earn real money.
Duo suas detracto maiestatis ad, commodo lucilius invenire nec ad,
eum et oratio disputationi. Falli lobortis his ad


Computer Engineering
I chose computer engineering as the area of engineering that interests me the most. I picked it because I think that it is a subject with a lot of future potential and few limitations. There are so many options for those who wish to enter this career path and there is a place for all of them.


@* * This template takes a single argument, a String containing a * message to display. *@ @(webJarAssets: WebJarAssets, hasDB: Boolean) @* * Call the `main` template with two arguments. The first * argument is a `String` with the title of the page, the second * argument is an `Html` object containing the body of the page. *@ @main(webJarAssets, "Gestalt Framework") {
| Name | Virtual Host | Container Instance | Status |
|---|


GOALS
Select |
Period |
Goal |
Donation |
|---|---|---|---|
The secret of getting ahead is getting started
– Mark twain
Define your own goals.
We take care of your commitment.
Your goal setting
Just insert the timeframe, your goal and the preferred amount of money which is on the line in the table below.
If you did a mistake or want to erase a goal you set before - just click the checkbox of this specific goal and press the "delete" button afterwards. Your goal should be deleted.
Select |
Period |
Goal |
Donation |
|---|---|---|---|


to do insert inner metadata
Title:
Centerville, Calif - Japanese field laborers packing cauliflower in feild on large-scale ranch owned by white operator (L.E. Bailey).
Photographer:
Lange, Dorthea - Centerville, Calif. 04/09/1942.
From:
War Relocationn Authority Photographs of Japanese-American Evacuation and Resettlement.
Contributing Institution:
The Bancroft Library. University of California, Berkeley.
Suggested Citation:
Available from the Online Archive of California; http://ark.cdlib.org/ark:
/13030/ft8x0nb5tc.
more information about this image...
Rights and Permissions


--- title: music requests ---
Requests should fit in one of the existing channels.
If you think there should be a new channel, choose "misc" and specify in the notes. For example, there may be a vapourwave channel in the future (and there's currently a bunch of vapourwave music on the "everything" channel).


Passing parameters into templates
- Pandoc key/val pairs are passed into the corresponding
$<varname>$
- Variables are defined using link labels at the top of the Markdown file
- They will not show up in the document
- I realize this is hacky, but necessary to keep Markdown integrity
Themes and templates
- HTML templates are stored in templates/
- If no template variable is set, the default is used
- Reveal.js has several included themes
- beige, default, moon, night, serif, simple, sky, solarized


Explore the full list of jobs
| Rank | Job title | Risk of automation |
|---|---|---|
| 1 | Telephone salespersons | 99.02 |
| 2 | Typists and related keyboard occupations | 98.51 |
| 3 | Legal secretaries | 97.65 |
| 4 | Financial accounts managers | 97.61 |
| 5 | Routine inspectors and testers | 97.59 |
| 6 | Weighers, graders and sorters | 97.59 |
| 7 | Sales administrators | 97.23 |
| 8 | Book-keepers, payroll managers and wages clerks | 97.04 |
| 9 | Finance officers | 97.04 |
| 10 | Pensions and insurance clerks and assistants | 96.96 |
| 11 | Bank and post office clerks | 96.84 |
| 12 | Financial administrative occupations (other) | 96.84 |
| 13 | Local government administrative occupations | 96.75 |
| 14 | Officers of non-governmental organisations | 96.75 |
| 15 | Library clerks and assistants | 96.73 |
| 16 | Assemblers and routine operatives (other) | 96.67 |
| 17 | Paper and wood machine operatives | 96.55 |
| 18 | Telephonists | 96.46 |
| 19 | Communication operators | 96.46 |
| 20 | Textile process operatives | 96.08 |
| 21 | Financial and accounting technicians | 95.90 |
| 22 | Receptionists | 95.56 |
| 23 | Transport and distribution clerks and assistants | 95.52 |
| 24 | Estimators, valuers and assessors | 95.50 |
| 25 | Fishing and other elementary agriculture occupations (other) | 95.38 |
| 26 | Chartered and certified accountants | 95.33 |
| 27 | Taxation experts | 95.33 |
| 28 | Other skilled trades | 95.15 |
| 29 | Sales and retail assistants | 95.08 |
| 30 | Vehicle and parts salespersons and advisers | 95.08 |
| 31 | Print finishing and binding workers | 95.07 |
| 32 | Debt, rent and other cash collectors | 94.67 |
| 33 | Public services associate professionals | 94.45 |
| 34 | Inspectors of standards and regulations | 94.45 |
| 35 | Housekeepers and related occupations | 94.44 |
| 36 | Cleaning and housekeeping managers and supervisors | 94.44 |
| 37 | Collector salespersons and credit agents | 94.35 |
| 38 | Roundspersons and van salespersons | 94.35 |
| 39 | Market and street traders and assistants | 94.35 |
| 40 | Elementary sales occupations (other) | 94.35 |
| 41 | Market research interviewers | 94.18 |
| 42 | Pharmacy and other dispensing assistants | 93.96 |
| 43 | Smiths and forge workers | 93.48 |
| 44 | Other administrative occupations | 92.43 |
| 45 | Assemblers (electrical and electronic products) | 92.38 |
| 46 | Plant and machine operatives (other) | 92.11 |
| 47 | Pharmaceutical technicians | 91.72 |
| 48 | Furniture makers and other craft woodworkers | 91.62 |
| 49 | Customer service occupations (other) | 91.02 |
| 50 | Plastics process operatives | 90.66 |
| 51 | Retail cashiers and check-out operators | 90.25 |
| 52 | Waiters and waitresses | 89.92 |
| 53 | Roofers, roof tilers and slaters | 89.74 |
| 54 | Human resources administrative occupations | 89.69 |
| 55 | Security guards and related occupations | 89.34 |
| 56 | Mobile machine drivers and operatives (other) | 89.29 |
| 57 | Sewing machinists | 89.21 |
| 58 | Bakers and flour confectioners | 88.78 |
| 59 | Elementary administration occupations n.e.c. | 88.72 |
| 60 | Road construction operatives | 88.26 |
| 61 | Rail construction and maintenance operatives | 88.26 |
| 62 | Metal making and treating process operatives | 88.22 |
| 63 | Electroplaters | 88.08 |
| 64 | Process operatives (other) | 88.03 |
| 65 | Metal machining setters and setter-operators | 87.17 |
| 66 | Metal working machine operatives | 87.17 |
| 67 | Farm workers | 86.54 |
| 68 | Postal workers, mail sorters, messengers and couriers | 85.84 |
| 69 | Stock control clerks and assistants | 85.49 |
| 70 | Health care practice managers | 85.14 |
| 71 | Medical secretaries | 85.14 |
| 72 | Kitchen and catering assistants | 85.10 |
| 73 | Chemical and related process operatives | 84.69 |
| 74 | Butchers | 84.57 |
| 75 | Fishmongers and poultry dressers | 84.57 |
| 76 | Tailors and dressmakers | 83.97 |
| 77 | Printers | 83.10 |
| 78 | Printing machine assistants | 83.10 |
| 79 | Electrical and electronics technicians | 82.72 |
| 80 | Textiles, garments and related trades (other) | 82.46 |
| 81 | Rubber process operatives | 82.30 |
| 82 | Floorers and wall tilers | 82.04 |
| 83 | Bricklayers and masons | 82.00 |
| 84 | Other elementary services occupations | 81.79 |
| 85 | Food, drink and tobacco process operatives | 81.66 |
| 86 | Launderers, dry cleaners and pressers | 81.46 |
| 87 | Glass and ceramics process operatives | 81.36 |
| 88 | Industrial cleaning process occupations | 81.25 |
| 89 | Elementary process plant occupations n.e.c. | 81.25 |
| 90 | Painters and decorators | 80.94 |
| 91 | Moulders, core makers and die casters | 80.90 |
| 92 | Forestry workers | 80.49 |
| 93 | Assemblers (vehicles and metal goods) | 80.44 |
| 94 | Vehicle paint technicians | 80.23 |
| 95 | Elementary construction occupations | 80.02 |
| 96 | Agricultural machinery drivers | 79.43 |
| 97 | Agricultural and fishing trades (other) | 79.24 |
| 98 | Parking and civil enforcement occupations | 79.02 |
| 99 | School midday and crossing patrol occupations | 79.02 |
| 100 | Elementary security occupations (other) | 79.02 |
| 101 | Leisure and theme park attendants | 79.02 |
| 102 | Sheet metal workers | 77.83 |
| 103 | IT operations technicians | 77.76 |
| 104 | Welding trades | 77.73 |
| 105 | Tool makers, tool fitters and markers-out | 77.19 |
| 106 | Bar staff | 76.82 |
| 107 | Business and related associate professionals (other) | 76.58 |
| 108 | Farmers | 75.81 |
| 109 | Call and contact centre occupations | 75.35 |
| 110 | Plasterers | 74.67 |
| 111 | Pest control officers | 73.40 |
| 112 | Cooks | 73.38 |
| 113 | Quarry workers and related operatives | 73.11 |
| 114 | Glaziers, window fabricators and fitters | 72.84 |
| 115 | Carpenters and joiners | 72.40 |
| 116 | Marine and waterways transport operatives | 72.22 |
| 117 | Construction operatives (other) | 71.35 |
| 118 | Dispensing opticians | 71.06 |
| 119 | Metal plate workers, and riveters | 71.02 |
| 120 | Steel erectors | 71.02 |
| 121 | Laboratory technicians | 69.76 |
| 122 | Coal mine operatives | 69.59 |
| 123 | Records clerks and assistants | 69.55 |
| 124 | Estate agents and auctioneers | 68.06 |
| 125 | School secretaries | 68.05 |
| 126 | Personal assistants and other secretaries | 68.05 |
| 127 | Train and tram drivers | 67.80 |
| 128 | Vehicle body builders and repairers | 67.64 |
| 129 | Energy plant operatives | 66.98 |
| 130 | Horticultural trades | 66.87 |
| 131 | Gardeners and landscape gardeners | 66.87 |
| 132 | Groundsmen and greenkeepers | 66.87 |
| 133 | Caretakers | 66.29 |
| 134 | Window cleaners | 66.29 |
| 135 | Street cleaners | 66.29 |
| 136 | Insurance underwriters | 66.11 |
| 137 | Legal associate professionals | 65.99 |
| 138 | Crane drivers | 65.19 |
| 139 | Vehicle technicians, mechanics and electricians | 64.59 |
| 140 | Tyre, exhaust and windscreen fitters | 64.59 |
| 141 | Buyers and procurement officers | 64.33 |
| 142 | Shelf fillers | 64.02 |
| 143 | Chartered surveyors | 62.77 |
| 144 | Metal working production and maintenance fitters | 62.33 |
| 145 | Boat and ship builders and repairers | 62.33 |
| 146 | Rail and rolling stock builders and repairers | 62.33 |
| 147 | Bus and coach drivers | 61.23 |
| 148 | Dental nurses | 59.96 |
| 149 | Water and sewerage plant operatives | 59.84 |
| 150 | Purchasing managers and directors | 59.11 |
| 151 | Managers and directors in transport and distribution | 59.11 |
| 152 | Managers and directors in storage and warehousing | 59.11 |
| 153 | IT engineers | 58.35 |
| 154 | Houseparents and residential wardens | 57.74 |
| 155 | Care escorts | 57.74 |
| 156 | Cleaners and domestics | 57.28 |
| 157 | Elementary cleaning occupations n.e.c. | 57.28 |
| 158 | Hospital porters | 57.28 |
| 159 | Van drivers | 56.82 |
| 160 | Taxi and cab drivers and chauffeurs | 56.82 |
| 161 | Pre-press technicians | 56.55 |
| 162 | Building and civil engineering technicians | 56.52 |
| 163 | Architectural and town planning technicians | 56.52 |
| 164 | Rail transport operatives | 56.03 |
| 165 | Precision instrument makers and repairers | 55.92 |
| 166 | Nursery nurses and assistants | 55.67 |
| 167 | Teaching assistants | 55.67 |
| 168 | Educational support assistants | 55.67 |
| 169 | Scaffolders, stagers and riggers | 54.52 |
| 170 | Sports and leisure assistants | 53.32 |
| 171 | Health and safety officers | 53.03 |
| 172 | Weavers and knitters | 52.22 |
| 173 | Footwear and leather working trades | 52.22 |
| 174 | Librarians | 51.94 |
| 175 | Draughtspersons | 51.43 |
| 176 | Air transport operatives | 51.34 |
| 177 | Other drivers and transport operatives | 51.34 |
| 178 | Elementary storage occupations | 51.34 |
| 179 | Merchandisers and window dressers | 51.27 |
| 180 | Sales related occupations (other) | 51.27 |
| 181 | Credit controllers | 51.16 |
| 182 | Florists | 50.89 |
| 183 | Photographers, audio-visual and broadcasting equipment operators | 50.33 |
| 184 | Pipe fitters | 48.74 |
| 185 | Plumbers and heating and ventilating engineers | 48.74 |
| 186 | Fork-lift truck drivers | 48.20 |
| 187 | Refuse and salvage occupations | 48.15 |
| 188 | Engineering technicians | 47.71 |
| 189 | TV, video and audio engineers | 47.17 |
| 190 | Electrical and electronic trades (other) | 47.17 |
| 191 | Glass and ceramics makers, decorators and finishers | 46.80 |
| 192 | Nursing auxiliaries and assistants | 46.77 |
| 193 | Animal care services occupations (other) | 46.45 |
| 194 | Protective service associate professionals (other) | 46.42 |
| 195 | Undertakers, mortuary and crematorium assistants | 45.41 |
| 196 | Veterinary nurses | 44.61 |
| 197 | Conservation and environmental associate professionals | 41.55 |
| 198 | Large goods vehicle drivers | 40.78 |
| 199 | Finance and investment analysts and advisers | 40.70 |
| 200 | Care workers and home carers | 39.89 |
| 201 | Senior care workers | 39.89 |
| 202 | Business sales executives | 39.26 |
| 203 | Rail travel assistants | 39.05 |
| 204 | National government administrative occupations | 38.76 |
| 205 | Upholsterers | 38.61 |
| 206 | Archivists and curators | 38.28 |
| 207 | Packers, bottlers, canners and fillers | 37.89 |
| 208 | Air travel assistants | 37.76 |
| 209 | Sports coaches, instructors and officials | 37.66 |
| 210 | Actors, entertainers and presenters | 37.45 |
| 211 | Beauticians and related occupations | 36.88 |
| 212 | Vehicle valeters and cleaners | 36.76 |
| 213 | Chefs | 36.63 |
| 214 | Planning, process and production technicians | 36.08 |
| 215 | Importers and exporters | 35.93 |
| 216 | Aircraft maintenance and related trades | 35.42 |
| 217 | Leisure and travel service occupations (other) | 34.62 |
| 218 | Quality assurance technicians | 34.26 |
| 219 | Science, engineering and production technicians (other) | 34.26 |
| 220 | Authors, writers and translators | 32.71 |
| 221 | Hairdressers and barbers | 32.67 |
| 222 | Air-conditioning and refrigeration engineers | 32.63 |
| 223 | Advertising accounts managers and creative directors | 32.57 |
| 224 | Marketing associate professionals | 32.57 |
| 225 | Human resource managers and directors | 32.25 |
| 226 | Prison service officers (below principal officer) | 31.07 |
| 227 | Sports players | 28.29 |
| 228 | Sales supervisors | 27.92 |
| 229 | Medical radiographers | 27.47 |
| 230 | Medical and dental technicians | 27.47 |
| 231 | Travel agents | 26.26 |
| 232 | Aircraft pilots and flight engineers | 25.23 |
| 233 | Production managers and directors in mining and energy | 25.23 |
| 234 | Functional managers and directors (other) | 25.23 |
| 235 | Senior officers in fire, ambulance, prison and related services | 25.23 |
| 236 | Travel agency managers and proprietors | 25.23 |
| 237 | Property, housing and estate managers | 25.23 |
| 238 | Garage managers and owners | 25.23 |
| 239 | Hairdressing and beauty salon managers and owners | 25.23 |
| 240 | Waste disposal and environmental services managers | 25.23 |
| 241 | Managers and proprietors in other services | 25.23 |
| 242 | Human resources and industrial relations officers | 23.81 |
| 243 | Careers advisers and vocational guidance specialists | 23.81 |
| 244 | Business and related research professionals | 23.17 |
| 245 | Business, research and administrative professionals (other) | 23.17 |
| 246 | Police officers (sergeant and below) | 22.38 |
| 247 | Police community support officers | 22.38 |
| 248 | IT specialist managers | 21.61 |
| 249 | IT project and programme managers | 21.61 |
| 250 | IT and telecoms professionals (other) | 21.61 |
| 251 | IT user support technicians | 21.61 |
| 252 | Web design and development professionals | 20.58 |
| 253 | Physical scientists | 19.64 |
| 254 | Public relations professionals | 17.53 |
| 255 | Construction and building trades supervisors | 17.34 |
| 256 | Leisure and sports managers | 17.17 |
| 257 | Senior police officers | 17.01 |
| 258 | Sales accounts and business development managers | 16.45 |
| 259 | Managers and directors in retail and wholesale | 15.95 |
| 260 | Shopkeepers and store owners – wholesale and retail | 15.95 |
| 261 | Electricians and electrical fitters | 14.77 |
| 262 | Ship and hovercraft officers | 14.76 |
| 263 | Actuaries, economists and statisticians | 14.74 |
| 264 | Ophthalmic opticians | 13.73 |
| 265 | Dancers and choreographers | 13.36 |
| 266 | Driving instructors | 13.36 |
| 267 | Further education teaching professionals | 13.34 |
| 268 | Mechanical engineers | 13.14 |
| 269 | Youth and community workers | 13.09 |
| 270 | Child and early years officers | 13.09 |
| 271 | Housing officers | 13.09 |
| 272 | Welfare and housing associate professionals (other) | 13.09 |
| 273 | Town planning officers | 13.07 |
| 274 | Electronics engineers | 12.50 |
| 275 | Arts officers, producers and directors | 11.98 |
| 276 | Financial institution managers and directors | 11.43 |
| 277 | Product, clothing and related designers | 11.32 |
| 278 | Environmental health professionals | 10.53 |
| 279 | Social and humanities scientists | 10.42 |
| 280 | Electrical engineers | 10.19 |
| 281 | Primary and nursery education teaching professionals | 8.93 |
| 282 | Chief executives and senior officials | 8.73 |
| 283 | Fire service officers (watch manager and below) | 8.61 |
| 284 | Programmers and software development professionals | 8.49 |
| 285 | Journalists, newspaper and periodical editors | 8.41 |
| 286 | Residential, day and domiciliary care managers and owners | 8.34 |
| 287 | Restaurant and catering establishment managers and owners | 8.29 |
| 288 | Catering and bar managers | 8.29 |
| 289 | Biological scientists and biochemists | 8.01 |
| 290 | Natural and social science professionals (other) | 8.01 |
| 291 | Childminders and related occupations | 7.99 |
| 292 | Playworkers | 7.99 |
| 293 | Fitness instructors | 7.53 |
| 294 | Air traffic controllers | 7.15 |
| 295 | Production managers and directors in construction | 7.09 |
| 296 | Construction project managers and related professionals | 7.09 |
| 297 | Construction and building trades (other) | 7.09 |
| 298 | Management consultants and business analysts | 7.03 |
| 299 | Business and financial project management professionals | 7.03 |
| 300 | Quality assurance and regulatory professionals | 7.03 |
| 301 | Financial managers and directors | 6.92 |
| 302 | Company secretaries | 6.92 |
| 303 | Chemical scientists | 6.16 |
| 304 | Health associate professionals (other) | 5.52 |
| 305 | Paramedics | 4.89 |
| 306 | Ambulance staff (excl. paramedics) | 4.89 |
| 307 | Graphic designers | 4.86 |
| 308 | Managers and owners in agriculture and horticulture | 4.74 |
| 309 | Managers and onwers in forestry, fishing and related services | 4.74 |
| 310 | Brokers | 4.54 |
| 311 | Musicians | 4.47 |
| 312 | Counsellors | 4.33 |
| 313 | Social workers | 4.33 |
| 314 | Probation officers | 4.33 |
| 315 | Welfare professionals (other) | 4.33 |
| 316 | Artists | 3.82 |
| 317 | Veterinarians | 3.76 |
| 318 | Conference and exhibition managers and organisers | 3.74 |
| 319 | IT and telecoms directors | 3.51 |
| 320 | Barristers and judges | 3.46 |
| 321 | Solicitors | 3.46 |
| 322 | Legal professionals (other) | 3.46 |
| 323 | Design and development engineers | 3.41 |
| 324 | Engineering professionals (other) | 3.41 |
| 325 | Quantity surveyors | 3.41 |
| 326 | Quality control and planning engineers | 3.41 |
| 327 | Higher education teaching professionals | 3.25 |
| 328 | Production managers and directors in manufacturing | 2.96 |
| 329 | Production and process engineers | 2.91 |
| 330 | Advertising and public relations directors | 2.67 |
| 331 | Telecommunications engineers | 2.53 |
| 332 | Conservation professionals | 2.43 |
| 333 | Environment professionals | 2.43 |
| 334 | Dental practitioners | 2.15 |
| 335 | Physiotherapists | 2.12 |
| 336 | Medical practitioners | 2.03 |
| 337 | Civil engineers | 1.93 |
| 338 | Architects | 1.80 |
| 339 | Chartered architectural technologists | 1.80 |
| 340 | Research and development managers | 1.72 |
| 341 | Clergy | 1.65 |
| 342 | Skilled metal, electrical and electronic trades supervisors | 1.55 |
| 343 | Office managers | 1.45 |
| 344 | Office supervisors | 1.45 |
| 345 | Customer service managers and supervisors | 1.45 |
| 346 | Vocational and industrial trainers and instructors | 1.45 |
| 347 | Marketing and sales directors | 1.36 |
| 348 | Special needs education teaching professionals | 1.21 |
| 349 | Podiatrists | 1.17 |
| 350 | Health professionals (other) | 1.17 |
| 351 | Occupational therapists | 1.17 |
| 352 | Pharmacists | 1.15 |
| 353 | IT business analysts, architects and systems designers | 1.08 |
| 354 | Nurses | 0.90 |
| 355 | Midwives | 0.90 |
| 356 | Teaching and educational professionals (other) | 0.85 |
| 357 | Secondary education teaching professionals | 0.78 |
| 358 | Senior professionals at educational establishments | 0.75 |
| 359 | Health services and public health managers and directors | 0.73 |
| 360 | Psychologists | 0.71 |
| 361 | Therapy professionals (other) | 0.71 |
| 362 | Social services managers and directors | 0.67 |
| 363 | Speech and language therapists | 0.48 |
| 364 | Education advisers and school inspectors | 0.42 |
| 365 | Hotel and accommodation managers and owners | 0.39 |
| 366 | Publicans and managers of licensed premises | 0.39 |
Jump to:


Help
Bookmarks is a SPA that helps you to store all Bookmarks on one page so that you
can view them all together.
To Add Category : Go to Menu > Click Add Category > Enter Category Name > Click on Add Sign > Done
To Add a Link : Switch On Edit Mode by Clicking Edit Mode Button > Click on Add (+) Sign in required
Category > Enter Bookmark Name and URL and click Add Sign
To Edit/Delete Category : Switch On Edit Mode by Clicking Edit Mode Button > Then Click on Pencil
Sign > Now in case of edit Enter a new Name for Category and click on Edit Category and in case you
want to delete the whole category and links inside it then check the given checkbox and click on
Delete Category button
To Edit/Delete Link : Switch On Edit Mode by Clicking Edit Mode Button > Then hover on the link that
you want to edit/delete then click on the delete icon > Then confirm deletion > Done (For edit just
delete and add the new link)
To Export/Import Bookmarks : Go to Menu > Click on Export/Import JSON > Copy the data for exporting
/ Paste your data for importing and click import
To Hide/Show Category Bookmarks List : You can simply click on the circled arrow / category name in
order to hide/show the bookmarks in that category list.


--- layout: post status: publish published: true title: Thank you, Internet. - Episode 7.20 author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 11203 wordpress_url: http://ivyenvy.com/?p=11203 date: '2015-05-17 22:47:09 +0000' date_gmt: '2015-05-18 03:47:09 +0000' categories: - Podcast tags: [] comments: - id: 18615 author: Wes Jameson author_email: '' author_url: '' date: '2015-05-18 09:29:55 +0000' date_gmt: '2015-05-18 14:29:55 +0000' content: Corey keep up the great work ---
It's been quite a week in Chicago Cubs baseball. We start things off by talking about some of the events that led to a six-game winning streak. Some are good baseball and some are flukey plays.
We can't go an episode without drooling over Kris Bryant, so of course we do that. The Cubs have made several roster moves recently, including sending Travis Wood to the bullpen. We run through the significant moves.
We received several listener questions and we go through all of those. Kurt gives us a (good) scary stat of the week and we read some internet muscle flexes.


Lebanon - Profile
Facts
- The latest travel advice should be consulted before travel to Lebanon as the situation there can change rapidly. The risk of unrest remains and civilians are at risk from terrorist incidents. See
UKFCO
- Since the 2006 conflict between Israel and the Hizbollah forces, much of the destruction caused in Beirut at that time has been repaired. Although the political situation can be volatile, more cruising boats are visiting Lebanon. The construction of two new marinas in Beirut and being able to use the ATCL marina in Jounieh as a convenient base from which to explore the interior, has helped.
- The Lebanese are a multi-faith, multi-ethnic people. Arabic is the official language, but English and French are also widely spoken. The two main religions are Islam and Christianity.
Security
It is currently advised not to travel to anywhere within 5km of the border with Syria, the southern suburbs of Beirut or to Tripoli. Nor to travel to south of the Litani river (because of the risks of landmines and insecurity).
Check such websites as the U.K. Foreign office or the USA Stare Travel Advice
Last updated October 2014.
Weather
The pleasant climate is Lebanon's main attraction as the weather is mostly sunny. The summers are hot and dry, while the winters are cool and occasionally rainy.
Lebanon Weather Forecast
For links to free global weather information, forecast services and extreme weather information see the Noonsite Weather Page
Main Ports


You have a unique opportunity to join
HeapSpace team as a volunteer and participate in organizing
the largest independent Tech Conference in the region.
More details about what we need and what do you get in return you can find here:
APPLICATION FOR VOLUNTEERS
It would be helpful if you’d share this call among your friends.
Also check us on
Facebook,
Twitter and
Instagram, and follow us for the newest info!


Yew Labs anticipates that you will need to use the Projection Device for this puzzle.
{% include "round/override-codes.tmpl" with code1="RPN9bNyFDKBbqoOfIz86+9OEAXPCe2vGP5akD6IXh8aG8cudVn8sf4h3cDU=" code2="epwRSIkXRlUQheycyVWgHFqhYLD7omcjpzoZ7ES1E5jxVIinMsacYdNetSE=" %}
- ...then go to the northernmost tree, and back, then to the sphinx, then the grand staircase, then back to the sphinx,
then to the spaceship, and finally the third-southernmost bush.
- ...then go to second base, home plate, and the Eggman.
- ...then go to the southwest corner of the building with two towers, the entrance to the curvy building, and the castle.
- ...then go to the baseball player, the western crumple, the bottom of the staircase, and back to where you started.
- ...then go to the westernmost pillars, the banner, the main indoor way out, and the center outdoor way out.
- ...then go to the fishing book, and the flag.
- ...then go to the door to a building whose number has seven proper divisors, the sail, eastern lamppost, and the western lamppost.
- ...then go to the entrance to Building 3, the pond, and the entrance to Building 1.
- ...then go to the purple flower, to the middle of the seating area, to the white flower, and to the blackboard.
- ...then go to the lowest window on the side of the nearby building, the corner of the building, the nearest dorm entrance, the interior of that dorm, and the scooter.
- ...then go to the corner, and then the next corner, and then the end of the hall.


Thermostat temperature is
Current temperature is:
degrees celsius
London
Hong Kong
Paris
+
-
Reset
Turn On
Turn Off
Power saving mode is
On