text:
package org.arakhne.afc.math.continous.object2d;

import java.util.NoSuchElementException;

import org.arakhne.afc.math.MathConstants;
import org.arakhne.afc.math.generic.PathWindingRule;
import org.arakhne.afc.math.generic.Point2D;
import org.arakhne.afc.math.generic.Vector2D;
import org.arakhne.afc.math.geometry.d2.afp.Segment2afp;
import org.arakhne.afc.math.geometry.d2.d.Rectangle2d;
import org.arakhne.afc.math.matrix.Transform2D;
import org.arakhne.afc.vmutil.ReflectionUtil;

/** 2D rectangle with floating-point points.
 *
 * @author $Author: sgalland$
 * @version $FullVersion$
 * @mavengroupid $GroupId$
 * @mavenartifactid $ArtifactId$
 * @deprecated see {@link Rectangle2d}
 */
@Deprecated
@SuppressWarnings("all")
public class Rectangle2f extends AbstractRectangularShape2f<Rectangle2f> {

	private static final long serialVersionUID = 8716296371653330467L;

	/** Replies if two rectangles are intersecting.
	 *
	 * @param x1 is the first corner of the first rectangle.
	 * @param y1 is the first corner of the first rectangle.
	 * @param x2 is the second corner of the first rectangle.
	 * @param y2 is the second corner of the first rectangle.
	 * @param x3 is the first corner of the second rectangle.
	 * @param y3 is the first corner of the second rectangle.
	 * @param x4 is the second corner of the second rectangle.
	 * @param y4 is the second corner of the second rectangle.
	 * @return true if the two shapes are intersecting; otherwise
	 * false
	 */
	public static boolean intersectsRectangleRectangle(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) {
		assert(x1<=x2);
		assert(y1<=y2);
		assert(x3<=x4);
		assert(y3<=y4);
		return x2 > x3
				&&
				x1 < x4
				&&
				y2 > y3
				&&
				y1 < y4;
	}

	/** Replies if two rectangles are intersecting.
	 *
	 * @param x1 is the first corner of the rectangle.
	 * @param y1 is the first corner of the rectangle.
	 * @param x2 is the second corner of the rectangle.
	 * @param y2 is the second corner of the rectangle.
	 * @param x3 is the first point of the line.
	 * @param y3 is the first point of the line.
	 * @param x4 is the second point of the line.
	 * @param y4 is the second point of the line.
	 * @return true if the two shapes are intersecting; otherwise
	 * false
	 */
	public static boolean intersectsRectangleLine(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) {
		int a, b;
		a = Segment2afp.ccw(x3, y3, x4, y4, x1, y1, 0);
		b = Segment2afp.ccw(x3, y3, x4, y4, x2, y1, 0);
		if (a!=b && b!=0) return true;
		b = Segment2afp.ccw(x3, y3, x4, y4, x2, y2, 0);
		if (a!=b && b!=0) return true;
		b = Segment2afp.ccw(x3, y3, x4, y4, x1, y2, 0);
		return (a!=b && b!=0);
	}

	private static final int CS_INSIDE = 0; // 0000
	private static final int CS_LEFT = 1; // 0001
	private static final int CS_RIGHT = 2; // 0010
	private static final int CS_BOTTOM = 4; // 0100
	private static final int CS_TOP = 8; // 1000

	private static int getCohenSutherlandRegion(float x1, float y1, float x2, float y2, float px, float py) {
		int region = CS_INSIDE;
		if (px<x1) {
			region |= CS_LEFT;
		}
		else if (px>x2) {
			region |= CS_RIGHT;
		}
		if (py<y1) {
			region |= CS_BOTTOM;
		}
		else if (py>y2) {
			region |= CS_TOP;
		}
		return region;
	}

	/** Replies if two rectangles are intersecting.
	 *
	 * @param x1 is the first corner of the rectangle.
	 * @param y1 is the first corner of the rectangle.
	 * @param x2 is the second corner of the rectangle.
	 * @param y2 is the second corner of the rectangle.
	 * @param x3 is the first point of the segment.
	 * @param y3 is the first point of the segment.
	 * @param x4 is the second point of the segment.
	 * @param y4 is the second point of the segment.
	 * @return true if the two shapes are intersecting; otherwise
	 * false
	 */
	public static boolean intersectsRectangleSegment(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) {
		float px1 = x3;
		float py1 = y3;
		float px2 = x4;
		float py2 = y4;

		// Cohen–Sutherland algorithm
		int r1 = getCohenSutherlandRegion(x1, y1, x2, y2, px1, py1);
		int r2 = getCohenSutherlandRegion(x1, y1, x2, y2, px2, py2);
		boolean accept = false;

		while (true) {
			if ((r1 | r2)==0) {
				// Bitwise OR is 0. Trivially accept and get out of loop
				accept =  true;
				break;//to speed up the algorithm
			}
			if ((r1 & r2)!=0) {
				// Bitwise AND is not 0. Trivially reject and get out of loop
				break;
			}

			// failed both tests, so calculate the line segment to clip
			// from an outside point to an intersection with clip edge
			float x, y;

			// At least one endpoint is outside the clip rectangle; pick it.
			int outcodeOut = r1!=0 ? r1 : r2;

			// Now find the intersection point;
			// use formulas y = y0 + slope * (x - x0), x = x0 + (1 / slope) * (y - y0)
			if ((outcodeOut & CS_TOP)!=0) { // point is above the clip rectangle
				x = px1 + (px2 - px1) * (y2 - py1) / (py2 - py1);
				y = y2;
			}
			else if ((outcodeOut & CS_BOTTOM)!=0) { // point is below the clip rectangle
				x = px1 + (px2 - px1) * (y1- py1) / (py2 - py1);
				y = y1;
			}
			else if ((outcodeOut & CS_RIGHT)!=0) {  // point is to the right of clip rectangle
				y = py1 + (py2 - py1) * (x2 - px1) / (px2 - px1);
				x = x2;
			}
			else {
				//else if ((outcodeOut & CS_LEFT)!=0) {   // point is to the left of clip rectangle
				y = py1 + (py2 - py1) * (x1 - px1) / (px2 - px1);
				x = x1;
			}

			//NOTE:*****************************************************************************************

			/* if you follow this algorithm exactly(at least for c#), then you will fall into an infinite loop
            in case a line crosses more than two segments. to avoid that problem, leave out the last else
            if(outcodeOut & LEFT) and just make it else*/

			//**********************************************************************************************

			// Now we move outside point to intersection point to clip
			// and get ready for next pass.
			if (outcodeOut == r1) {
				px1 = x;
				py1 = y;
				r1 = getCohenSutherlandRegion(x1, y1, x2, y2, px1, py1);
			}
			else {
				px2 = x;
				py2 = y;
				r2 = getCohenSutherlandRegion(x1, y1, x2, y2, px2, py2);
			}
		}

		return accept;
	}

	/** Compute the union of r1 and r2.
	 *
	 * @param dest is the union.
	 * @param r1
	 * @param r2
	 */
	public static void union(Rectangle2f dest, Rectangle2f r1, Rectangle2f r2) {
		dest.setFromCorners(
				Math.min(r1.getMinX(), r2.getMinX()),
				Math.min(r1.getMinY(), r2.getMinY()),
				Math.max(r1.getMaxX(), r2.getMaxX()),
				Math.max(r1.getMaxY(), r2.getMaxY()));
	}

	/** Replies if a rectangle is inside in the rectangle.
	 *
	 * @param rx1 is the lowest corner of the enclosing-candidate rectangle.
	 * @param ry1 is the lowest corner of the enclosing-candidate rectangle.
	 * @param rwidth1 is the width of the enclosing-candidate rectangle.
	 * @param rheight1 is the height of the enclosing-candidate rectangle.
	 * @param rx2 is the lowest corner of the inner-candidate rectangle.
	 * @param ry2 is the lowest corner of the inner-candidate rectangle.
	 * @param rwidth2 is the width of the inner-candidate rectangle.
	 * @param rheight2 is the height of the inner-candidate rectangle.
	 * @return true if the given rectangle is inside the ellipse;
	 * otherwise false.
	 */
	public static boolean containsRectangleRectangle(float rx1, float ry1, float rwidth1, float rheight1, float rx2, float ry2, float rwidth2, float rheight2) {
		if (rwidth1<=0f || rwidth2<=0f || rheight1<=0 || rheight2<=0f) {
			return false;
		}
		return (rx2 >= rx1 &&
				ry2 >= ry1 &&
				(rx2 + rwidth2) <= rx1 + rwidth1 &&
				(ry2 + rheight2) <= ry1 + rheight1);
	}

	/** Compute the intersection of r1 and r2.
	 *
	 * @param dest is the intersection.
	 * @param r1
	 * @param r2
	 */
	public static void intersection(Rectangle2f dest, Rectangle2f r1, Rectangle2f r2) {
		float x1 = Math.max(r1.getMinX(), r2.getMinX());
		float y1 = Math.max(r1.getMinY(), r2.getMinY());
		float x2 = Math.min(r1.getMaxX(), r2.getMaxX());
		float y2 = Math.min(r1.getMaxY(), r2.getMaxY());
		if (x1<=x2 && y1<=y2) {
			dest.setFromCorners(x1, y1, x2, y2);
		}
		else {
			dest.set(0, 0, 0, 0);
		}
	}

	/**
	 */
	public Rectangle2f() {
		//
	}

	/**
	 * @param min is the min corner of the rectangle.
	 * @param max is the max corner of the rectangle.
	 */
	public Rectangle2f(Point2f min, Point2f max) {
		super(min, max);
	}

	/**
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 */
	public Rectangle2f(float x, float y, float width, float height) {
		super(x, y, width, height);
	}

	/**
	 * @param r
	 */
	public Rectangle2f(Rectangle2f r) {
		super(r);
	}

	@Override
	public void set(Shape2f s) {
		s.toBoundingBox(this);
	}

	/** {@inheritDoc}
	 */
	@Override
	public Rectangle2f toBoundingBox() {
		return this;
	}

	/** {@inheritDoc}
	 */
	@Override
	public float distanceSquared(Point2D p) {
		float dx;
		if (p.getX()<getMinX()) {
			dx = getMinX() - p.getX();
		}
		else if (p.getX()>getMaxX()) {
			dx = p.getX() - getMaxX();
		}
		else {
			dx = 0f;
		}
		float dy;
		if (p.getY()<getMinY()) {
			dy = getMinY() - p.getY();
		}
		else if (p.getY()>getMaxY()) {
			dy = p.getY() - getMaxY();
		}
		else {
			dy = 0f;
		}
		return dx*dx+dy*dy;
	}

	/** {@inheritDoc}
	 */
	@Override
	public float distanceL1(Point2D p) {
		float dx;
		if (p.getX()<getMinX()) {
			dx = getMinX() - p.getX();
		}
		else if (p.getX()>getMaxX()) {
			dx = p.getX() - getMaxX();
		}
		else {
			dx = 0f;
		}
		float dy;
		if (p.getY()<getMinY()) {
			dy = getMinY() - p.getY();
		}
		else if (p.getY()>getMaxY()) {
			dy = p.getY() - getMaxY();
		}
		else {
			dy = 0f;
		}
		return dx + dy;
	}

	/** {@inheritDoc}
	 */
	@Override
	public float distanceLinf(Point2D p) {
		float dx;
		if (p.getX()<getMinX()) {
			dx = getMinX() - p.getX();
		}
		else if (p.getX()>getMaxX()) {
			dx = p.getX() - getMaxX();
		}
		else {
			dx = 0f;
		}
		float dy;
		if (p.getY()<getMinY()) {
			dy = getMinY() - p.getY();
		}
		else if (p.getY()>getMaxY()) {
			dy = p.getY() - getMaxY();
		}
		else {
			dy = 0f;
		}
		return Math.max(dx, dy);
	}

	/** {@inheritDoc}
	 */
	@Override
	public boolean contains(float x, float y) {
		return (x>=getMinX() && x<=getMaxX())
				&&
				(y>=getMinY() && y<=getMaxY());
	}

	@Override
	public boolean contains(Rectangle2f r) {
		return containsRectangleRectangle(
				getMinX(), getMinY(), getWidth(), getHeight(),
				r.getMinX(), r.getMinY(), r.getWidth(), r.getHeight());
	}

	/** {@inheritDoc}
	 */
	@Override
	public Point2D getClosestPointTo(Point2D p) {
		float x;
		int same = 0;
		if (p.getX()<getMinX()) {
			x = getMinX();
		}
		else if (p.getX()>getMaxX()) {
			x = getMaxX();
		}
		else {
			x = p.getX();
			++same;
		}
		float y;
		if (p.getY()<getMinY()) {
			y = getMinY();
		}
		else if (p.getY()>getMaxY()) {
			y = getMaxY();
		}
		else {
			y = p.getY();
			++same;
		}
		if (same==2) return p;
		return new Point2f(x,y);
	}

	/** Add the given coordinate in the rectangle.
	 *

	 * The corners of the rectangles are moved to
	 * enclosed the given coordinate.
	 *
	 * @param p
	 */
	public void add(Point2D p) {
		add(p.getX(), p.getY());
	}

	/** Add the given coordinate in the rectangle.
	 *

	 * The corners of the rectangles are moved to
	 * enclosed the given coordinate.
	 *
	 * @param x
	 * @param y
	 */
	public void add(float x, float y) {
		if (x<getMinX()) {
			setMinX(x);
		}
		else if (x>getMaxX()) {
			setMaxX(x);
		}
		if (y<getMinY()) {
			setMinY(y);
		}
		else if (y>getMaxY()) {
			setMaxY(y);
		}
	}

	/** Compute and replies the union of this rectangle and the given rectangle.
	 * This function does not change this rectangle.
	 *

	 * It is equivalent to (where ur is the union):
	 *

	 * Rectangle2f ur = new Rectangle2f();
	 * Rectangle2f.union(ur, this, r);
	 *

	 *
	 * @param r
	 * @return the union of this rectangle and the given rectangle.
	 * @see #union(Rectangle2f, Rectangle2f, Rectangle2f)
	 * @see #setUnion(Rectangle2f)
	 */
	public Rectangle2f createUnion(Rectangle2f r) {
		Rectangle2f rr = new Rectangle2f();
		union(rr, this, r);
		return rr;
	}

	/** Compute and replies the intersection of this rectangle and the given rectangle.
	 * This function does not change this rectangle.
	 *

	 * It is equivalent to (where ir is the intersection):
	 *

	 * Rectangle2f ir = new Rectangle2f();
	 * Rectangle2f.intersection(ir, this, r);
	 *

	 *
	 * @param r
	 * @return the union of this rectangle and the given rectangle.
	 * @see #intersection(Rectangle2f, Rectangle2f, Rectangle2f)
	 * @see #setIntersection(Rectangle2f)
	 */
	public Rectangle2f createIntersection(Rectangle2f r) {
		Rectangle2f rr = new Rectangle2f();
		intersection(rr, this, r);
		return rr;
	}

	/** Compute the union of this rectangle and the given rectangle and
	 * change this rectangle with the result of the union.
	 *

	 * It is equivalent to:
	 *

	 * Rectangle2f.union(this, this, r);
	 *

	 *
	 * @param r
	 * @see #union(Rectangle2f, Rectangle2f, Rectangle2f)
	 * @see #createUnion(Rectangle2f)
	 */
	public void setUnion(Rectangle2f r) {
		union(this, this, r);
	}

	/** Compute the intersection of this rectangle and the given rectangle.
	 * This function changes this rectangle.
	 *

	 * It is equivalent to:
	 *

	 * Rectangle2f.intersection(this, this, r);
	 *

	 *
	 * @param r
	 * @see #intersection(Rectangle2f, Rectangle2f, Rectangle2f)
	 * @see #createIntersection(Rectangle2f)
	 */
	public void setIntersection(Rectangle2f r) {
		intersection(this, this, r);
	}

	@Override
	public PathIterator2f getPathIterator(Transform2D transform) {
		if (transform==null) {
			return new CopyPathIterator(
					getMinX(), getMinY(),
					getMaxX(), getMaxY());
		}
		return new TransformPathIterator(
				getMinX(), getMinY(),
				getMaxX(), getMaxY(),
				transform);
	}

	@Override
	public boolean equals(Object obj) {
		if (obj == this) {
			return true;
		}
		if (obj instanceof Rectangle2f) {
			Rectangle2f rr2d = (Rectangle2f) obj;
			return ((getMinX() == rr2d.getMinX()) &&
					(getMinY() == rr2d.getMinY()) &&
					(getWidth() == rr2d.getWidth()) &&
					(getHeight() == rr2d.getHeight()));
		}
		return false;
	}

	@Override
	public int hashCode() {
		long bits = 1L;
		bits = 31L * bits + floatToIntBits(getMinX());
		bits = 31L * bits + floatToIntBits(getMinY());
		bits = 31L * bits + floatToIntBits(getMaxX());
		bits = 31L * bits + floatToIntBits(getMaxY());
		return (int) (bits ^ (bits >> 32));
	}

	@Override
	public boolean intersects(Rectangle2f s) {
		return intersectsRectangleRectangle(
				getMinX(), getMinY(),
				getMaxX(), getMaxY(),
				s.getMinX(), s.getMinY(),
				s.getMaxX(), s.getMaxY());
	}

	@Override
	public boolean intersects(Ellipse2f s) {
		return Ellipse2f.intersectsEllipseRectangle(
				s.getMinX(), s.getMinY(),
				s.getMaxX(), s.getMaxY(),
				getMinX(), getMinY(),
				getMaxX(), getMaxY());
	}

	@Override
	public boolean intersects(Circle2f s) {
		return Circle2f.intersectsCircleRectangle(
				s.getX(), s.getY(),
				s.getRadius(),
				getMinX(), getMinY(),
				getMaxX(), getMaxY());
	}

	@Override
	public boolean intersects(Segment2f s) {
		return intersectsRectangleSegment(
				getMinX(), getMinY(),
				getMaxX(), getMaxY(),
				s.getX1(), s.getY1(),
				s.getX2(), s.getY2());
	}

	@Override
	public boolean intersects(Path2f s) {
		return intersects(s.getPathIterator((float) MathConstants.SPLINE_APPROXIMATION_RATIO));
	}

	@Override
	public boolean intersects(PathIterator2f s) {
		// Copied from AWT API
		if (isEmpty()) return false;
		int mask = (s.getWindingRule() == PathWindingRule.NON_ZERO ? -1 : 2);
		int crossings = Path2f.computeCrossingsFromRect(
				s,
				getMinX(), getMinY(), getMaxX(), getMaxY(),
				false, true);
		return (crossings == MathConstants.SHAPE_INTERSECTS ||
				(crossings & mask) != 0);
	}

	@Override
	public String toString() {
		return ReflectionUtil.toString(this);
	}

	/** Move this rectangle to avoid collision
	 * with the reference rectangle.
	 *
	 * @param reference is the rectangle to avoid collision with.
	 * @return the displacement vector.
	 */
	public Vector2D avoidCollisionWith(Rectangle2f reference) {
		float dx1 = reference.getMaxX() - getMinX();
		float dx2 = getMaxX() - reference.getMinX();
		float dy1 = reference.getMaxY() - getMinY();
		float dy2 = getMaxY() - reference.getMinY();

		float absdx1 = Math.abs(dx1);
		float absdx2 = Math.abs(dx2);
		float absdy1 = Math.abs(dy1);
		float absdy2 = Math.abs(dy2);

		float dx = 0;
		float dy = 0;

		if (dx1>=0 && absdx1<=absdx2 && absdx1<=absdy1 && absdx1<=absdy2) {
			// Move according to dx1
			dx = dx1;
		}
		else if (dx2>=0 && absdx2<=absdx1 && absdx2<=absdy1 && absdx2<=absdy2) {
			// Move according to dx2
			dx = - dx2;
		}
		else if (dy1>=0 && absdy1<=absdx1 && absdy1<=absdx2 && absdy1<=absdy2) {
			// Move according to dy1
			dy = dy1;
		}
		else {
			// Move according to dy2
			dy = - dy2;
		}

		set(
				getMinX()+dx,
				getMinY()+dy,
				getWidth(),
				getHeight());

		return new Vector2f(dx, dy);
	}

	/** Move this rectangle to avoid collision
	 * with the reference rectangle.
	 *
	 * @param reference is the rectangle to avoid collision with.
	 * @param displacementDirection is the direction of the allowed displacement.
	 * @return the displacement vector.
	 */
	public Vector2D avoidCollisionWith(Rectangle2f reference, Vector2D displacementDirection) {
		if (displacementDirection==null || displacementDirection.lengthSquared()==0f)
			return avoidCollisionWith(reference);

		float dx1 = reference.getMaxX() - getMinX();
		float dx2 = reference.getMinX() - getMaxX();
		float dy1 = reference.getMaxY() - getMinY();
		float dy2 = reference.getMinY() - getMaxY();

		float absdx1 = Math.abs(dx1);
		float absdx2 = Math.abs(dx2);
		float absdy1 = Math.abs(dy1);
		float absdy2 = Math.abs(dy2);

		float dx, dy;

		if (displacementDirection.getX()<0) {
			dx = -Math.min(absdx1, absdx2);
		}
		else {
			dx = Math.min(absdx1, absdx2);
		}

		if (displacementDirection.getY()<0) {
			dy = -Math.min(absdy1, absdy2);
		}
		else {
			dy = Math.min(absdy1, absdy2);
		}

		set(
				getMinX()+dx,
				getMinY()+dy,
				getWidth(),
				getHeight());

		displacementDirection.set(dx, dy);
		return displacementDirection;
	}

	/** Iterator on the path elements of the rectangle.
	 *
	 * @author $Author: sgalland$
	 * @version $FullVersion$
	 * @mavengroupid $GroupId$
	 * @mavenartifactid $ArtifactId$
	 */
	private static class CopyPathIterator implements PathIterator2f {

		private final float x1;
		private final float y1;
		private final float x2;
		private final float y2;
		private int index = 0;

		/**
		 * @param x1
		 * @param y1
		 * @param x2
		 * @param y2
		 */
		public CopyPathIterator(float x1, float y1, float x2, float y2) {
			this.x1 = Math.min(x1, x2);
			this.y1 = Math.min(y1, y2);
			this.x2 = Math.max(x1, x2);
			this.y2 = Math.max(y1, y2);
			if (Math.abs(this.x1-this.x2)<=0f || Math.abs(this.y1-this.y2)<=0f) {
				this.index = 6;
			}
		}

		@Override
		public boolean hasNext() {
			return this.index<=5;
		}

		@Override
		public PathElement2f next() {
			int idx = this.index;
			++this.index;
			switch(idx) {
			case 0:
				return new PathElement2f.MovePathElement2f(
						this.x1, this.y1);
			case 1:
				return new PathElement2f.LinePathElement2f(
						this.x1, this.y1,
						this.x2, this.y1);
			case 2:
				return new PathElement2f.LinePathElement2f(
						this.x2, this.y1,
						this.x2, this.y2);
			case 3:
				return new PathElement2f.LinePathElement2f(
						this.x2, this.y2,
						this.x1, this.y2);
			case 4:
				return new PathElement2f.LinePathElement2f(
						this.x1, this.y2,
						this.x1, this.y1);
			case 5:
				return new PathElement2f.ClosePathElement2f(
						this.x1, this.y1,
						this.x1, this.y1);
			default:
				throw new NoSuchElementException();
			}
		}

		@Override
		public void remove() {
			throw new UnsupportedOperationException();
		}

		@Override
		public PathWindingRule getWindingRule() {
			return PathWindingRule.NON_ZERO;
		}

		@Override
		public boolean isPolyline() {
			return true;
		}

	}

	/** Iterator on the path elements of the rectangle.
	 *
	 * @author $Author: sgalland$
	 * @version $FullVersion$
	 * @mavengroupid $GroupId$
	 * @mavenartifactid $ArtifactId$
	 */
	private static class TransformPathIterator implements PathIterator2f {

		private final Transform2D transform;
		private final float x1;
		private final float y1;
		private final float x2;
		private final float y2;
		private int index = 0;

		private final Point2D p1 = new Point2f();
		private final Point2D p2 = new Point2f();

		/**
		 * @param x1
		 * @param y1
		 * @param x2
		 * @param y2
		 * @param transform
		 */
		public TransformPathIterator(float x1, float y1, float x2, float y2, Transform2D transform) {
			this.transform = transform;
			this.x1 = Math.min(x1, x2);
			this.y1 = Math.min(y1, y2);
			this.x2 = Math.max(x1, x2);
			this.y2 = Math.max(y1, y2);
			if (Math.abs(this.x1-this.x2)<=0f || Math.abs(this.y1-this.y2)<=0f) {
				this.index = 6;
			}
		}

		@Override
		public boolean hasNext() {
			return this.index<=5;
		}

		@Override
		public PathElement2f next() {
			int idx = this.index;
			++this.index;
			switch(idx) {
			case 0:
				this.p2.set(this.x1, this.y1);
				if (this.transform!=null) {
					this.transform.transform(this.p2);
				}
				return new PathElement2f.MovePathElement2f(
						this.p2.getX(), this.p2.getY());
			case 1:
				this.p1.set(this.p2);
				this.p2.set(this.x2, this.y1);
				if (this.transform!=null) {
					this.transform.transform(this.p2);
				}
				return new PathElement2f.LinePathElement2f(
						this.p1.getX(), this.p1.getY(),
						this.p2.getX(), this.p2.getY());
			case 2:
				this.p1.set(this.p2);
				this.p2.set(this.x2, this.y2);
				if (this.transform!=null) {
					this.transform.transform(this.p2);
				}
				return new PathElement2f.LinePathElement2f(
						this.p1.getX(), this.p1.getY(),
						this.p2.getX(), this.p2.getY());
			case 3:
				this.p1.set(this.p2);
				this.p2.set(this.x1, this.y2);
				if (this.transform!=null) {
					this.transform.transform(this.p2);
				}
				return new PathElement2f.LinePathElement2f(
						this.p1.getX(), this.p1.getY(),
						this.p2.getX(), this.p2.getY());
			case 4:
				this.p1.set(this.p2);
				this.p2.set(this.x1, this.y1);
				if (this.transform!=null) {
					this.transform.transform(this.p2);
				}
				return new PathElement2f.LinePathElement2f(
						this.p1.getX(), this.p1.getY(),
						this.p2.getX(), this.p2.getY());
			case 5:
				return new PathElement2f.ClosePathElement2f(
						this.p2.getX(), this.p2.getY(),
						this.p2.getX(), this.p2.getY());
			default:
				throw new NoSuchElementException();
			}
		}

		@Override
		public void remove() {
			throw new UnsupportedOperationException();
		}

		@Override
		public PathWindingRule getWindingRule() {
			return PathWindingRule.NON_ZERO;
		}

		@Override
		public boolean isPolyline() {
			return true;
		}

	}

}


text:
Sky Deutschland and MX1 expand collaboration
June 18, 2019 08.51 Europe/London By Jörn Krieger
MX1, the technical services subsidiary of Astra satellite operator SES, has concluded an extended service agreement with Sky Deutschland.
In particular, the scope of MX1's contingency service will be expanded to include the German pay-TV broadcaster's over-the-top (OTT) signals as well as its main broadcasts.
The MX1 broadcast centre will simultaneously receive all essential data and video transmission material from Sky Deutschland's main channels. In the event that a natural disaster or other catastrophe impacts Sky Deutschland's media centre, its broadcast or OTT signal can be rapidly restored via MX1's broadcast centre in Unterföhring near Munich, Germany.
The agreement includes content management, playout and uplink services for the main signal as well as encoding and distribution for OTT delivery.
"Big players such as Sky need a reliable partner that can assure service continuity in case an unforeseen external catastrophe impacts their own infrastructure," said Christoph Mühleib, managing director of Astra Deutschland, responsible for marketing and sales of Astra and MX1 in Germany, Austria and Switzerland. "I'm proud to say that in such an event MX1 can guarantee to jump in and take over all contracted services on the same day."
Filed Under: Channels, Newsline, OTT, Platforms, Satellite, Technology Tagged With: Astra, Christoph Mühleib, MX1, SES, Sky Deutschland Edited: June 18, 2019 08:59
About Jörn Krieger
Jörn reports on the latest developments in Germany, Austria and Switzerland. Since 1992, he has been working as a freelance journalist, specialised in digital media, broadcast technology, convergence and new markets. He also takes up University lectureships, writes articles in specialist publications, and produces radio reports. Jörn is also a moderator of panel discussions at industry events such as ANGA COM, Medientage München and IFA Berlin.
Following a series of service provider roll-outs, including Melita in Italy, Cablenet in Cyprus and a UK expansion with Virgin Media, Julian Clover caught up with Plume's co-founder and CEO, Fahri Diner, to learn more about how the company is helping ISPs to resolve common Wi-Fi problems. Related
Roussev prepares Vivacom sale, sets sights on Telekom Romania
Volker Libovsky moves from Liberty Global to Magenta Telekom
Cyfrowy Polsat declares OTT revolution

redpajama_set_name: RedPajamaCommonCrawl


text:
var Bunyan = require('bunyan');
var BunyanFormat = require('bunyan-format');
var logOutStream = BunyanFormat({ outputMode: 'short' });
var Promise = require("bluebird");
var redis = require('redis');
var redisScan = require('redisscan');
var EventEmitter = require('events').EventEmitter;
var argv = require('minimist')(
	process.argv.slice(2),
	{
		boolean: 'v',
		defaut: {
			s: false,
			v: false,
			h: 'localhost',
			p: 6379,
			c: 'get'
		}
	}
);
Promise.promisifyAll(redis.RedisClient.prototype);
Promise.promisifyAll(redis.Multi.prototype);

var app = {};
global.app = app;
app.events = new EventEmitter();
app.config = {};
app.config.redis = {
	host: 'localhost',
	port: 6379
};
app.pattern = 'nrsc*';
app.verbose = false;
app.silent = false;
app.command = 'get';
app.count = 0;

app.packageJson = require(__dirname + '/../package.json');
app.argv = argv;
global.log = console;
log = Bunyan.createLogger(
	{
		name: app.packageJson.name + '@' + app.packageJson.version,
		streams: [
			{
				level: 'debug',
				stream: logOutStream
			}
		]
	}
);

checkArguments();
app.redisClient = redis.createClient();
app.redisClient.on(
	'error',
	function (err) {
		log.error('!! redis Error');
		log.error(err);
		process.exit(1);
	}
);
app.redisClient.on(
	'ready',
	function (err) {
		if (app.verbose) {
			log.info(':: redis ready');
		}
		startWorking();
	}
);

function checkArguments() {
	if (Object.keys(app.argv).length < 2 || typeof app.argv.m !== 'string' || app.argv.m.length < 1) {
		log.error(':: please provide at least the -m option \n-h <host:localhost> \n-p <port:6379> \n-v <verbose:false> \n-s <silent:false> \n-m <match-pattern:nrsc*> \n-c <command:get>');
		return process.exit(1);
	}
	// log.debug(app.argv);
	if (app.argv.s && app.argv.s == true) {
		app.silent = true;
	}
	if (app.argv.v && app.argv.v == true) {
		app.verbose = true;
	}
	if (typeof app.argv.h === 'string') {
		app.config.redis.host = app.argv.h;
	}
	if (typeof app.argv.p === 'number') {
		app.config.redis.port = app.argv.p;
	}
	if (typeof app.argv.c === 'string') {
		app.command = app.argv.c;
	}
	if (typeof app.argv.m === 'string') {
		app.pattern = app.argv.m;
	}
	return true;
};

function startWorking() {
	if (typeof app.redisClient[app.command+'Async'] !== 'function') {
		log.error('!! there is no redis client command [ ' + app.command + ' ] that i can execute on each key');
		return process.exit(1);
	}
	log.info(':: starting process to scan for [ ' + app.pattern + ' ] and execute [ ' + app.command + ' ] on the items');
	var pattern = 'cgg*';
	return redisScan(
		{
			redis: app.redisClient,
			pattern: app.pattern,
			each_callback: function(type, key, subkey, something, value, cb) {
				if (app.verbose === true) {
					log.debug('match: #' + app.count, type, key, subkey, something, value);
				}
				app.count += 1;
				app.redisClient[app.command+'Async'](key)
					.then(
						function(res) {
							if (app.silent !== true) {
								log.info('results of the command [ ' + app.command + ' ' + key + ' ] : ', res);
							}
						}
					).catch(
						function(err) {
							log.error(err);
						}
					).finally(
						function() {
							cb();
						}
					);
			},
			done_callback: function (err) {
					app.redisClient.quit();
					log.info(':: all done. handled [ ' + app.count + ' ] matches');
					process.exit(0);
			}
		}
	);
};

redpajama_set_name: RedPajamaGithub


text:
iVote developer acknowledges vulnerability, defends election security
Flaw in NSW's iVote platform confirmed by researcher
If the election is hacked, we may never know
Opinion: Open-source e-voting essential to integrity of electoral process
Researchers warn further flaws may be found in NSW's iVote
By Rohan Pearce
Editor, Computerworld |
Researchers have found a new vulnerability in a Swiss e-voting platform that could point to the existence of previously unknown security flaws in the iVote platform used by New South Wales.
The revelations come in the wake of increased scrutiny of iVote following its performance during the weekend's NSW election, with the NSW Electoral Commission (NSW EC) confirming on Friday that there were problems with the e-voting application's registration system. The problems led to the commission's call centre being overwhelmed by enquiries from frustrated voters.
Earlier this month the trio of researchers mdash; Sarah Jamie Lewis from the Open Privacy Research Society, Universit? catholique de Louvain's Olivier Pereira and Vanessa Teague from the University of Melbourne mdash; revealed a serious flaw in the Swiss platform that they said could allow an attacker to potentially manipulate the results of a vote but still produce audit data that passed the platform's verification process.
That vulnerability in the Swiss Post-operated sVote platform was subsequently patched, according to Swiss Post. Key components of NSW's iVote platform have been built by Scytl, the same software company that helped develop sVote, and the NSW EC acknowledged the presence of that vulnerability in iVote. However, the NSW EC downplayed the potential for the vulnerability to be exploited because of the necessity for a corrupt insider to leverage the exploit.
In response to the latest findings, the NSW EC issued a statement to Computerworld saying that it is "confident that the new issue [the researchers] describe in the Swiss Post system is not relevant to the iVote system" though it was unclear whether that is because the vulnerability is not present or considered unlikely to be exploited, or whether the vulnerability is not exploitable in exactly the same fashion as it can be with sVote.
The new sVote vulnerability allows the creation of false decryption proofs, according to a paper produced by the researchers. The exploit they discovered means, with certain limitations, that an attacker could create a false decryption proof that would verify despite being different from the original plaintext ballot cast by a voter.
"This could, for instance, be used by a cheating decryption service to change valid votes into nonsense that would not be counted," the paper states. "This attack could have a political effect if the attacker knew which votes supported a party it wanted to harm."
The researchers said that the exploit appeared to have two limitations. One is that in order to fake the decryption proof the attacker needed to know the randomness that is used when a vote is encrypted. They offer two possible scenarios where this could happen: The use of a subpar random number generator or through the corruption of a voting client.
The second is that, at least in the in the case of the Swiss system, an attacker would only be able to produce a nonsense vote rather than a valid vote cast in a manner different to what a particular voter intended. Such an attack could still potentially be used to nullify votes that the attacker disagreed with, the researchers said.
The exploit will probably leave evidence that something went wrong, the researchers state. However, they add: "If the decryption proofs were mistakenly believed to be sound it seems much more likely that the problem would be attributed to misbehaviour by the clients and the vote receiving components."
If the vulnerability is present in iVote, potentially the second limitation may not apply mdash; but it depends on the way that votes are encoded.
"We know in Switzerland it's very unlikely to produce valid votes via this method mdash; and in New South Wales we just don't know," Teague told Computerworld. The NSW EC is yet to publicly release the iVote source code, though it did recently launch a source code review program that required participants to sign a deed of confidentiality and privacy with both it and Scytl.
The new paper states that the researchers can't rule out there are other ways to exploit the same weakness, which relates to an error in the implementation of the Fiat-Shamir heuristic.
The researchers also detailed a range of other problems they identified with sVote but wrote that it was not clear whether they would immediately lead to exploits.
Critical breaks
Lewis, Pereira and Teague note that although they are a small team that has been investigating the sVote code base for the first time, in just a few weeks and despite only spending a "small fraction" of their time on the issue they found "critical breaks of both the main components of the proof that there is no server-side fraud mdash; the complete verifiability property".
The paper notes that the previous sVote vulnerability they discovered was also present in iVote, and that it appears iVote and sVote share a significant amount of code. As a result, the same problems may be present in iVote. "We don't know for sure they apply," Teague told Computerworld.
Scytl provided the core iVote voting system that has been used since 2015 and in 2018 won a contractto upgrade the system ahead of the state election.
Teague in 2015 revealed the existence of other significant vulnerabilities in the e-voting platform that allowed potential man-in-the-middle attacks.
The NSW EC has previously pledged that it will increase the transparency of iVote, with the commission saying it plans to make available the source code of key components of the application following the state election.
It has said that those components will include the JavaScript voting client; a mobile verification app; a voting service (coveringvalidation of the encrypted vote, validation of the cryptographic proofs and digital signature of the receipt), the verification service, and the counting service (including vote decryption and digital signature).
Scytl and Swiss Post have been approached for comment.
Rohan Pearce is the editor of Computerworld Australia with a background in tech journalism that predates the iPhone.


SIU volleyball got back on the right foot Friday with a 3-2 win (18-25, 25-23, 31-29, 19-25, 15-13) to open up Missouri Valley Conference play.
Junior outside hitter Abby Barrow had a team-high 21 kills and junior outside hitter Nellie Fredriksson had 13.
Barrow said she wasn't surprised with her offensive output.
"We had been working on a different approach for me in practice coming into tonight with me staying lower and it paid off," Barrow said.
The first set of the night started off fast with both teams playing with high energy. Northern Iowa was able to take a 4-0 lead and stretch it into a 14-9 lead until SIU came back to tie the set at 16-16. But then Northern Iowa used a 9-1 run to put the set away 25-18.
Barrow had four kills for the Salukis and two block assists. Northern Iowa sophomore outside hitter Bri Weber had seven kills and six digs.
The second set started much better for SIU as it jumped to a 16-11 lead, forcing a Northern Iowa timeout. But the Panthers came roaring back with a 12-6 run to take the lead 23-22.
Fredriksson had three kills while Barrow continued her hot hitting with five kills and a .474 hitting percentage. Northern Iowa senior middle hitter Kayla Haneline had four kills.
SIU had just a .146 hitting percentage after two sets while totaling six blocks.
Overall, junior middle hitter Alex Rosignol had seven blocks. The Salukis eventually won the set 25-23.
The third set was back and forth to start until SIU inched ahead 11-7, but Northern Iowa hit a 12-8 run to knot the set up at 19-19. SIU would eventually come back to win 31-29.
The fourth set started out rough for the Salukis as they fell into a 6-1 hole early and were down by as much as 18-10 before eventually falling 25-19.
The fifth and final set was once again a back and forth affair, until SIU went up 5-2 and never looked back for a 15-13 win.
The Dawgs play at 7 p.m. Saturday against Drake University at Davies Gym.
Correction, Sept. 24: The quotation that starts with, "Abby had my back…" was said by junior outside hitter Andrea Estrada, not junior outside hitter Nellie Fredriksson.


We provide professional representation, striving to obtain for our clients the best possible outcome.
We help our clients make informed choices.
Depending on the facts of each case and our client's desires, we will go to trial or negotiate a resolution to the criminal charges.


text:
What UVA Football fans need to know about the Florida Gators
Published Wednesday, Dec. 18, 2019, 10:56 am
Florida has had two quite memorable runs over the years. The Steve Spurrier era, for example. Tim Tebow and Urban Meyer.
The Meyer era ended with a thud, then came, and went, Will Muschamp (28-21 in four seasons), Jim McElwain (10-4 in his first season, 2015, but fired midway through the 2017 season).
Which gets us to Dan Mullen, who came to Gainesville after a nice run at Mississippi State (69-46 in nine seasons, including a trip to the Orange Bowl in 2014).
Florida won 10 games in his first season at Florida, in 2018, and led the Gators to the Peach Bowl, and avoided the sophomore slump in 2019, going 10-2 and landing in a New Year's Six Bowl.
The two losses: to CFP #1 LSU, 42-28, back on Oct. 12, in what was a one-score game into the fourth quarter, and to CFP #5 Georgia, 24-17.
Mullen had to do this with his #2 quarterback coming out of camp, after losing starter Feleipe Franks in the 29-21 Week 3 win at Kentucky.
Enter Kyle Trask, who hadn't started a game since his freshman year in high school, but at 6'5", 239 pounds, with a cannon of an arm, has the size and skills.
Trask threw for 298 yards and two TDs in a 34-3 win over Tennessee in his first start, on Sept. 21, and has been solid since, with a 159.3 passer rating, fourth in the SEC (two of the guys ahead of him: 2019 Heisman winner Joe Burrow, 2018 Heisman runner-up Tua Tagovailoa), 24 TDs, 6 INTs, 2,636 yards, 67.6 percent completion rate.
The pass game has a wide array of weapons for Trask to throw to, with no less than eight guys registering at least 20 catches on the season.
The top target is sophomore tight end Kyle Pitts, a 6'6", 239-pounder and first-team All-SEC selection who is a big, physical, matchup nightmare (2019: 51 catches, 610 yards, 12.0 yards per catch, 5 TDs).
The wideouts include 6'2" redshirt senior Van Jefferson (43 catches, 528 yards, 12.3 yards per catch, 6 TDs), 6'0" senior Freddie Swain (35 catches, 496 yards, 14.2 yards per catch, 7 TDs) and 6'5" junior Trevon Grimes (32 catches, 484 yards, 15.1 yards per catch, 3 TDs).
The Gators have had troubles getting the ground game going, averaging just 120.3 yards per game, last in the SEC in 2019. The featured back is 5'11" senior Lamical Perine, who ran for 538 yards and averaged 4.5 yards per carry this season.
The issue with the run game is not a factor of poor play from the O-line, though. Props to the big uglies for getting through an SEC schedule having given up just 24 sacks.
The defense: stout, second in the SEC in total defense (299.0 yards per game), rushing defense (107.0 yards per game) and scoring defense (14.4 points per game).
It starts up front with first-team All-SEC defensive end Jonathan Greenard, who is actually listed on the depth chart at linebacker, at a freakish 6'3", 263 pounds.
The Louisville grad transfer was second on the Florida team this season with 51 tackles, and led the D with 14.5 tackles for loss and 8.5 sacks.
Showing his versatility, Greenard also recorded eight quarterback hurries, again, a team-best total, and had three pass breakups, two forced fumbles, an interception and a fumble recovery.
The other Gator to watch out for on D is junior cornerback C.J. Henderson (33 tackles, 11 passes defensed, 3 TFLs, 1 sack, 1 QBH), who will remind UVA fans of preseason All-America corner Bryce Hall, because of his size (6'1", 202 pounds) at the corner, and also because like Hall, Henderson won't be playing. Hall is out due to injury; Henderson because he's trying to avoid it, in advance of entering the 2020 NFL Draft.


Beats' winning formula of Sports + Music is a unique marketing approach in the headphone category, allowing the brand to #BeHeard. To gain exposure and increase sales in the UK, Beats capitalised on the media hype around Anthony Joshua's era-defining fight with Wladimir Klitschko. They did this by letting fans walk side by side with AJ on his path to glory.
A bespoke cross-agency studio, Beats Media House, allowed us to engage with fans, creating and distributing content in real-time. To get fans as close to the action as possible, we created a unique partnership with the fight broadcaster, Sky, that gave us access to their content, and allowed us to embed Beats assets in the key moments around the fight.
Beats dominated SOV, with 65% of all views and 83% of all engagement. Our content racked up 24.4m views & 890k engagements. The campaign gave Beats the exposure and sales uplift it craved, with website visits up 350% and double digit growth in Ecommerce sales.


text:
Centre for Diversity Policy
European Students' Union
Knowledge Innovation Centre
European Association of Institutions of Higher Education
Tavistock Institute of Human Relations
Ideas Tour
November 19, 2014 Nick Preston
The Brilliant Club
The Brilliant Club is a non-profit organisation focussing that exists to widen access to top universities for outstanding pupils from non-selective state schools. The primary activity is to recruit, train and place doctoral and post-doctoral researchers in non-selective schools and colleges to deliver programmes of university-style tutorials to small groups of outstanding pupils with the aim to develop the knowledge, skills and ambition of these pupils and secure places at top universities.
1 Objectives of the Intervention
2 Origins and rationale of this initiative
3 Target groups intended as beneficiaries of this initiative
4 Political and socio-economic factors that you believe have been important enablers for your initiative
5 Overall Programme design and the methods and tools used to reach the goals
6 Describe if the project ensured its sustainability
7 Resources used in the initiative
8 Did the intervention reach its objectives?
Objectives of the Intervention
The Brilliant Club is an award winning non-profit organisation that exists to widen access to top universities for outstanding pupils from non-selective state schools.
The organisation's primary activity is to recruit, train and place doctoral and postdoctoral researchers in non-selective state schools and sixth form colleges serving low participation communities to deliver programmes of university-style tutorials to small groups of outstanding pupils, which develop the knowledge, skills and ambition that help those pupils to secure places at top universities.
The overall vision of the organisation is one that sees an education system in which young people from non-selective state schools and other low participation backgrounds are proportionately represented at highly selective universities.
The organisation's mission is to widen access to highly selective universities by placing PhD students in schools serving low participation communities to deliver university style teaching to high performing pupils.
In terms of scope, the organisation is working together with schools, colleges and universities, the Brilliant Club is building a national movement that mobilises doctoral and postdoctoral researchers to engage with challenging schools and to address educational disadvantage more broadly. Doctoral and postdoctoral researchers are placed in schools to deliver programmes from Year 6 through to Year 12. The Brilliant Club are currently working with over 150 schools and colleges in London, the South East and the Midlands, placing over 250 doctoral and postdoctoral researchers to work with more than 5000 pupils.
Origins and rationale of this initiative
The initial idea for The Brilliant Club came from two classroom teachers, Jonathan Sobczyk and Simon Coyle. After a research and consultation phase that included teachers, academics and policymakers, they designed and delivered a series of successful pilot projects. The organisation was founded in 2011 with support from the Sutton Trust, Teach First and Challenge Partners.
Key drivers
The UK education system faces a range of inter-related challenges: students from non-selective state schools are under-represented at top universities; schools are increasingly accountable for progression to higher education; there is a shortage of high quality development opportunities for doctoral and postdoctoral researchers; and universities are committed to recruiting more pupils from low-participation backgrounds.
The rationale behind the initiative
Just 2% of pupils eligible for free school meals (FSM) and 18% of pupils attending non selective state schools go on to study at a highly selective university, compared with 48% of pupils attending fee- paying private schools.
In addition, when pupils from disadvantaged backgrounds demonstrate the potential to secure a place at a highly-selective university, they often require a range of on-going support mechanisms to make this outcome a reality. As a group, these pupils are much less likely to achieve the grades necessary to make a competitive application to highly selective universities. They are also less likely to have developed the skills that are prized by those universities, less likely to receive effective information, advice and guidance about higher education and, as a result, can sometimes lack the confidence and conviction that a highly selective university is an appropriate choice for them. School leavers are 20% more likely to progress to higher education today than in the mid-1990s but, despite an overall increase in the number of pupils from low-income backgrounds progressing to university, this growth has lagged behind that of their wealthier counterparts in recent years.
Pupils from low-income backgrounds are acutely under-represented at the most selective universities. Beyond the headline figures include above, the following statistics further illustrate the scale and the nature of the challenge:
Two thirds of pupils who are in receipt of free school meals and who are amongst the top fifth of performers at age 11 are no longer in the top fifth by the time they sit their GCSEs, and half do not progress to higher education.
80% of young people from low participation neighbourhoods live in close proximity to a highly selective university but only 1 in 25 will go on to attend such a university, compared with 1 in 4 from high participation neighbourhoods.
Pupils from state schools are as likely to attend highly selective universities as pupils who attend private schools but achieve two grades lower in their A-Levels
These figures demonstrate the inequality of access to higher education within the UK education system today. Although disparity exists across all universities, the problem is most acute at the thirty most selective universities. This is the gap that the initiative seeks to address and the context within which it works.
Target groups intended as beneficiaries of this initiative
The Brilliant Club works to increase the number of pupils from low participation backgrounds who progress on to highly-selective universities, and in order to do this they target schools that serve areas of social deprivation and put safeguards in place to ensure that the intervention, on the whole, is benefitting disadvantaged pupils. To this end, there are three core principles for the organisation's provision:
It only focuses on non-selective state schools.
Requires an absolute minimum of 1 in 4 pupils on the programme who must be eligible for free school meals.
Targets and prioritises schools in areas of significant social deprivation.
The organisation is confident they are working with the right pupils and schools, as demonstrated in some the following key outputs:
Approximately one in three pupils they work with are eligible for free school meals;
More than half of pupils sampled have no parental history of higher education in this country or abroad;
More than 85% of schools sampled have more than 70% of their pupils living in the lowest 30% of the IDACI;
More than 90% of schools sampled have above average pupil eligibility for FSM.
Political and socio-economic factors that you believe have been important enablers for your initiative
Political support:
There is national cross party support for social mobility generally. The Department for Business Innovation and Schools BIS have given statements of support to our initiate https://www.gov.uk/government/organisations/department-for-business-innovation-skills
The project is in line with the More Able agenda and the schools fund the programme normally through the Pupil Premium funding. Our programme only costs approximately a quarter of the funding that is allocated to each pupil.
Stakeholders supporting the initiative:
To ensure the highest quality of pupil learning and researcher development, the Brilliant Club works with several national leaders in Education, Teaching Schools and schools that have been rated 'Outstanding' by OFSTED. In total, they are currently working in partnership with over 150 primary and secondary schools and school leaders as well as the universities of Oxford, Warwick, Sussex, Royal Holloway and King's College London. Whilst the recruitment and training is more structured for researchers from partner universities, they have nonetheless employed PhD tutors from over 20 universities this year. They also work closely with the founding partners, The Sutton Trust and Teach First, and strategic partners such as Challenge Partners, Goldman Sachs, The Dulverton Trust and The Brightside Trust.
Public support:
We believe there is broad public support for the programme nationally and locally but the programme has not fully exploited PR opportunities.
Institutional strategy and culture – see question 1
Overall Programme design and the methods and tools used to reach the goals
The Brilliant Club employs qualified teachers to work closely with PhD students and postdoctoral researchers in order to develop programmes according to the following four key principles:
A core focus on academic development: tutorials develop critical thinking and communication skills, as well as building confidence. Between tutorials pupils undertake challenging reading and writing assignments, which lead to the completion of an extended final assignment, developing effective research skills, academic writing skills and independent learning.
Targeted intervention: work is done with schools to ensure that all pupils who take part in our programmes have demonstrated the potential to secure a place at a highly selective university and/or will gain significant benefit that would not otherwise have been available.
Early and sustained intervention: organisation staff work with pupils at a young age and continue to support their academic development throughout their school careers, giving opportunities for new pupils to join our programmes at each Key Stage.
Age-appropriate support: the programmes combine academic development with information, advice and guidance relevant to subject and university choices, along with a variety of aspiration-raising activities including trips to highly selective universities.
The Scholars Programme is designed to emulate teaching and learning at a highly selective university. They recruit, train and place PhD students and postdoctoral researchers in schools to deliver programmes of university-style tutorials that develop knowledge, skills and ambition. The length of tutorials and the size of groups vary depending on the Key Stage, but never exceed a maximum of six pupils.
Programmes begin with a Launch Trip at one of the partner universities, where pupils meet their PhD tutor and take part in a carousel of learning activities, including the first tutorial. For the next four weeks PhD tutors will spend half a day a week in school delivering two tutorials each time. Pupils are required to undertake weekly reading and writing assignments that lead to the completion of an extended assignment which the PhD tutors then mark thoroughly.
The programme finishes with another university trip, where pupils are given a tour of the campus, meet with outreach staff, receive feedback on their assignments and then attend a graduation ceremony.
Describe if the project ensured its sustainability
The Brilliant Club is a registered charity and a non-profit organisation. They operate a sustainable model that ensures the long-term viability of the organisation and do ask schools to contribute to the cost, minimised through subsidies from fundraising activities, and never more than £160 per pupil. They employ PhD tutors on a part-time basis and pay them competitively for each programme that they deliver, typically £450 per placement for approximately 6 full days of work over a term with an additional allowance for travel and expenses. To support these PhD tutor costs, and the costs associated with planning and delivering university trips, they ask that the universities they have a formal partnership with to contribute financially over the long-term. They do not ask universities for financial support upfront, and always prefer to run a pilot partnership programme to see if the outcomes are mutually beneficial to all parties before discussing longer-term partnerships.
The Brilliant Club facilitates sustained contact between outstanding pupils and doctoral and postdoctoral researchers from top universities. In doing so, they offer a simple and scalable solution that addresses the inter-related problems that affect access to education and at the same time benefits each of the key stakeholders. Pupils develop the skills, confidence and ambition that help them to secure places at top universities; schools develop a culture that champions excellence, hard work and progression to higher education; doctoral and postdoctoral researchers are paid for taking part in high quality development opportunities; and universities are given access to target schools and target students.
Resources used in the initiative
We are sustainable except for that we are growing at present.
15% of our funding comes from grant support 25% of our funding comes from universities and the rest from schools.
Universities typically pay a proportion of the PhD students' salary. Increasingly the university support is coming from employability programmes for PhD researchers rather than Widening Participation budgets. (see outcomes)
We are given support and resources in kind from universities such as student ambassadors to guide students around the university and venues for launch and graduations events.
Did the intervention reach its objectives?
Evidence of success can be seen in various ways: endorsements and awards received; growing partnerships and interest in being a Brilliant Club tutor as well as data on improvement of grades and access to highly selective universities, all described below.
The organisation's programmes have received accolades and endorsements from pupils, PhD tutors, teachers and academics, as well as policymakers such as the Secretary of State for Education and the former Shadow Secretary of State for Education.
The programmes appear to have been increasingly successful: within six months of their development, the organisation had completed pilot programmes with year 9 and year 11 pupils at a North London school, as well as with year 12 participants on the Higher Education Access Programme for Schools (HEAPS). In each case they received excellent results and feedback: over the course of the year 11 programme, the number of pupils working towards 5 A*-A grades increased from 3/19 at the start to 12/19 at the end, with 15/19 going on to achieve at least 5 A*-As in their GCSE results. From their first pilot group of 12 pupils who applied to university in in 2012, eight were offered places at highly-selective universities and two were offered places at Oxbridge.
Following from the success of the pilots, the organisation had significant interest from many schools, including some of the most innovative and outstanding state schools in the country, and they ended up placing 54 PhD students into 35 schools between September 2011 and July 2012. Between September 2012 and July 2013 activities were expanded significantly, working with over 100 schools in London the South East and the Midlands, and placed over 150 PhD students to work with over 3000 school pupils.
Since the pilot phase, the work is having a significant impact on students in London; however, they intend to work with schools and universities across the country to build a high-profile national movement committed to widening access to top universities.
The most significant achievement to date is that they have worked in partnership with 150 schools and six of the country's most selective universities to establish the organisation's innovative model of recruiting, training and placing doctoral and postdoctoral researchers to deliver programmes of university-style learning. In so doing, they feel they have laid the foundations for a widening access initiative which could one day be capable of bringing about systemic change. However, there is still a substantial amount of work to do to break the link between parental income and educational success and it will only be achieved in collaboration with schools, universities and partners across the education system.
Though the scale of the challenge is great, initial indicators are very encouraging.
In the academic year 2012/13:
75% of our sixth form pupils from our first cohort applied to a highly selective university
45% of our sixth form pupils from our first cohort are now studying at a highly selective university
The Brilliant Club employed over 150 PhD tutors to deliver programmes of university style learning to 2687 pupils in 100 non-selective state schools across London, the South East and the West Midlands
PhD tutors delivered 3133 hours of teaching, 83% of which was by researchers at Russell Group universities
55% of pupils produced assignments considered to be excellent or good for a pupil one key stage above them.
Beyond this, the Brilliant Club are confident they are building a programme that is targeted and directly addresses educational disadvantage:
100% of pupils attend non-selective comprehensive state schools
30% of pupils are eligible for free school meals
More than half of pupils sampled have no parental history of higher education in this country or abroad
More than 85% of their schools have more than 70% of their pupils living in the lowest 30% of the IDACI
More than 90% of their schools sampled have above average pupil eligibility for FSM
Progression to University :
The following tables show the rates of progression to university for the first cohort of Key Stage 5 pupils. From a sample size of 62 pupils, representing 67.3% of the cohort, they have tracked the number of pupils applying to, receiving offers from and ultimately progressing to highly selective universities. The analysis is categorised by sub-groups, including pupils eligible for free school meals, pupils achieving 5A*-A grades at GCSE and pupils achieving AAB at A-Level.
Pupil Survey Data
In order to help the organisation understand the impact of their programmes, they also survey all pupils by asking them to respond to statements about their skills, confidence and ambition. At the beginning of each programme they take a baseline of pupil perceptions by asking them to respond to a series of statements using a five point Likert scale ranging from 'strongly disagree' (1) to 'strongly agree' (5).
When pupils graduate from the programme they are asked to respond to the same statements again, measuring any changes in their perceptions. In addition to this, they also ask pupils to respond to a series of five 'one-off' questions about their participation in the programme overall.
There has been significant interest in working as a Brilliant Club tutor, reflected in the fact that the initial recruitment efforts attracted three applications for every place. This has allowed the organisation to select the very best to work as tutors, and are committed to maintaining this high standard for the PhD students. To support this aim, a rigorous assessment process has been put in place that requires candidates to demonstrate a high level of suitability and skills.
Unintended Outcomes
The Brilliant Club has recognised that it is having an impact beyond the immediate target group of students. For example they believe the programme positively impacts on parents, siblings and the wider community. In order to improve their understanding of this have recently employed a Community Impact Director.
One of the unintended impacts that has been identified is the impact on PhD students who find the programme a valuable networking opportunity and career development opportunity. There are case studies available showing how PhD value the programme in a particularly socially isolated period of study.
Tagged: 1st generation, Academic preparation, Aspiration development, Community, Ethnic minority, Gender, Inclusive excellence, Leadership development, Outreach, Peer support, Retention, Socio economic disadvantage, Tutoring
Led by
http://www.thebrilliantclub.org/
jonny@thebrilliantclub.org
Jonny Sobczyk
Extra material
Geographical area applied
First piloted in 2011 (when the organisation was set up) and ongoing ever since.
1st generation, Academic preparation, Aspiration development, Community, Ethnic minority, Gender, Inclusive excellence, Leadership development, Outreach, Peer support, Retention, Socio economic disadvantage, Tutoring
Filter by Learning Sector
Select Learning Sector Academic HE Higher Education Level 5 / Short Cycle HE Other Professional HE Secondary Education Short Cycle HE Vocational Education
Select Tag (primarily) Disabled students 1st generation 5th and 6th grade pupils Academia Academia (mainly staff) Academic counselling Academic HE Academic preparation Academic skills Access Access to HE Access to Higher Education Activism Admissions Adult learners Advocacy Aspiration development Aspirations audio Australia Awareness campaign Awareness Raising Belgium Belgium – Flanders Belonging Bradley report Bradley Review Bursary Canada Children Community Community Colleges completion Counseling Counselling Culturally sensitive D&I in organisations Decreasing drop-outs Democracy Disabilities Disability Disability or long-term medical condition Distance learning Economic disadvantage Educational Video Egypt Employability Empowerment Equality Law Ethnic minority Families Financial assistance Financial assistance / bursaries / scholarships Financial Counselling Financial disadvantage Financial support Finland First Generation Students Foreign students France gallery Gender Gender equity Germany Girls Graduate support Health counselling Health Sciences Higher Education Housing support Inclusion Inclusive excellence Indigenous Indigenous status Inner City Institutes International Education International Qualifications International students Internships Isolated students Kenya Language development Language learning Latvia Law students Leadership development Learning disabilities Learning to learn Legal Advice link Link between school and Higher education Lisbon Lobby Local students Mainly academic Managing diversity mental disability Mental Health Mentoring Migrants Mind mapping Multilingualism Netherlands Netherlands – Amsterdam Netherlands – Rotterdam New Zealand Nursery OER On-campus experiences Open education Outreach Overall students population Parent education participation Peer learning Peer mentoring Peer support Poland Portugal Post Formats Preparation Preventing discrimination Primary School Psychotherapeutic support Pupils quote Refugees Regional collaboration Retention Retention theory Riga Scholarships Science Science clubs Science Festival Self-awareness Sense of belonging shortcode Skills gap Social inclusion Social Justice Socio economic disadvantage Socio-economic background Somalia Staff and management level / STEM STEM Stereotyping Strength based approach Student support Student Union Students Students ( with migrant backgrounds) Students services Students with children Study Skills Study-assistance Summer programme support service tailored courses Teacher training Tertiary Entrance Rank Texas Transition to HE Transversal skills Tutoring Under-represented schools Underrepresentation Underrepresented Underrepresented groups United Kingdom United States University colleges Urban development Urban education US USA video Volunteering Volunteers Vulnerable pupils Well-being Widening participation Women Women (of color) Work shops Workshop Workshops Young professional programme
BHER Borderless Higher Education for Refugees
Pre Academic Programme (PAP)
Young Physicists School of the University of Latvia
Cordées de la réussite "Climbing Ropes for Success"
Università Telematica Internazionale –UTIU (International Telematic University) UNINETTUNO, Italy
More equity cases
Intranet |


text:
Tuesday, July 16, 2019 from News | ERR
Three Estonian MEPs were given a chance to ask questions at the hearing of Ursula von der Leyen, candidate for president of the European Commission, at the European Parliament on Tuesday. Each of the MEPs focused on a different issue,...
Finance Ministry cuts rates on govt domestic loan bonds in hryvnia by 0.2-0.3 p.p., in U.S. dollars by 0.5 p.p.
Tuesday, July 16, 2019 from Interfax-Ukraine
The Finance Ministry of Ukraine at its primary auctions on July 16 for the fourth week in a row managed to lower the cut-off rate: for three-month hryvnia-denominated securities from 17.24% to 17%, for six months from 17.6% to 17.4%, for...
RFE/RL: Ukrainian official says agreement reached on prisoner swap with separatists
Tuesday, July 16, 2019 from
Advisers to the leaders of Germany, France, Russia, and Ukraine — the four countries part of the so-called Normandy format for talks aimed at ending the conflict in eastern Ukraine — have reached an agreement on a prisoner...
Fifth anniversary of MH17 tragedy: EU calls on Russia to accept responsibility
Tuesday, July 16, 2019 from News Agency UNIAN
The European Union reiterates its full support for all efforts to establish the truth.
UNIAN: Ukraine names condition for Zelensky-Putin summit in Normandy format
Deputy Head of the Presidential Office Vadym Prystaiko has said a prerequisite for the holding of the Normandy Four (Ukraine, Germany, France and Russia) leaders' summit would be progress in implementing the agreements reached by...
Postal service company Omniva warning customers of phishing scam
Estonian postal services company Omniva, which also operates Eesti Post, is warning customers of a fake campaign attempting to phish for client data under the Eesti Post or Omniva brands.
UkrInform: Hungary puts forward conditions for abolishing veto on Ukraine-NATO talks
Hungary will abolish a veto on Ukraine-NATO talks and provide €50 million for border infrastructure development after Hungarians living in Zakarpattia region are returned the right to study in their native language. Read more here. The...
USA Today: Chornobyl is set to become an official tourist attraction, but is it safe?
Ukrainian President Volodymyr Zelensky no longer wants the Chornobyl Nuclear Power Plant to be a dark-tourism destination. Read more here. The post USA Today: Chornobyl is set to become an official tourist attraction, but is it safe?...
Ukrainian ombudswoman to appeal to Zelensky, Putin to pardon some convicts
The Ukrainian and Russian human rights commissioners, Liudmyla Denisova and Tatyana Moskalkova, have agreed to appeal to the presidents of the two countries to pardon a number of convicts. "We have discussed appealing to the...
Constitutional Court recognizes constitutional language article of education law
The Constitutional Court of Ukraine (CC) has recognized the norm of the Law on Education, which regulates the use of the state language in schools for members of national minorities, as complying with the Basic Law, Liliia Hrinevych, the...
Violence against women remains silent epidemic in Ukraine
It was the final straw for Kateryna Khaneva. Her husband had just threatened her and their two young children with a knife. Soon after, she took the kids and left him. Her youngest was only three months old. Khaneva is now a coordinator...
Latvian government approves funding for procurement of new electrical trains
Tuesday, July 16, 2019 from Baltic News Network - News from Latvia, Lithuania, Estonia » Baltics
Latvia's government has approved state budget long-term commitment of EUR 255 888 753 to finance railway passenger transport company AS Pasažieru vilciens . This means PV might sign a contract with Škoda Vagonka soon, as confirmed by...
Associated Press: Italy's Salvini bows to pressure to respond on Russia report
Italy's Deputy Premier Matteo Salvini bowed Tuesday to days of pressure and agreed to respond to questions in Parliament about allegations that an associate sought Russian money for Salvini's pro-Moscow League party. Read more here. The...
Public administration minister seeking to merge state agencies
Minister of Public Administration Jaak Aab (Centre) is seeking options for merging state agencies, including possibly merging agencies from within the areas of governance of different ministries, daily Postimees writes.
UNIAN: Russia discusses Ukraine's language law to deflect attention from MH17 case
The Russian Federation on the eve of the fifth anniversary of the downing of the Malaysian Boeing flight MH17 from the sky over Donetsk region is trying to deflect attention from the tragedy by initiating discussion of the Ukrainian...
Ukraine exports agricultural products worth over US$10 bln in H1
In total, foreign trade balance of agri-food products in Ukraine amounted to US$7.5 billion.
Reuters: Italy seizes air-to-air missile, guns in raids on neo-Nazis
Italian police have seized a large arsenal of weapons, including an air-to-air missile, in raids on neo-Nazi sympathisers, they said on Monday. Read more here. The post Reuters: Italy seizes air-to-air missile, guns in raids on neo-Nazis...
Russia initiates discussion of Ukraine's language law at UNSC to deflect attention from MH17 case – MFA Ukraine
Ukrainian diplomats are confident that Russia will be punished for shooting down a Malaysian aircraft in 2014.
Constitutional Court recognizes constitutional law on de-communization
The Constitutional Court of Ukraine has recognized constitutional the law "On Condemnation of the Communist and National Socialist (Nazi) Totalitarian Regimes in Ukraine and Banning the Propaganda of Their Symbols" (the law...
Ukraine names condition for Zelensky-Putin summit in Normandy format
The Russian side did not put forward a demand that Ukraine conduct direct negotiations with representatives of the "DPR" and "LPR" terrorist organizations as a condition for holding the summit of the Normandy Four leaders, Prystaiko said.
Law on decommunization in line with Basic Law, Constitutional Court rules – source
The court made the decision at a hearing held behind closed doors July 16.
Klimkin to Zelensky: Team effort needed in negotiations with Putin
The minister is confident that Zelensky will be able to figure his way around regardless of the format of talks.
Estonia 200 already seeking candidates for 2021 local elections
Karin Kaup Lapõnin, the new executive director of the non-parliamentary Estonia 200, said that Estonia 200 is still operating, noting that its main goal currently is to develop its local branches across Estonia. The party likewise...
Deficit of Ukraine's foreign trade in goods 27.4% up in Jan-May
Exports of commodities to Russia shrank by 11.7%, to $1.34 billion, while imports of goods from the Russian Federation decreased by 1.3%, to $3.14 billion.
Klimkin: Ukraine had to negotiate on legal, not political security guarantees while giving up nuclear weapons
None of the Budapest Memo signatories did anything that should have been done in the context of protecting Ukraine's national security.
National Audit Office asking Aas about shale oil investment plans
Estonia's Auditor General Janar Holm has contacted Minister of Economic Affairs and Infrastructure Taavi Aas (Centre) in connection with the state's plan to invest €1 billion in shale oil production, as due to EU climate policy, oil...
Latvian Railway receives EC's report on railway electrification
European Commission has submitted a positive report on Latvian Railway commenced railway network's electrification in the initially planned volume, as reported by company's representative Ella Pētermane.
Russia could set up another gas crisis for Ukraine if no new transit agreement signed, Klimkin admits
The foreign minister said Ukraine had warned international partners of Russia's likely actions.
Ratas to attend Yellowstone Weekend summit in US
Prime Minister Jüri Ratas (Centre) will be on a visit to the United States from Wednesday through next Monday, where he will participate in the 2019 Yellowstone Weekend summit.
Ukraine, Russia to swap several held persons within month – Prystaiko
Prystaiko says the task is to unlock the "all-for-all" exchange process.


I have somehow managed to get to 30 and a half without having any real skin care routine at all. I have never used moisturiser or any kind of creams on my face – or anywhere else really and use face wipes to remove make up at the end of the day. When Balance Me got in contact to introduce me to their products I thought it would be a great opportunity to start a skincare routine and Balance Me sent me a few of their products to get me started.
What are the Balance Me Face Products?
I have started using the Balance Me Cleanse and Soothe Face Balm every night before bed after using my normal wipes to get rid of the bulk of my make up. It's amazing how much residue has been left on my face even after using my trusty wipes and my face has felt much cleaner and clearer ever since.
The Cleanse and Soothe Balm has a slightly grainy texture and you don't need to use much at all, massaging it onto your clean face and then using the included muslin cloth, dampened, to continue massaging the balm onto your skin whilst washing it off. I then dry my face and then use the Balance Me Balancing Face Moisturiser.
How have I found using the Balance Me Face Products?
I had really oily skin as a teenager and using anything on my face would bring me out in spots and I think I always bound to be hesitant of using new products on my skin but the Balancing Face Moisturiser is in no way greasy or oily and is absorbed into the skin really well. A little goes a long way and the handy pump action bottle makes it easy to apply. Even since starting to use this moisturiser my face has felt so soft and much more hydrated than it usually is. I was worried about putting a product on my skin straight after cleaning my skin and making it so free of additives but the combination of the cleanser and moisturiser work really well on my skin leaving it feeling fresher than it has done in a long time.
I was also sent the Balance Me Rose Otto Face Oil and this isn't something I have been using every day but on days when my face has had a tougher time – where I have wearing more makeup or where we have been out all day with coastal wind or the sun on my skin.
Rose Otto Face Oil is great if your face needs to be brought back into balance – if you suffer from red patches, dry patches or just uneven tones. It strengthens skin and helps sensitivity as well as minimising the signs of aging – I know that this is a product I will be using more as the months go by!
I now have a skin care routine that fits in with my lifestyle, takes just minutes and makes my skin feel so much better. To be honest, I didn't think there was anything wrong with my skin before but now I know that there is always room for improvement and am so glad that I have been introduced to Balance Me products.
How much are the Balance Me Face Products?
Balance Me Cleanse and Soothe Face Balm has an RRP of £20.00 Balance Me Balancing Face Moisturiser has an RRP of £24.00 and Balance Me Rose Otto Face Oil has an RRP of £32.00.


text:
Local MP fights to help pub managers
Local MP Tim Farron is this week upping his campaign to save locally managed pubs in the South Lakes.
Last week brewers Thwaites disclosed that they were looking to make 86 workers at the historic Blackburn firm redundant as the company looks to transfer 37 of its pubs to tenanted or leased operations.
Mr Farron last week launched a petition in support of the Albion and put down an Early Day Motion in parliament calling on Thwaites to change their plans.
Commenting, Mr Farron said:
"This move by Thwaites threatens the future of the Albion, Arnside and other pubs like it. Thwaites decision would unfairly shift risk from the large company to the small publican and I am calling looking to bring all sides together and make sure that pubs like the Albion stay at the heart of our communities.
To expect people in the middle of massive economic downturn to get credit to buy a business is unlikely. Furthermore, to do this to long serving staff is unacceptable, I hope they see the error of there ways soon!
As someone who drinks in the Albion I am well aware of the huge role it plays in the community of Arnside. Lynne and John Gallagher are lynchpins of the local community and the situation that they have found themselves in is completely unacceptable."
Tim Farron MP's Early Day Motion on Thwaites:
That this house regrets the decision taken by Thwaites to unilaterally change their 'managed pubs' into 'tenanted' ones; considers this to be a serious threat to employees working in these pubs and to the role of the pub as the social hub of the community where people can enjoy alcohol in a responsible manner; believes that this is an unfair transfer of risk and responsibility from the company to individual publicans; and calls on Thwaites to review its policy with immediate effect.


text:
Home Grandstand Rea reigns in World Superbike Thailand debut
Rea reigns in World Superbike Thailand debut
Zac Kurylyk
Photos: World Superbike
Kawasaki has to be very pleased with the latest addition to their WSB factory squad, after newcomer Jonathan Rea took Superpole and both race wins at the first World Superbike Thailand race.
The weekend at Chang International circuit started well for Rea, as he bested Leon Haslam (Aprilia Racing Team – Red Devils) by 0.011 seconds to take his second consecutive pole (Rea also took pole in Australia's season opener). Rea then proceeded to build up a huge lead in Race 1, ahead of Haslam by 6.329 seconds.
Starting from the second row, Rea's teammate Tom Sykes did his best to stick with the front-runners, but faded into a battle for third with Alex Lowes (Voltcom Crescent Suzuki), Chaz Davies (Aruba Ducati SBK) and Jordi Torres (Aprilia Racing Team – Red Devils). By Lap Nine, Davies had crashed (he got back on the bike and finished in 11th), leaving Sykes to take third and Torres to take fourth.
Alex Lowes made up for his mistake in the first race by getting a podium in the second.
Sylvain Guintoli (Pata Honda WSBK) finished fifth in Race 1; Lowes, sixth. However, Lowes missed seeing a yellow flag, and got demoted to seventh after blowing past. As a result, Matteo Baiocco (Althea Racing) moved from seventh to sixth. Troy Bayliss (Aruba Ducati SBK) finished in eighth; David Salom (Team Pedercini), ninth; and Leandro Mercado (Barni Racing) tenth.
In the second race, Lowes avoided that bad luck, garnering third place, behind Rea and Haslam. He was happy about his third WSB podium, saying "Two top-sixes would have been good, but it is what it is."
Rea, who's now in first place in the standings (95 points, to Haslam's 85 and Sykes' 50), was understandably happy about his double win.
"For me it has been a perfect weekend with pole position and two race wins – we could not have asked for any more," Rea said. "I have not had so many double wins in my career but I have been lucky to have some. They do not come round a lot so I want to savour this moment ."
Meanwhile, Torres grabbed fourth in Race 2, and Sykes was fifth. After being a dominant force in World Superbike for years, displaying consistent results race after race, Sykes appears to be eclipsed by his new teammate, and he doesn't seem happy with his new lot. He congratulated Rea on Facebook, but told his fans it was a "difficult day at the office today."
Jordi Torres was a threat on his Aprilia in both races.
Guintoli was sixth in Race 2, followed by teammate Michael Van Der Mark. After his convincing dominance in World Supersport last year, no doubt Honda was hoping Van Der Mark would put up similar results in Superbike, but so far, he's only earned 20 points, good for 11th place overall. It will be interesting to see if the rookie can climb up the ladder as the season progresses, or if it will take him a while to catch on to the new scene.
Race 2's top 10 was rounded out by Baiocco (eighth), Salom (ninth) and BARNI Racing's Ducati-mounted Leandro Mercado. Troy Bayliss was in 11th, and after the race, announced he was returning to retirement.
"I've had a great time," Bayliss said. "I didn't expect to win, it was great to experience it all again but I've had my time so I am happy to go home and enjoy my family, and leave it to the young guys."
Tom Sykes narrowly missed the championship last year, but he's a bit further out of the chase for the 2015 title at this point. There's plenty of time left, though.
So, the Aruba Ducati SBK team will either not replace injured Davide Giugliano at the Spanish and Dutch races, or they will have to line someone else up to take Bayliss's place.
At this point, we're two weekend into the World Superbike season, and it looks as if the top five are going to consist of familiar names from the last few seasons, although there may be some newcomers to the top 10. There are four Ducatis in the top 10, but none in the top five. Between Rea and Sykes, Kawasaki seems like they should be able to put up consistent top-five finishes this year, and Haslam and Torres look like they'll keep Aprilia in the hunt. However, it's a long season, and once you factor in injuries and crashes, anything can happen …
World Supersport results
Honda-mounted Ratthapark Wilairot took the Supersport win in front of an enthusiastic home crowd, beating out second-place Kenan Sofuoglu (Kawasaki Puccetti Racing) and third-place PJ Jacobsen (Kawasaki Intermoto Ponyexpre) by a narrow margin.
Jules Cluzel (MV Agusta Reparto Corse) and Kyle Smith (Pata Honda World Supersport Team) were both in the hunt for a podium for a while, but Cluzel (who'd led for much of the race) had to bow out with less than four laps to go, and Smith slid off on the seventh lap.
Wilairot's win gives him 36 points in the championship, now ahead of Sofuoglo (30).
World Superbike standings after Round 2
1). Jonathan Rea, Kawasaki 95 points
2). Leon Haslam, Aprilia, 85 points
3). Tom Sykes, Kawasaki, 50 points
4). Sylvain Guintoli, Honda, 41 points
5). Jordi Torres, Aprilia, 39 points
6). Chaz Davies, Ducati, 38 points
7). Alex Lowes, Suzuki, 32 points
8). Matteo Baiocco, Ducati, 30 points
9). Nicolas Terol, Ducati, 26 points
10). Leandro Mercado, Ducati, 21 points.
Previous articleYamaha FJ-09 – first ride on triple tourer
Next articleBuyer's Guide: Updated with electrics
(Daily News & Assistant Editor) Zac earned his job at CMG by crashing Editor 'Arris's Konker in 2010, proving he was one of the sad few afflicted by the CMG curse. Originally from PEI, he now lives in a van down by the river, just outside Saint John, New Brunswick with a collection of tattered Hunter S. Thompson paperbacks.
2021 Dakar Rally, Stage 12
2021 Dakar Rally, Stage 9


Messenger's Home Furnishings in Ottawa, KS is proud to sell Ashley Furniture products. From design through fulfillment, Ashley Furniture Industries, Inc. continuously strives to provide the best product at the best prices accompanied by the best service in the industry. Being the best and bringing the best to you is their relentless pursuit.
So if you are looking for Ashley Furniture products in Ottawa, Lawrence, Garnett, Burlington, Douglas County, Franklin County, Anderson County and Coffey County, or if you have any questions about Ashley Furniture products, please feel free to call us at (785) 242-4446 or simply stop by Messenger's Home Furnishings at any time and we would be glad to help you.


I have been asked to hurry it up with the new calendar however I am finding so many choices to choose from for the new assortment of pieces to teach! But I assure you… the calendar will be up and ready for sign ups by days end.
Until then, email me with any painting ideas you would like to try or just to chat me up!
Previous Post Click on New Calendar of Events to Print!
Next Post September Calendar is here!!!!


After rogue information about the upcoming Orange SPV2 surfaced, official info was found on the Orange France website. It looks like the SPV2 will run Smartphone 2002 and have built-in Bluetooth even though it's not supported by the OS. Its also got a digital camera, something it's younger brother does not have.


text:
Le DJK/MJC Trier est un club de handball situé à Trèves en Rhénanie-Palatinat.

Palmarès

Équipe féminine
 compétitions internationales
 demi-finaliste de la Coupe Challenge en 2003
 compétitions nationales
Champion d'Allemagne en 2003

Joueuses historiques
  Anja Althaus
  Maren Baumbach
  Maike März
  Silke Meier
  Alexandra Meisl
  Swetlana Mosgowaja
  Nadja Nadgornaja
  Laura Steinbach

Liens externes
 Site officiel

Treves
Treves

redpajama_set_name: RedPajamaWikipedia


text:
Software + Tech
MAJOR UPDATE TO PPI PLASTIC PIPE DESIGN CALCULATOR ANNOUNCED
Association's Version 3.0 Adds Pipe Sizes, Fluids, and Static Water Column Pressure Function
The Plastics Pipe Institute, Inc. (PPI) has announced a major update to its Building & Construction Division's Plastic Pipe Design Calculator, a free software tool for the design of plastic pressure pipe and tubing systems using CPVC, HDPE, PEX, PE-RT, PP-R and PP-RCT. The calculator is intended to be used for applications such as plumbing, water service, fire protection, hydronic piping (liquids), radiant heating & cooling, snow and ice melting, geothermal ground loops, district heating, chilled water, and turf conditioning. PPI is the major trade association representing the plastic pipe industry.
The latest updates in Version 3.0 of the calculator include the addition of more than 50 new pipe sizes, methanol as a fluid choice for geothermal designs, sodium chloride and calcium chloride brine solutions as fluid choices for chilled water, and the new Static Water Column Pressure function.
This new function is the sixth tool available in the calculator and will help designers to estimate the pressure inside piping at the bottom of a geothermal borehole or at the bottom of a multi-story plumbing, fire protection, or hydronic system.
According to Lance MacNevin, P. Eng., director of engineering for PPI's Building & Construction Division, "This online tool simplifies and makes it faster to design systems and was launched in 2015 with five main functions to select and size the right type of pipe for various applications. Those were pressure/head loss; pipe weight/volume; thermal expansion and contraction; hydraulic shock; and expansion arm/loop design. With the addition of the sixth function, Static Water Column Pressure, the calculator helps designers to determine a potentially overlooked aspect of piping design – the internal pipe pressure that is created by the column of fluid in a tall vertical pipe. With water at 73°F, this pressure is 4.3 psi for every 10 feet of elevation, but other fluids have different densities, and the temperature of the fluid also changes its pressure. This new function allows the user to select the fluid, the temperature, and the elevation of the water column."
Added MacNevin, "Every pipe material has a maximum pressure rating at various temperatures, so this new function will help designers to prevent exposing pipes to excessive pressure caused by the static water column. Another recent addition to the calculator was methanol as a fluid choice, for geothermal ground loops which use that as an antifreeze, and brine solutions for chilled water systems using that fluid type."
The calculator allows the user to select either IP/US or Metric/SI working units, as well as multiple fluids. Fluid temperatures and mix ratios are chosen by the user. Results can be viewed, printed, or emailed.
According to PPI President David Fink, "The BCD Calculator is part of a series of online tools that PPI has published as a service to the industry. These recent updates add to its value as an important resource for designers of commercial plumbing, mechanical, and geothermal systems.".
The BCD Calculator can be found on PPI's website at https://plasticpipe.org/building-construction/bcd-calculator.html or at www.plasticpipecalculator.com
Additional information about Building & Construction Division materials and tools can be found online at https://plasticpipe.org/buildingconstruction.
Building & Construction Division
David Fink
Plastic Pipe Design Calculator
Plastics Pipe Institute
software tool
Static Water Column Pressure
Protecting Environment Wins Warehouse Project of Year from Plastics Pipe Institute
NEW COURSES ADDED TO PLASTIC PIPE INDUSTRY ON-LINE EDUCATIONAL CHANNEL


Support and resistance levels can reveal important information about price activity in the markets. The chart of the Nasdaq Composite chart shows how, by taking note of these support and resistance levels, you could have exited any open positions prior to the sharp sell-off experienced by the technology sector.
In Figure 1 the line labeled R1 refers to the first resistance level, and S1 refers to the first support level. On 1/3/00 the Nasdaq reached a significant high followed by a sharp decline on 1/4/00. These points will be your initial support and resistance levels. If prices drift below the support level it is an indication that prices may drift down further and you should close all your long positions. The resistance level is also of significance. If prices move above the resistance level it is a positive sign implying that the retracement to S1 is merely a correction in a bull market. If prices do not move above the resistance level it is an indication that the bull rally might be preparing for a trend reversal. Here, prices did not go below the support level but did go above the resistance level indicating that the bull market was likely to continue.
The Nasdaq rally continued til it reached its all-time high on 3/10/00 (R2). This should have been your next resistance level. After hitting this high the index retraced, reaching a low of 4455 (S2). The action after this retracement revealed an interesting point. Prices failed to go above the second resistance level suggesting that the bull market had lost its steam. For those wanting additional confirmation, once prices went below the second support level, the Nasdaq experienced a sharp sell-off.
Support and resistance levels are critical in determining entry and exit points in your trading system.
Keeping tabs on these key support and resistance levels can help in making important trading decisions. You could have avoided the technology sell-off by exiting your long positions when you were alerted to signals implying the rally may have come to an end.


It was a somber mood in the Grants Pen community in St Andrew on Friday when a candlelight vigil was held for the two babies who were burnt to death in a fire in the community a week before.
Two-year-old twin girls Naieelia and Nihailia Pinnock were left in the care of their grandmother on February 1 when a blaze of unknown origin gutted the house which they were staying.
The news of the death has left the community of Belgium in Grants Pen in mourning.
And a week after the incident, residents of the community were still reeling from the tragedy.
Pain on their faces were still evident as they came out in their numbers to pay their respect at the vigil where the two babies were remembered as bundles of joy who were destined for greatness, but had their lives cut short in the tragic incident.
The pain was particular telling for the mother of the children.
The funeral service for the children is to be announced at a later date.


text:
Sponsor found for last Bright Tribe school in North
Re-brokering deal marks the end of troubled chain's involvement in northern schools
26th October 2018, 12:30pm
https://www.tes.com/magazine/archive/sponsor-found-last-bright-tribe-school-north
A primary school is being re-brokered out of the troubled Bright Tribe academy chain - marking the end of its doomed attempt to become a leading sponsor of schools in the North of England.
Bright Tribe was once backed by the Department for Education with a share of £5m to create a hub of northern schools.
However, it has since pulled out of all but one of its schools in the North after facing a series of controversies over standards and finances.
It has been announced today that a sponsor has been found for Bright Tribe's last remaining Northern school, Werneth Primary in Oldham.
It will now be run by the Pinnacle Learning Trust, which was set up by The Hathershaw College and Oldham Sixth Form College.
Last month, it was announced that a search was on for sponsors to take on the last six schools run by Bright Tribe: Werneth Primary and five in the East of England.
Bright Tribe had been one of five academy groups tasked with raising standards in the North by the DfE in 2015, along with Wakefield City Academies Trust, which has also faced problems and is now being wound up.
Bright Tribe has been engulfed in controversy. It gave up Whitehaven Academy, in Cumbria, following a damning Ofsted inspection and after school staff asked to leave the trust, complaining of poor exam results and "dilapidated" buildings.
Copeland MP Trudy Harrison told education secretary Damian Hinds at a select committee hearing in June this year that the nuclear industry has been forced to step in to provide computers at a school because of the failings of Bright Tribe.
The Conservative MP also said that teachers and pupils at Whitehaven Academy were forced to work in classrooms of 36C heat because faulty windows had to be nailed shut in the school building.
The MP was escorted off the school site during a visit.
In 2017, Bright Tribe pulled out of a plan to take on Haydon Bridge High School, in Northumberland, citing the size of the school's financial deficit.
It has since pulled out of three other schools it sponsored in the North East.
There has also been controversy over the trust's finances.
Tes revealed earlier this year that the trust had paid more than £680,000 in related-party transactions.
And the government is looking to recover money from Bright Tribe amid questions about how it was used.
The DfE is said to be trying to recoup up to £321,775 from the academy trust because it does not have proof that the money was spent on its intended purpose.
According to a report by the BBC, at least some of the money that the DfE is interested in was given to Bright Tribe for LED lighting by the Education Skills and Funding Agency in 2015. But the lighting was reportedly never installed.
In August, a DfE spokeswoman said: "Where funding is allocated to an academy trust for a specific reason, we expect it to be used for that. We are now recovering funding from the Bright Tribe trust."
Bright Tribe has been under interim executive leadership and a new board since the summer. The interim chief executive officer is Angela Barry and Lee Miller is its interim chief operating officer.
Commenting on the re-brokering of Werneth Primary, Ms Barry said: "I am pleased that a new sponsor has been identified for Werneth Primary School. This is an exciting new chapter for the school under a new multi-academy trust which will provide the pupils, parents and staff with the support, expertise and stability that will deliver a high-quality education."


This low-growing foliage plant spreads by rooting surface runners. Grows 23 inches high and spreads 46 feet wide. Heart-shaped leaves are covered with silvery down, as are the stems. Eye-catching, shimmering container plant; cascades over the edge of pots or window boxes. Can also be used as a small-scale ground cover. Easy to grow from seed. Use as an annual in cold-winter areas.