text:
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.

#include "GuSweepTests.h"
#include "PxSphereGeometry.h"
#include "GuSweepSharedTests.h"
#include "GuVecCapsule.h"
#include "GuVecBox.h"
#include "GuVecTriangle.h"
#include "GuGJKWrapper.h"
#include "GuSweepMTD.h"
#include "GuSweepTriangleUtils.h"

using namespace physx;
using namespace Gu;
using namespace Cm;
using namespace physx::shdfnd::aos;

bool sweepCapsule_BoxGeom(GU_CAPSULE_SWEEP_FUNC_PARAMS)
{
	PX_UNUSED(hintFlags);

	using namespace Ps::aos;
	PX_ASSERT(geom.getType() == PxGeometryType::eBOX);
	const PxBoxGeometry& boxGeom = static_cast<const PxBoxGeometry&>(geom);

	const FloatV zero = FZero();
	const Vec3V zeroV = V3Zero();
	const Vec3V boxExtents0 = V3LoadU(boxGeom.halfExtents);
	const FloatV dist = FLoad(distance);
	const Vec3V worldDir = V3LoadU(unitDir);

	PxReal _capsuleHalfHeight = 0.0f;
	const PxTransform capTransform = getCapsuleTransform(lss, _capsuleHalfHeight);

	const PsTransformV capPos = loadTransformU(capTransform);
	const PsTransformV boxPos = loadTransformU(pose);

	const PsMatTransformV aToB(boxPos.transformInv(capPos));

	const FloatV capsuleHalfHeight = FLoad(_capsuleHalfHeight);
	const FloatV capsuleRadius = FLoad(lss.radius);

	BoxV box(zeroV, boxExtents0);
	CapsuleV capsule(aToB.p, aToB.rotate(V3Scale(V3UnitX(), capsuleHalfHeight)), capsuleRadius);

	const Vec3V dir = boxPos.rotateInv(V3Neg(V3Scale(worldDir, dist)));

	const bool isMtd = hintFlags & PxHitFlag::eMTD;
	FloatV toi = FMax();
	Vec3V closestA, normal;//closestA and normal is in the local space of box
	bool hit  = GJKLocalRayCast(capsule, box, zero, zeroV, dir, toi, normal, closestA, lss.radius + inflation, isMtd);

	if(hit)
	{
		sweepHit.flags = PxHitFlag::eDISTANCE | PxHitFlag::eNORMAL;
		if(FAllGrtrOrEq(zero, toi))
		{
			//initial overlap
			if((!PX_IS_SPU) && isMtd)
			{
				sweepHit.flags |= PxHitFlag::ePOSITION;
				const Vec3V worldPointA = boxPos.transform(closestA);
				const Vec3V destNormal = boxPos.rotate(normal);
				const FloatV length = toi;
				const Vec3V destWorldPointA = V3NegScaleSub(destNormal, length, worldPointA);
				V3StoreU(destWorldPointA, sweepHit.position);
				V3StoreU(destNormal, sweepHit.normal);
				FStore(length, &sweepHit.distance);
			}
			else
			{
				sweepHit.distance	= 0.0f;
				sweepHit.normal		= -unitDir;
			}
		}
		else
		{
			sweepHit.flags |= PxHitFlag::ePOSITION;
			const Vec3V worldPointA = boxPos.transform(closestA);
			const Vec3V destNormal = boxPos.rotate(normal);
			const FloatV length = FMul(dist, toi);
			const Vec3V destWorldPointA = V3ScaleAdd(worldDir, length, worldPointA);
			V3StoreU(destNormal, sweepHit.normal);
			V3StoreU(destWorldPointA, sweepHit.position);
			FStore(length, &sweepHit.distance);

		}

		return true;
	}
	return false;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool sweepBox_SphereGeom(GU_BOX_SWEEP_FUNC_PARAMS)
{
	PX_ASSERT(geom.getType() == PxGeometryType::eSPHERE);
	PX_UNUSED(hintFlags);
	const PxSphereGeometry& sphereGeom = static_cast<const PxSphereGeometry&>(geom);

	const FloatV zero = FZero();
	const Vec3V zeroV = V3Zero();
	const Vec3V boxExtents = V3LoadU(box.extents);
	const FloatV worldDist = FLoad(distance);
	const Vec3V  unitDirV = V3LoadU(unitDir);

	const FloatV sphereRadius = FLoad(sphereGeom.radius);

	/*
		DE10168
		original code:
		const PxTransform boxWorldPose = box.getTransform();
		starting with SDK 1.700 it breaks various PS4 non-debug tests:
		SqTestSweep and RecoveryModuleTest

		for some unknown reason, the vector elements end up in the wrong location
		(in y where it should be in x it seems)

		while we investigate the real cause, use the equivalent code directly
	*/
	const PxTransform boxWorldPose = PxTransform(box.center, PxQuat(box.rot));

	const PsTransformV spherePos = loadTransformU(pose);
	const PsTransformV boxPos = loadTransformU(boxWorldPose);

	const PsMatTransformV aToB(boxPos.transformInv(spherePos));

	BoxV boxV(zeroV, boxExtents);
	CapsuleV capsuleV(aToB.p, sphereRadius);

	//transform into b space
	const Vec3V dir = boxPos.rotateInv(V3Scale(unitDirV, worldDist));

	bool isMtd = hintFlags & PxHitFlag::eMTD;
	FloatV toi;
	Vec3V closestA, normal;//closestA and normal is in the local space of box
	bool hit  = GJKLocalRayCast(capsuleV, boxV, zero, zeroV, dir, toi, normal, closestA, sphereGeom.radius+inflation, isMtd);

	if(hit)
	{
		sweepHit.flags = PxHitFlag::eDISTANCE | PxHitFlag::eNORMAL;

		//initial overlap
		if(FAllGrtrOrEq(zero, toi))
		{
			if((!PX_IS_SPU) && isMtd)
			{
				sweepHit.flags |= PxHitFlag::ePOSITION;
				const Vec3V destWorldPointA = boxPos.transform(closestA);
				const Vec3V destNormal = V3Neg(boxPos.rotate(normal));
				const FloatV length = toi;
				V3StoreU(destNormal, sweepHit.normal);
				V3StoreU(destWorldPointA, sweepHit.position);
				FStore(length, &sweepHit.distance);
			}
			else
			{
				sweepHit.distance	= 0.0f;
				sweepHit.normal		= -unitDir;
			}
		}
		else
		{

			sweepHit.flags |= PxHitFlag::ePOSITION;
			const Vec3V destWorldPointA = boxPos.transform(closestA);
			const Vec3V destNormal = V3Neg(boxPos.rotate(normal));
			const FloatV length = FMul(worldDist, toi);
			V3StoreU(destNormal, sweepHit.normal);
			V3StoreU(destWorldPointA, sweepHit.position);
			FStore(length, &sweepHit.distance);
		}
		return true;
	}
	return false;
}

bool sweepBox_CapsuleGeom(GU_BOX_SWEEP_FUNC_PARAMS)
{
	using namespace Ps::aos;
	PX_ASSERT(geom.getType() == PxGeometryType::eCAPSULE);
	PX_UNUSED(hintFlags);
	const PxCapsuleGeometry& capsuleGeom = static_cast<const PxCapsuleGeometry&>(geom);

	const FloatV capsuleHalfHeight = FLoad(capsuleGeom.halfHeight);
	const FloatV capsuleRadius = FLoad(capsuleGeom.radius);

	const FloatV zero = FZero();
	const Vec3V zeroV = V3Zero();
	const Vec3V boxExtents = V3LoadU(box.extents);
	const FloatV worldDist = FLoad(distance);
	const Vec3V  unitDirV = V3LoadU(unitDir);

	const PxTransform boxWorldPose = box.getTransform();

	const PsTransformV capPos = loadTransformU(pose);
	const PsTransformV boxPos = loadTransformU(boxWorldPose);

	const PsMatTransformV aToB(boxPos.transformInv(capPos));

	BoxV boxV(zeroV, boxExtents);
	CapsuleV capsuleV(aToB.p, aToB.rotate(V3Scale(V3UnitX(), capsuleHalfHeight)), capsuleRadius);

	//transform into b space
	const Vec3V dir = boxPos.rotateInv(V3Scale(unitDirV, worldDist));

	const bool isMtd = hintFlags & PxHitFlag::eMTD;
	FloatV toi;
	Vec3V closestA, normal;//closestA and normal is in the local space of box
	bool hit  = GJKLocalRayCast(capsuleV, boxV, zero, zeroV, dir, toi, normal, closestA, capsuleGeom.radius+inflation, isMtd);

	if(hit)
	{
		sweepHit.flags = PxHitFlag::eDISTANCE | PxHitFlag::eNORMAL;

		//initial overlap
		if(FAllGrtrOrEq(zero, toi))
		{
			if((!PX_IS_SPU) && isMtd)
			{
				sweepHit.flags |= PxHitFlag::ePOSITION;
				//initial overlap is toi < 0
				const FloatV length = toi;
				const Vec3V destWorldPointA = boxPos.transform(closestA);
				const Vec3V destNormal = boxPos.rotate(normal);
				V3StoreU(V3Neg(destNormal), sweepHit.normal);
				V3StoreU(destWorldPointA, sweepHit.position);
				FStore(length, &sweepHit.distance);
			}
			else
			{
				sweepHit.distance	= 0.0f;
				sweepHit.normal		= -unitDir;
			}
			return true;
		}
		else
		{
			sweepHit.flags |= PxHitFlag::ePOSITION;
			const Vec3V destWorldPointA = boxPos.transform(closestA);
			const Vec3V destNormal = boxPos.rotate(normal);
			const FloatV length = FMul(worldDist, toi);
			V3StoreU(V3Neg(destNormal), sweepHit.normal);
			V3StoreU(destWorldPointA, sweepHit.position);
			FStore(length, &sweepHit.distance);
		}

		return true;
	}
	return false;
}

bool sweepBox_BoxGeom(GU_BOX_SWEEP_FUNC_PARAMS)
{
	PX_ASSERT(geom.getType() == PxGeometryType::eBOX);
	const PxBoxGeometry& boxGeom = static_cast<const PxBoxGeometry&>(geom);

	const FloatV zero = FZero();
	const Vec3V zeroV = V3Zero();
	const Vec3V boxExtents0 = V3LoadU(boxGeom.halfExtents);
	const Vec3V boxExtents1 = V3LoadU(box.extents);
	const FloatV worldDist = FLoad(distance);
	const Vec3V  unitDirV = V3LoadU(unitDir);

	const PxTransform boxWorldPose = box.getTransform();

	const PsTransformV boxTrans0 = loadTransformU(pose);
	const PsTransformV boxTrans1 = loadTransformU(boxWorldPose);

	const PsMatTransformV aToB(boxTrans1.transformInv(boxTrans0));

	BoxV box0(zeroV, boxExtents0);
	BoxV box1(zeroV, boxExtents1);

	//transform into b space
	const Vec3V dir = boxTrans1.rotateInv(V3Scale(unitDirV, worldDist));
	const bool isMtd = hintFlags & PxHitFlag::eMTD;
	FloatV toi;
	Vec3V closestA, normal;//closestA and normal is in the local space of box
	bool hit  = GJKRelativeRayCast(box0, box1, aToB, zero, zeroV, dir, toi, normal, closestA, inflation, isMtd);

	if(hit)
	{
		sweepHit.flags = PxHitFlag::eDISTANCE | PxHitFlag::eNORMAL;
		if(FAllGrtrOrEq(zero, toi))
		{
			if((!PX_IS_SPU) && isMtd)
			{
				sweepHit.flags |= PxHitFlag::ePOSITION;
				const FloatV length = toi;
				const Vec3V destWorldPointA = boxTrans1.transform(closestA);
				const Vec3V destNormal = V3Normalize(boxTrans1.rotate(normal));
				V3StoreU(V3Neg(destNormal), sweepHit.normal);
				V3StoreU(destWorldPointA, sweepHit.position);
				FStore(length, &sweepHit.distance);
			}
			else
			{
				sweepHit.distance	= 0.0f;
				sweepHit.normal		= -unitDir;
			}
		}
		else
		{
			sweepHit.flags |= PxHitFlag::ePOSITION;
			const Vec3V destWorldPointA = boxTrans1.transform(closestA);
			const Vec3V destNormal = V3Normalize(boxTrans1.rotate(normal));
			const FloatV length = FMul(worldDist, toi);
			V3StoreU(V3Neg(destNormal), sweepHit.normal);
			V3StoreU(destWorldPointA, sweepHit.position);
			FStore(length, &sweepHit.distance);
		}
		return true;
	}
	return false;
}

bool Gu::SweepBoxTriangles(	PxU32 nbTris, const PxTriangle* triangles, bool isDoubleSided,
							const PxBoxGeometry& boxGeom, const PxTransform& boxPose, const PxVec3& dir, const PxReal length, PxVec3& _hit,
							PxVec3& _normal, float& _d, PxU32& _index, const PxU32* cachedIndex, const PxReal inflation, PxHitFlags hintFlags)
{
	PX_UNUSED(hintFlags);

	if(!nbTris)
		return false;

	const bool meshBothSides = hintFlags & PxHitFlag::eMESH_BOTH_SIDES;
	const bool doBackfaceCulling = !isDoubleSided && !meshBothSides;

	Box box;
	buildFrom1(box, boxPose.p, boxGeom.halfExtents, boxPose.q);

	PxSweepHit sweepHit;
	// Move to AABB space
	Matrix34 worldToBox;
	computeWorldToBoxMatrix(worldToBox, box);

	const PxVec3 localDir = worldToBox.rotate(dir);
	const PxVec3 localMotion = localDir * length;

	const Vec3V base0 = V3LoadU(worldToBox.base0);
	const Vec3V base1 = V3LoadU(worldToBox.base1);
	const Vec3V base2 = V3LoadU(worldToBox.base2);
	const Mat33V matV(base0, base1, base2);
	const Vec3V p	  = V3LoadU(worldToBox.base3);
	const PsMatTransformV worldToBoxV(p, matV);

	const FloatV zero = FZero();
	const Vec3V zeroV = V3Zero();
	const BoolV bTrue = BTTTT();
	const Vec3V boxExtents = V3LoadU(box.extents);
	const Vec3V boxDir = V3LoadU(localDir);
	const FloatV inflationV = FLoad(inflation);
	const Vec3V absBoxDir = V3Abs(boxDir);
	const FloatV boxRadiusV = FAdd(V3Dot(absBoxDir, boxExtents), inflationV);
	BoxV boxV(zeroV, boxExtents);

#ifdef PX_DEBUG
	PxU32 totalTestsExpected = nbTris;
	PxU32 totalTestsReal = 0;
	PX_UNUSED(totalTestsExpected);
	PX_UNUSED(totalTestsReal);
#endif

	Vec3V boxLocalMotion = V3LoadU(localMotion);
	Vec3V minClosestA = zeroV, minNormal = zeroV;
	PxU32 minTriangleIndex = 0;
	PxVec3 bestTriNormal(0.0f);
	FloatV dist = FLoad(length);

	const PsTransformV boxPos = loadTransformU(boxPose);

	bool status = false;

	const PxU32 idx = cachedIndex ? *cachedIndex : 0;

	for(PxU32 ii=0;ii<nbTris;ii++)
	{
		const PxU32 triangleIndex = getTriangleIndex(ii, idx);

		const Vec3V localV0 =  V3LoadU(triangles[triangleIndex].verts[0]);
		const Vec3V localV1 =  V3LoadU(triangles[triangleIndex].verts[1]);
		const Vec3V localV2 =  V3LoadU(triangles[triangleIndex].verts[2]);

		const Vec3V triV0 = worldToBoxV.transform(localV0);
		const Vec3V triV1 = worldToBoxV.transform(localV1);
		const Vec3V triV2 = worldToBoxV.transform(localV2);

		const Vec3V triNormal = V3Cross(V3Sub(triV2, triV1),V3Sub(triV0, triV1));

		if(doBackfaceCulling && FAllGrtrOrEq(V3Dot(triNormal, boxLocalMotion), zero)) // backface culling
			continue;

		const FloatV dp0 = V3Dot(triV0, boxDir);
		const FloatV dp1 = V3Dot(triV1, boxDir);
		const FloatV dp2 = V3Dot(triV2, boxDir);

		const FloatV dp = FMin(dp0, FMin(dp1, dp2));

		const Vec3V dpV = V3Merge(dp0, dp1, dp2);

		const FloatV temp1 = FAdd(boxRadiusV, dist);
		const BoolV con0 = FIsGrtr(dp, temp1);
		const BoolV con1 = V3IsGrtr(zeroV, dpV);

		if(BAllEq(BOr(con0, con1), bTrue))
			continue;

#ifdef PX_DEBUG
		totalTestsReal++;
#endif

		TriangleV triangleV(triV0, triV1, triV2);

		FloatV lambda;
		Vec3V closestA, normal;//closestA and normal is in the local space of convex hull
		bool hit  = GJKLocalRayCast(triangleV, boxV, zero, zeroV, boxLocalMotion, lambda, normal, closestA, inflation, false);

		if(hit)
		{
			//hitCount++;

			if(FAllGrtrOrEq(zero, lambda))
			{
				_d		= 0.0f;
				_index	= triangleIndex;
				_normal	= -dir;
				return true;
			}

			dist = FMul(dist,lambda);
			boxLocalMotion = V3Scale(boxDir, dist);
			minClosestA = closestA;
			minNormal = normal;
			minTriangleIndex = triangleIndex;
			V3StoreU(triNormal, bestTriNormal);
			status = true;
		}
	}

	if(status)
	{
		_index	= minTriangleIndex;
		const Vec3V destNormal = V3Neg(V3Normalize(boxPos.rotate(minNormal)));
		const Vec3V destWorldPointA = boxPos.transform(minClosestA);
		V3StoreU(destNormal, _normal);
		V3StoreU(destWorldPointA, _hit);
		FStore(dist, &_d);

		// PT: by design, returned normal is opposed to the sweep direction.
		if(shouldFlipNormal(_normal, meshBothSides, isDoubleSided, bestTriNormal, dir))
			_normal = -_normal;

		return true;
	}
	return false;
}

extern Gu::SweepConvexFunc gSweepConvexMap[7];

extern bool sweepCapsule_SphereGeom			(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCapsule_PlaneGeom			(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCapsule_CapsuleGeom		(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCapsule_BoxGeom			(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCCTCapsule_BoxGeom			(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCapsule_ConvexGeom			(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCapsule_MeshGeom			(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCCTCapsule_MeshGeom		(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCapsule_HeightFieldGeom	(GU_CAPSULE_SWEEP_FUNC_PARAMS);
extern bool sweepCCTCapsule_HeightFieldGeom	(GU_CAPSULE_SWEEP_FUNC_PARAMS);

extern bool sweepBox_SphereGeom			(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepCCTBox_SphereGeom		(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepBox_PlaneGeom			(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepBox_CapsuleGeom		(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepCCTBox_CapsuleGeom		(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepBox_BoxGeom			(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepCCTBox_BoxGeom			(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepBox_ConvexGeom			(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepBox_MeshGeom			(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepBox_HeightFieldGeom	(GU_BOX_SWEEP_FUNC_PARAMS);
extern bool sweepCCTBox_HeightFieldGeom	(GU_BOX_SWEEP_FUNC_PARAMS);

bool sweepConvex_SphereGeom(
	const PxGeometry& geom, const PxTransform& pose, const PxConvexMeshGeometry& convexGeom, const PxTransform& convexPose,
	const PxVec3& unitDir, const PxReal distance, PxSweepHit& sweepHit, PxHitFlags hintFlags, const PxReal inflation);
bool sweepConvex_CapsuleGeom(
	const PxGeometry& geom, const PxTransform& pose, const PxConvexMeshGeometry& convexGeom, const PxTransform& convexPose,
	const PxVec3& unitDir, const PxReal distance, PxSweepHit& sweepHit, PxHitFlags hintFlags, const PxReal inflation);
bool sweepConvex_PlaneGeom(
	const PxGeometry& geom, const PxTransform& pose, const PxConvexMeshGeometry& convexGeom, const PxTransform& convexPose,
	const PxVec3& unitDir, const PxReal distance, PxSweepHit& sweepHit, PxHitFlags hintFlags, const PxReal inflation);
bool sweepConvex_BoxGeom(
	const PxGeometry& geom, const PxTransform& pose, const PxConvexMeshGeometry& convexGeom, const PxTransform& convexPose,
	const PxVec3& unitDir, const PxReal distance, PxSweepHit& sweepHit, PxHitFlags hintFlags, const PxReal inflation);
bool sweepConvex_ConvexGeom(
	const PxGeometry& geom, const PxTransform& pose, const PxConvexMeshGeometry& convexGeom, const PxTransform& convexPose,
	const PxVec3& unitDir, const PxReal distance, PxSweepHit& sweepHit, PxHitFlags hintFlags, const PxReal inflation);
bool sweepConvex_MeshGeom(
	const PxGeometry& aMeshGeom, const PxTransform& meshPose, const PxConvexMeshGeometry& convexGeom, const PxTransform& convexPose,
	const PxVec3& unitDir, const PxReal distance, PxSweepHit& sweepHit, PxHitFlags hintFlags, const PxReal inflation);
bool sweepConvex_HeightFieldGeom(
	const PxGeometry& geom, const PxTransform& pose, const PxConvexMeshGeometry& convexGeom, const PxTransform& convexPose,
	const PxVec3& unitDir, const PxReal distance, PxSweepHit& sweepHit, PxHitFlags hintFlags, const PxReal inflation);

Gu::GeomSweepFuncs gGeomSweepFuncs =
{
	{
		sweepCapsule_SphereGeom,
		sweepCapsule_PlaneGeom,
		sweepCapsule_CapsuleGeom,
		sweepCapsule_BoxGeom,
		sweepCapsule_ConvexGeom,
		sweepCapsule_MeshGeom,
		sweepCapsule_HeightFieldGeom
	},
	{
		sweepCapsule_SphereGeom,
		sweepCapsule_PlaneGeom,
		sweepCapsule_CapsuleGeom,
		PX_IS_SPU ? sweepCapsule_BoxGeom : sweepCCTCapsule_BoxGeom,
		sweepCapsule_ConvexGeom,
		sweepCapsule_MeshGeom ,
		sweepCapsule_HeightFieldGeom
	},
	{
		sweepBox_SphereGeom,
		sweepBox_PlaneGeom,
		sweepBox_CapsuleGeom,
		sweepBox_BoxGeom,
		sweepBox_ConvexGeom,
		sweepBox_MeshGeom,
		sweepBox_HeightFieldGeom
	},
	{
		PX_IS_SPU ? sweepBox_SphereGeom : sweepCCTBox_SphereGeom,
		sweepBox_PlaneGeom,
		PX_IS_SPU ? sweepBox_CapsuleGeom : sweepCCTBox_CapsuleGeom,
		PX_IS_SPU ? sweepBox_BoxGeom : sweepCCTBox_BoxGeom,
		sweepBox_ConvexGeom,
		sweepBox_MeshGeom,
		PX_IS_SPU ? sweepBox_HeightFieldGeom : sweepCCTBox_HeightFieldGeom
	},
	{
		sweepConvex_SphereGeom,		// 0
		sweepConvex_PlaneGeom,		// 1
		sweepConvex_CapsuleGeom,	// 2
		sweepConvex_BoxGeom,		// 3
		sweepConvex_ConvexGeom,		// 4
		sweepConvex_MeshGeom,		// 5
		sweepConvex_HeightFieldGeom	// 6
	}
};

PX_PHYSX_COMMON_API const GeomSweepFuncs& Gu::GetGeomSweepFuncs()
{
	return gGeomSweepFuncs;
}


Cristhiano Aguiar is a writer and essayist. In 2012 he was announced as one of the twenty Best Young Brazilian Novelists by Granta em Português. Born in Paraíba, he has lived in Recife, Berlin, Olinda, São Paulo and Berkeley. He was editor of the experimental literary magazines Eita! and Crispim. Aguiar's first collection Ao lado do muro, was published in 2006. He is currently (2012) working on his first novel and also on a collection of essays on contemporary Brazilian literature.


Most cloud services tell you that their data stores are safe, that your data is encrypted in transit and on their drives, that employees don't have access, etc. For the vast majority of the stuff I store in the cloud, this is more than good enough for me—the data isn't overly sensitive, and if someone were to hack their way in, all they'd get are a bunch of work and personal writing files and some family photos.
For other files—primarily financial and family related—those assurances just aren't enough for me. But I still want the flexibility and security that comes from having a copy of these files in the cloud. So what's a paranoid user to do to take advantage of the cloud, with added security, but with a minimum of hassle?
The solution I came up with involves using local encrypted disk images and a shell script. Using this script (and some means of scheduling it), you can automatically encrypt and back up whatever files you like to a cloud service.
A selection of files you'd like to regularly save on a cloud service, and these fles are not normally encrypted on your Mac.
Your cloud service synced to a local folder on your Mac—most all do this by default.
An encrypted disk image of sufficient size to hold the files. Here's how to create one. My script assumes you set the Image Format to "sparse bundle disk image." If you didn't, you'll need to change the extension in the script.
The password for the encrypted disk image saved in your OS X keychain.
A newer version of rsync installed. I'm using version 3.1.1 from MacPorts. If you're using the stock rsync, you'll need to change the rsync line in the script (see notes).
Assuming you've got those things in place, here's the script. Note that this is not cut-and-paste ready to use; please read the in-script comments and edit as needed.
#!/bin/sh #################################################################### ### Replace all NAME-OF-DISK-IMAGE references with the actual ### ### name of your secure disk image. If the name contains spaces, ### ### remember to escape\ them\ with\ backslashes. ### ### ### ### Do the same for NAME-OF-ARCHIVE, too. ### #################################################################### # set the path to the folder with the encrypted disk image file SECUREDIR="/path/to/encrypted-disk-image/folder" # Mount the encrypted disk image ### Note: Leave "disk image password" as it appears! ### ### Do *not* replace it with the actual password ### ### to your disk image! ### security find-generic-password -w -D "disk image password" -l NAME-OF-DISK-IMAGE.sparsebundle | hdiutil attach $SECUREDIR/NAME-OF-DISK-IMAGE.sparsebundle sleep 3 # Check to make sure image mounted; notify if it failed ### The MOUNTED-IMAGE-NAME here is different than the name of your ### ### disk image file; it's the name you see in the Finder's sidebar ### ### when the disk image is mounted. ### [ -d /Volumes/MOUNTED-IMAGE-NAME ] || terminal-notifier -title "Alert!" -message "Disk image failed to mount" && exit 1 [ -d /Volumes/MOUNTED-IMAGE-NAME ] || exit 1 # Copy key files to disk image # If you're using the stock rsync, change -avzXE to -avE # rsync -avzXE "/path/to/some/important/files" "/Volumes/MOUNTED-IMAGE-NAME/folder1" rsync -avzXE "/path/to/other/key/files" "/Volumes/MOUNTED-IMAGE-NAME/folder2" rsync -avzXE "/different/path/to/other/files" "/Volumes/MOUNTED-IMAGE-NAME/folder3" # Repeat above as needed # Eject disk image hdiutil detach "/Volumes/MOUNTED-IMAGE-NAME" # Zip, then copy to cloud drive eval zip -r "$SECUREDIR"/NAME-OF-ARCHIVE.zip $SECUREDIR/NAME-OF-DISK-IMAGE.sparsebundle/ cp "$SECUREDIR"/NAME-OF-ARCHIVE.zip "/path/to/local/mirror/of/cloud/drive/" # Optional: remove the archive file when done # Remove the '#' in the next line to do so # rm "$SECUREDIR"/NAME-OF-ARCHIVE.zip # Send a message about it terminal-notifier -title "Back up done" -message "Key files encrypted and on your cloud drive"
terminal-notifier -title "Back up done" -message "Key files encrypted and on your cloud drive"
Note, too, that with the disk image password in your keychain, if someone gets access to your Mac (and its login and keychain passwords), then they'll have access to the encrypted disk image. But given this script is taking files that are currently not encrypted, that's a bit of a moot point.
Once you've clicked that button once, you'll never see this dialog again.
To execute my script, I'm using a launchd agent that runs every night after I'm asleep—that way, I can be sure I don't have any of the files open. But I sleep soundly, knowing that our key files are backed up in the cloud about as safely as possible.
Rob, I use Viivo (https://viivo.com) to encrypt my cloud data. Concept is that you have to have two folders: one with the unencrypted files, the second (on Dropbox.com) is the encrypted files. The software watches the unencrypted folders for changes and makes the corresponding change on the encrypted folder in Dropbox.
I'd never heard of them; thanks for the pointer!


The programme gives you the chance to gain internationally accepted and accredited additional skills. These will qualify you for leadership positions in midwifery research, education and practice. Strenghten your personal professional competencies and undertake further study in such areas as clinical research, modern management methods and recent teaching and learning strategies.
The Master Midwifery is a collaboration between Zuyd and universities in Glasgow, Hannover, Ljubljana and Switzerland.


text:
Q: Should I rollback a manually edited "possible duplicate" box? One guy edited a question to add a possible dupe link at the top. Is this action right? Shouldn't a simple comment+flag be enough?
I considered rolling it back, but he seems to have pretty good rep and I haven't been on SO long enough to tell if what he did is acceptable.

A: Definitely revert because that is not a thing you do.
If it's a duplicate, you cast your close vote, or flag it. Commenting is optional and automatic at 3k+ rep, but you don't edit it into the post body because Community does that automatically. (If it gets closed, it'll have two duplicate boxes at the top.)
Also, whether it is a duplicate is not up to a single editor to decide; there's a reason closing requires 5 votes.

A: Yes, you should. That is not the appropriate action for suggesting a possible duplicate. Until it actually gets closed as a duplicate by 5 people, it is only a possible duplicate and the question is still perfectly valid. The only appropriate action is to vote-to-close and list that as the question believed to be a duplicate, which auto-posts the comment. If they don't have that privilege yet, that's what flagging or commenting is for.
Not to mention, once it does get closed (if it does), Community is just going to add another box on top of that with the properly formatted, actual duplicate box.

redpajama_set_name: RedPajamaStackExchange


Rrrather has spoken. Goldenmoon78 is the best user on the site. Do you agree? Yes or I would have preferred it to be ______?
A female winner for the first time in awhile! The feminists are taking over!
She deserves it. Super chill.
Omg I'd like to thank my mom, dad, brother, sister, my best friend, my crackhead aunt, my inmate cousin and my neighbor who's a serial killer.


text:
Home Space News
Scientists Measure Temperature Swings of Black Hole Winds for the First Time
TOPICS:AstronomyAstrophysicsBlack HoleCalifornia Institute of TechnologyCosmologyNuSTARXMM-Newton
By Lori Dajose, CalTech March 1, 2017
This artist's concept illustrates a supermassive black hole with X-ray emission emanating from its inner region (pink) and ultrafast winds (light purple lines) streaming from the surrounding disk.
A team of scientists has measured rapidly varying temperatures in hot gas emanating from around a black hole for the first time. These ultrafast "winds" are created by disks of matter surrounding black holes.
Supermassive black holes can be voracious, devouring gas, dust, and other material pulled in by their gravity. These feeding frenzies can get messy: the disks of matter surrounding black holes can fling out ultrafast streams of hot gas, or "winds," that blast through their host galaxies. These winds, according to new measurements of a nearby supermassive black hole obtained with NASA's Nuclear Spectroscopic Telescope Array (NuSTAR) telescope, can heat up and cool down in the span of just a few hours.
The findings, made with NuSTAR and the European Space Agency's XMM-Newton telescope, appear in a paper in the March 2 issue of the journal Nature.
"We know that supermassive black holes affect the environment of their host galaxies, and powerful winds arising from near the black hole may be one means for them to do so," says NuSTAR principal investigator Fiona Harrison, the Benjamin M. Rosen Professor of Physics and the Kent and Joyce Kresa Leadership Chair of Caltech's Division of Physics, Mathematics and Astronomy. "The rapid variability, observed for the first time, is providing clues as to how these winds form and how much energy they may carry out into the galaxy."
Supermassive black holes are orbited by disks of gas and dust, called accretion disks, from which they feed. Young and energetic black holes, such as the nearby one studied by NuSTAR, can only feed so quickly, however, before their accretion disks begin to emit streams of fast, hot gas in all directions. These winds, which travel at a quarter of the speed of light and carry an enormous amount of matter, can disrupt star formation in the black hole's host galaxy.
To measure the temperatures of these winds, the team studied X-rays coming from the edge of the black hole. As they travel toward Earth, these X-rays pass through the winds, and some wavelengths of the X-ray spectrum are absorbed by different elements in the winds, such as iron and magnesium. By examining the holes, or "absorption features," in the X-ray spectrum as it reaches Earth, astronomers can learn more about the components of the wind.
While observing this spectrum, the team noticed that the absorption features were disappearing and reappearing in the span of a few hours. The team concluded that the X-rays were actually heating up the winds to very high temperatures—millions of degrees Fahrenheit—such that they became incapable of absorbing any more X-rays. The winds then cool off, and the absorption features return, starting the cycle over again.
"This is the first time we have seen that winds are interacting with the black hole's radiation," says Michael Parker, postdoctoral scholar at University of Cambridge Institute of Astronomy and first author on the paper. "Further study of this source is likely to have wide-ranging implications for our knowledge of how these winds form and are powered, where they are located, how dense they are, and how long they last—all of which will add to our understanding of the interaction between black holes and their galaxies."
The paper is titled "The response of relativistic outflowing gas to the inner accretion disk of a black hole." Other Caltech co-authors include postdoctoral scholar Javier Garcia. The work was funded by the European Research Council, the European Union Seventh Framework Programme, the Science and Technology Facilities Council of the United Kingdom, the European Space Agency, and NASA.
Reference: "The response of relativistic outflowing gas to the inner accretion disk of a black hole" by Michael L. Parker, Ciro Pinto, Andrew C. Fabian, Anne Lohfink, Douglas J. K. Buisson, William N. Alston, Erin Kara, Edward M. Cackett, Chia-Ying Chiang, Thomas Dauser, Barbara De Marco, Luigi C. Gallo, Javier Garcia, Fiona A. Harrison, Ashley L. King, Matthew J. Middleton, Jon M. Miller, Giovanni Miniutti, Christopher S. Reynolds, Phil Uttley, Ranjan Vasudevan, Dominic J. Walton, Daniel R. Wilkins and Abderahmen Zoghbi, 2 March 2017, Nature.
DOI: 10.1038/nature21385
Scientists Measure the Spin Rates of Supermassive Black Holes
Stunning Reveal: First Image of the Black Hole at the Center of Our Milky Way Galaxy
NASA's Gravity Assist: Black Hole Mysteries
Missing Seeds: Mysterious Enigma of Supermassive Black Holes
Hypnotic New NASA Visualization Probes the Light-Bending Dance of Binary Black Holes
Hubble Finds Phantom Imprint in Space Revealing Black Hole Roaming Our Milky Way Galaxy
Data Reveals Dormant Black Hole Amidst Stellar Chaos
Astronomers Reveal First Direct Visual Evidence of a Supermassive Black Hole
Be the first to comment on "Scientists Measure Temperature Swings of Black Hole Winds for the First Time"

redpajama_set_name: RedPajamaCommonCrawl


text:
The Boom Boom Bap – review
Posted at 11am on 05/31/06	by Ernst
The Boom Boom Bap is the first single from the new Scritti Politti album White Bread Black Beer. The CD Single contains the album version and 2 new tracks, no remixes.
Ever since BBC 6 played it for the first time in december of last year, this melodious ballad has been going round in my head. It was the first we heard from Green Gartside since Anomie & Bonhomie in 1999, and what a treat it is. The Boom Boom Bap is a honeysweet song, showing all the beauty that Green is able to bring about with his voice and his sound, following the line of Brushed with oil, dusted with powder. A beauty, a minimal jewel.
The b-side features 2 new songs. The last time I looked, is a fine song in the line of White Bread Black Beer. Remarkable are the recurring "nashville" guitar chords and the interesting lyrics. "The next time I look I will be a long way from here, by the tree of cocaine, near the river of beer". Please show me where that place is. In the middle of this song there is a mysterious woman counting down from seven to zero, in French. Excellent. The second new song on the single is Hands up, an uptempo rap track, fierce & intense, featuring a rapper called Skillz (from Virginia ?) I am not sure if this is the man, I googled him up. Anyway, he wants us to put our mothafuckin' hands up and keep em there. To me his voice sounds a bit like Emenim (hope I don't insult Skillz with that). No Green vocals on this track, i guess it's produced, mixed and music played by Green. I played this track a couple of times, it grows on you. Nice one.
Release date Europe 19-06-2006
Update (Marco – May 31, 2006): I have uploaded higher quality scans, simply click on the images for larger versions
4 comments | Category: Scritti Packaging, Scritti Politti, Singles, The Boom Boom Bap
Scritti Politti – Quiet comeback
Posted at 10pm on 05/30/06	by Ellen
Using babelfish, a dictionary and my highschool german i managed to translate an interview by Tom Venker on intro.de. Some sentences were hard to get right, and i'm not sure i succeeded. In spite of what you might think, dutch is very different from german, so i didn't get it all at once. I first put the whole thing through babelfish, which made its amusing literal translation. The one that will stay with me for a long time is skirt music (Rock Musik!).
The biggie for me in this article is that Green talks about a second single, a collaboration with Mad Skills who is known for his work on Rawkus Records.
Enjoy the article, and I apologize in advance for some weird english, but i think i got the general direction right.
Quiet comeback
It is 29 years ago that Tom Morley and Green Gartside, two London artstudents, brought Scritti Politti into being. The project, trained and lived between squats and sociological and philosophical discussions, developed rapidly from Punk into arty, reggae and funk-inspired postpunk to what would enter as 1982 pop history: 'Songs to Remember' is called the soulfull intellectual pop communist manifest of the year. Afterwards the ways of the founding members parted, Gartside worked alone on the constant change of Scritti Politti – and with increasing distance between lifesigns: from synthpop and hiphop to the current puristic gitar pop album 'White Bread Black Beer'.
[ Green Gartside looks interested at the iPod with microphone ]
One can probably attach the times of your music, due to the long phases between the albums, at the recording devices the journalists use: from taperecorder to minidisc to iPod.
You could say that, but many still use happily the same devices. Yesterday for example I saw the old Sony walkman again twice.
You had your first live appearance quietly and secretly after 26 years in a pub in south London, under the alias Double G and The Traitorous 3. Others, if they had such a legendary status as Scritti Politti, would have booked a high profile comeback route. Why so?
It's simply because of the fact that to me the whole Scritti Politti thing is still somewhat unpleasant. Above all, concerning live gigs: I wasn't sure if I could do it, I wasn't sure, if it would work. Therefore the other name offered itself. I have to say that it's not perfect musically, since we are not so experienced yet, but it was fun. From there we will probably become Scritti Politti quite soon.
3 comments | Category: Interviews, Scritti Politti, White Bread, Black Beer
Scritti Politti way back in 1979
Blimey! That's 27 years ago, I was a 15 year old listening to The Police, Nina Hagen and The Specials. I didn't know Scritti Politti, or that they were playing live all over Europe. Roger Holmes had more sense and saw Scritti Politti play in The Okie Dokie. He even still has the poster!
He still remembers:
The gig was actually moved from The Ratinger Hoff in Dusseldorf old town to The Okie Dokie in Dusseldorf suburb Neuss on 09. april '79. (At The Rat, as we called it, I also saw bands like X.T.C., 999 and Wayne County before he became Jayne County).
Can't remember the set-list except the one with the german poet. It was afterall 27 yrs ago, and the set was pretty much improvised around loose themes like Skank Bloc and Spitalfields.
Green appeared very tall because of his enormous (black) hair. Pre-Cure/Bob Smith scruffiness.
Recall talking to dreadlocked-drummer Tom Morley wondering why Scritti were support to Red Crayola. Apparently they took turns at headlining.
4 comments | Category: Gigs, Scritti Politti
White Bread Black Beer artwork
Posted at 12am on 05/28/06	by Ellen
Some people were lucky enough to win a signed copy of White Bread Black Beer on Mark Radcliffe's show last tuesday, and Andrew James was one of them. He kindly let us show some artwork here on bibbly-o-tek.
That just looks great!
14 comments | Category: Scritti Packaging, Scritti Politti, White Bread, Black Beer
Reviews reviews reviews
We're rapidly approaching the release of the cd, and reviews are starting to show up more and more. This little bit caught my eye:
It's a spring thing, a blossoming thing, a journey through the valleys and across the peaks of the artist's own domestic landscape as he stops inverting the violent hierarchies of popular culture and comes to terms with more practical issues like the next glass of beer or the next loaf of bread. Sounds still rub and collide as frequently his syntax shifts, but with the dispersal of the clouds that masked his vision, and the recession of expectations comes a more satisfying sense of self. It's both a road to no regret and a record of his undoing. And it's all very, very beautifully unravelled.
from Crud Magazine
You can read another review on handbag, boomkat and an interview on intro.de, which i'm still translating to english.
If you find any other reviews we have missed, please add in the comments.
10 comments | Category: Review, Scritti Politti, White Bread, Black Beer
Exclusive Album Preview for WBBB
Posted at 2pm on 05/27/06	by Marco
Wow, really? Yes, it is :)
Thanks to John!
2 comments | Category: Scritti Politti
Collectism
Posted at 10pm on 05/26/06	by Marco
10 comments | Category: Albums, Scritti Packaging, Scritti Politti, Singles, Songs to Remember, White Bread, Black Beer
An article by Simon Reynolds in The Guardian today with a review on White Bread, Black Beer and an interview with Green.
The new album weaves together elements of everything Gartside has ever loved and revisits every stage of his nearly five decades-long journey through music. The Beatles are here, there and everywhere on the record; T. Rex and the Plastic Ono Band meld on the deliciously stompy anti-Jesus ditty After Six; Gartside's pre-punk passion for folk-rock and traditional English music is audible in his guitar playing; and there is hip-hop in the beats and R&B in the production's gloss.
We're quite chuffed bibbly-o-tek is linked at the bottom of the article!
3 comments | Category: Interviews, Review, White Bread, Black Beer
Live session on BBC Radio 2 with Mark Radcliffe
Posted at 9pm on 05/23/06	by Ellen
In an hour and a half Scritti Politti will play live on BBC Radio 2 in the Mark Radcliffe show. This time it's not only Green with a guitar, but the whole band. The newsletter from the Double G website says:
We're currently travelling up the M6 to Manchester. We'll be performing a few songs live on Mark Radcliffe's show on BBC Radio 2 tonight (that's Tuesday) at 10.30pm.
Watch this space for our capture of the event!
Session BBC Radio 2, Mark Radcliffe, part 1
Great session, lovely interview. Songs played are Snow In Sun, Robin Hood and Road To No Regret.
For those among you who – like us – want the songs:
Snow In Sun
Road To No Regret
4 comments | Category: Radio, Scritti Politti, White Bread, Black Beer
Green's handwriting?
4 comments | Category: Albums, Scritti Packaging, Scritti Politti, White Bread, Black Beer
Review White Bread, Black Beer
A positive review from The Observer on White Bread, Black Beer.
White Bread, Black Beer marks a welcome return to the more specific intellectual concerns of his earlier lyrics (but the subtly nutritious 'Cooking' boasts unexpected swearing), and a simultaneous rediscovery of the pure pop sensibility which made his later, more mainstream work so addictive.
3 comments | Category: Review, White Bread, Black Beer
Gary Crowley talks with Green
This evening on May 20th Green had an interview with Gary Crowley on BBC London radio. During the interview four songs were played from White Bread, Black Beer, The Boom Boom Bap, Snow In Sun, Dr. Abernathy and Road To No Regret. The interview itself wasn't really in depth, at least, i didn't hear any revelations. Apart from the little fact that Green went to see Brian Wilson play live. Seems now that the official release date for the album is May 29th. The single is due sometime in June.
BBC Gary Crowley interview (68 mb – 45 minutes)
2 comments | Category: Interviews, Radio, Scritti Politti, White Bread, Black Beer
Scritti Politti WBBB in US
Posted at 3pm on 05/19/06	by John
Nonesuch Records Announces Release of Scritti Politti's
First New Record in Seven Years, in Conjunction with UK's Rough Trade Records
White Bread Black Beer to be released in North America on July 25
"Simply ignoring the possibility of 1980s nostalgia, he instead unveils a talent as unclassifiable and as undimmed as ever."-The Independent (UK)
"In an era when any former pop star still breathing – and even some that aren't – is liable to make a comeback, the reappearance of Scritti Politti, one of the 80s' most influential bands, still has the power to startle."-The Guardian (UK)
"His best material since Cupid? Indisputably. His best album, ever? Looking more likely with every listen."-Simon Reynolds, author of the acclaimed post-punk history Rip It Up and Start Again
Nonesuch Records announces the July 25 release of the first new record in seven years from UK band Scritti Politti, which is helmed by singer/songwriter Green Gartside-White Bread Black Beer. (The album will be released in the UK May 29 by Rough Trade Records.)
Green Gartside formed Scritti Politti (an alteration of the Italian words for "political writings") in 1977 after being inspired by a Sex Pistols show. The band members, who lived in a communal squat in Camden, were not musically trained, but were devoted to studying Marxist theory and applying it to their art. They released only a few records in the late 70s before Gartside collapsed after a live show in 1980 with the Gang of Four (from a mixture of stage fright and other demons), seemingly ending his stage career, and, temporarily, his band.
He re-emerged in 1982 with Songs to Remember, Scritti Politti's first full-length album, which gave evidence of Gartside's increasing fascination with pop styles-especially the aching, beautiful single "The "Sweetest" Girl". That was followed by 1985's Cupid & Psyche 85, a landmark album that has inspired pop musicians for two decades since. Gartside's songs from that album topped the transatlantic charts with hits such as "Perfect Way" (covered by Miles Davis) and "Wood Beez", both of which also got heavy airplay on MTV. Davis admired Gartside's songwriting enough to play on the 1988 follow up to Cupid, Provision.
After a long silence, Gartside resurfaced in 1999 with the hip-hop infused Anomie & Bonhomie (released in the U.S. in 2000). Throughout this time, neither Gartside nor Scritti Politti performed live.
After 26 years, Gartside began performing again early this year, with a handful of sold out shows in the UK. In these small club dates, he has been unveiling songs from the new Scritti Politti record, White Bread Black Beer, which will be released by Nonesuch/Rough Trade in North America on July 25, 2006. Time Out London said,"Green's gorgeous, candy coloured voice still sounds exquisite." Scritti Politti's first-ever North American concert dates also are being planned.
1 comment | Category: Press release, Scritti Politti, White Bread, Black Beer
Release info from Rough Trade
Posted at 12pm on 05/19/06	by Ernst
Some specifics on the forthcoming releases ; the album is still due 05-06, the release of the single has been delayed until 12-06 or possibly even 19-06. The track list for WBBB remains a bit of a mystery, according to Rough Trade Holland the LP contains the same number of tracks as the CD. A quick look at web retailers learns that the LP is mostly being advertised as 13 tracks, while most displayed cd's contain 14 tracks. So what will happen to After Six ? We will keep you updated.
These are the catalogue details :
Scritti Politti White Bread, Black Beer
RTRADCD270 CD 5050159827022
RTRADLP270 LP 5050159827015
Scritti Politti Boom Boom Bap
RTRADSCD345 CDS 5050159834501
RTRADS345 7″ 5050159834570
7 comments | Category: Albums, Scritti Politti, Singles, The Boom Boom Bap, White Bread, Black Beer
A new rarity
Thanks to Michael Cleveland: a new rarity!
2 comments | Category: Rarities, Scritti Politti, Sitetalk
The Boom Boom Bap single
Interesting cover and the single also contains two new songs: 'Hands Up' & 'The Last Time I Looked'.
Can be pre-ordered, but only in sucky WMA format. Maybe DRM protected too. However… 2 new songs! So that makes 16 new Scritti songs which soon will be released!
1 comment | Category: Scritti Politti, Singles, The Boom Boom Bap
Pardon our Swedish
A longish article on a swedish website with some quotes of Green and a short history of Scritti Politti: Scritti Politti växlar spår på nytt. That sorta translates to: Scritti Politti alternates tracks again. Nice part is there is also a stream of Dr. Abernathy. The article also mentions two reasons for the title White Bread, Black Beer.
– when I played in with black musicians in New york could the sometimes to say about my inpass, "one man, thats so white bread". The meant that the lets widely, processed, homogeniserat homogenized. But I like the, Beach Boy's where my breast mother's milk. I might also consult that my melodies sometimes lets as child chants. I believe the comes from vacation era coat (soulig reggae). Lov era coat is as child chants for adult.
the title "White bread, black beer" reflects also my life in Hackney. For first past knows I a home feeling in the blocks where I building. I am depending on a soft, wide white breads as the Turkish baker on my street does. Opposite lies a pub where I on the evenings drinks  Guinness with neighbours and friends.
Our apologies for a clearly awful translation of the swedish test!
9 comments | Category: Interviews, White Bread, Black Beer
Free Moral Agent VS. The Word Girl (edit)
Bibbly recieved this intricate remix of The Word Girl from Free Moral Agent.
An explanation from Free Moral Agent:
I'll give you some clues on this mix as far as samples. All of the musical elements in this mix is derived from sounds from the song "The Word Girl", just manipulated in certain ways: The main keyboard sounds are sampled from the end of the song, before the piano ending: I also used the vocoder at the end also for more displacement of format from the original tune: The only instrument not directly from the song is the sub-bass and a patch I created with FabFilter. Guitar is sampled from the song as well.
4 comments | Category: Cupid & Psyche 85, Remixes
WBBB review in Word Magazine
Posted at 3pm on 05/14/06	by Ernst
A nice White Bread, Black Beer review in Word Magazine issue May 2006. Thanks to Enda P. Guinan for spotting it.
You can read the review after clicking on the thumbnails below.
1 comment | Category: Review, White Bread, Black Beer
Official press release Rough Trade
New Album "White Bread, Black Beer"
Released 5.6.2006
Scritti Politti aka Green Gartside releases his new album "White Bread, Black Beer" through Rough Trade Records on 5.6.2006. This is his first album in seven years and sees him returning to Rough Trade after being away since the early 1980's.
"Its an album of me playing around with myself in the back room" says Green "I want to convey the idea of just me alone at home. "
Forming in Leeds after seeing the Sex Pistols, Scritti became a Camden squat land collective, devouring Marxist critical theory and applying it to pop so remorselessly that after several landmark singles, they became too self – conscious to make it. Gartside re- emerged from this stasis and his 1980 collapse, as a genuine pop star. His talent was hinted at in the aching beauty of "The Sweetest Girl"– and full blown by "Cupid & Psyche 85" a landmark album that inspired black US pop, right up to Timbalands micro – sliced beats today.


text:
Turtle Creek Rail Trail
MattK
Thanks for the update, Paul. I can't be in Pittsburgh at the moment, but I've passed word of the meeting along…I hope good things will come of it.
If you or anyone here happens to go, please let us know if someone brings up the unused railroad track owned by the RIDC. As stated above, if that were turned into a bike path, one could ride from East Pittsburgh all the way to Wilmerding, right next to the creek, without crossing a single street with cars. There would be some unique viewing opportunities of the old Westinghouse flood gate as well.
Westinghouse Flood Gate
Also of interest for this meeting, would be a trail (similar in width etc. to existing trail at wilkinsburg portion of the busway) along an extension of the East Busway.
Also of interest would be the existing Airbrake Ave. walking trail, or an expansion/widening thereof.
Together with the old rail rights-of-way mentioned by @mattk and others on this thread, this can create a near-completely off road trail between the Point and Trafford.
Connections from such an off-road trail to bike lanes in adjacent municipalities, in particular Turtle Creek and Braddock who have already expressed interest in this, would provide a very useful connection, for both trail users and the municipal entities.
The off-road character would make this trail friendly and safe for anyone, including children, the elderly, those with physical disablilities, and those who just do not like riding on streets with motor traffic.
The on-road bike lanes and connections between those and an offroad trail would help provide business to the municipalities along the route, and would provide trail users with amenities.
See https://umap.openstreetmap.fr/en/map/pittsburgh-bike-connecting_44426#14/40.3969/-79.8110 for a map of these proposals.
This reply was modified 2 years, 5 months ago by abf.
Here are some interesting articles about the rail right-of-way the Westmoreland Heritage Trail follows, especially about the Export to Delmont sections.
paulheckbert
A synopsis of this evening's meeting of the five-boroughs'-bike-planning-group:
Attending were people from Braddock, North Braddock, East Pittsburgh, Rankin, Glenn Engineering, and me (Steel Valley Trail Council). Most of the others were "municipal government people" more than "cyclists" (if I'm forced to pigeonhole). Deborah Brown of Braddock led the meeting.
A request for proposals inviting engineering companies to bid on doing a feasibility study for bike lanes and trails in Braddock, North Braddock, East Pittsburgh, Turtle Creek, and Rankin was sent to 8 companies. Proposals are due at the end of this month, after which a company will be selected. The study will be completed by late summer.
We need to come up with a name; for now I'll call it "the group".
It appears to me that the group should rough out a few route ideas to give the engineers guidance. Surely, the borough folks know their boroughs better than the engineers. We tossed around some route ideas:
Braddock Ave is the spine route, for cars, but because taking away car parking was an extremely unpopular idea, the consensus was that a road parallel to and close to Braddock, such as Woodlawn St (and/or Talbot Ave) would work better for bike lanes. On the positive side, Woodlawn would be much safer than Braddock. On the negative side, Woodlawn is not the main street, so less business access.
B&O Railroad used to run parallel (where Halket St is today) but too much of that land has been sold off to permit a trail to be built along the old railroad land.
Parts of North Braddock and East Pittsburgh are way up the hill. Library St and Bell Ave were discussed, as was an abandoned and overgrown road called Keller Rd & Township Rd, as additional bike routes. To get from East Pittsburgh toward the borough of Turtle Creek, Linden Ave is the obvious route.
We didn't get around to talking about possible bike trails (as opposed to lanes).
We didn't talk about Rankin or Turtle Creek much.
Who would use the bike lanes? We might guess a 50-50 mix of commuters (to job, to shopping) and recreational cyclists.
We talked about nearby developments beyond the group: Rankin Hot Metal Bridge (perhaps 10 years off), Carrie Furnace Trail (several years off), Turtle Creek Trail Trail from Trafford-Murrysville (this year).
I suggested we do a casual bike ride along some of these routes soon, to inspect them, but that was met with some raised eyebrows, because some at the meeting haven't biked in years.
We'd like to gather ideas from people that bike through this area frequently, both locals and long-distance cyclists (such as Jon).
The next meeting is scheduled for Tue 3/7 at 6pm in East Pittsburgh. Others are invited.
jonawebb
Thanks, Paul. Your work on this and other issues in that area is a real and appreciated benefit to the biking community.
I sometimes ride home through Braddock on Braddock Ave. I rarely have any problem; the traffic is light and the road is fairly wide. But I see the benefit of using a parallel street for new cyclists. Looking at the map, it seems like Talbot is the better choice, since it's continuous through Braddock. I don't know about the surface, though.
icemanbb
I ride from Monroeville through Braddock using Braddock Ave. frequently but it's usually early on weekend mornings. Traffic is light, plenty of room and I've yet to have a problem. The couple of times I have ridden back through in the afternoons there is more traffic but still haven't had any issues. For me, a side street with stop signs every block is more of a nuisance then dealing with traffic and the less frequent red light. I know that only a fraction of cyclists use Strava but their "heat map" feature does provide some information (understanding that it may be biased towards recreational cycling) as to what roads are currently used.
cycleguy
I have to vehemently disagree with Icemanbb riding from Pittsburgh to Trafford on Braddock Ave.The road becomes extremely dangerous and dicey heading east when you get past State route 2183 with no lane and cars going past you at 50-60 mph!! I went on my own and had to turn around for fear of getting killed.I went a second time, with 3 other experienced road cyclists ,all of us having much angst and a very unpleasant ride.I tried getting off Braddock Ave,to go on 2183,but for some reason after going down that road a few hundred yards, it's fenced off and the road is blocked.Does anybody know the reason for this??
You're talking about where Braddock Ave turns into the Tri-Borough Expressway, right? There's a huge overbuilt concrete bridge and fast traffic. I don't like it either, but it's not that long, and I just go for it.
The only other way is to go up say Main St to Grandview, follow that around to Electric, then down Electric to the light at Braddock. Longer and hillier, and not necessarily that much nicer (the road is kind of narrow and IIRC there's not much shoulder), but at least you don't have really high speed traffic.
Yes Jonawebb,That's exactly where I am talking about,( heading towards the Tri-Borough Expressway).I came very close to getting killed there and I am an experienced road cyclist.Unless a sharrow with poles are put up, I will never go that way again.It's just not worth it by truly putting your life in danger
can't you just go Braddock -> Penn Ave Ext -> Airbrake -> Broadway and avoid the highway section?
There's a section under the Westinghouse Bridge that's closed off. I've tried to find a way around it, as have others. I don't think there's a way through, even if you're willing to go off-road and ignore no trespassing signs. There's a canal there that you end up on the wrong side of, and a rail yard.
BTW you can't get to Main St as I said; you'd have to go Braddock->O'Connell->Center I guess to Grandview.
To Edroline………No,you can't get to Penn Avenue extension before first hitting the sketchy,harrowing part of Tri Borough Expressway .
It would be great if Route 2183 could somehow be opened to cyclists, to bypass the dangerous part of Braddock Avenue. Perhaps it could be something like the Montour Trail's airport connector, with a small gate to let through cyclists and keep out cars. I'd much rather see local governments working on that, addressing an actual problem, instead of putting bike lanes on streets like Talbot that are already very safe for bikes.
Wasn't the Triboro Expressway just redone in 2010? My guess is that they're not going to be willing to do anything to help, given the recent re-construction of the road.
Maybe Paul Heckbert and others can talk to Deborah Brown about installing a small opening through that fence, on 2183, to just allow cyclists or walkers through.
The issue of "Route 2183", which appears to be called "Braddock Ave" on some maps, came up on page 1 of this thread and is being discussed again for good reason. This is the choke point for every trail in the entire Turtle Creek watershed. All of the trails that follow the streams in the watershed will converge here, and unless they can get beyond the Westinghouse floodgate, there is no path to the GAP trail, and no path to Pittsburgh. It is critically important. I agree that long "up over and around" alternate routes are very impractical to cyclists, and the section of the Tri Boro Expressway that goes through here is a death trap for cyclists and pedestrians.
So that leaves us with the route under the flood gate, which is fenced-off. The only thing apparently inside the fence is the dead-end "Railroad to Nowhere" track mentioned on page 2 of this thread. Here's a visual: https://binged.it/2lmaz The railroad goes through the gate, not much else does. There's no simple way around, since the gate is surrounded by a levee/flood wall, without which the flood gate would have always been useless (it's actually useless now, but that is due to neglect). The RIDC owns the Keystone commons and the apparently unused railroad. That appears to be the key to the pathway through.
So for a first step, I agree that contacting our elected officials about this issue is a good idea. They are the ones with the authority to negotiate agreements and make things happen. We have to reach out to them,and let them know what needs to be done in order to make the community a better place. Finding a safe bicycle path through the TBE / flood gate choke point should, in my opinion, be the highest priority of the whole bike lanes / trails project being discussed. Without this, all trails built east of the Westinghouse bridge will be cut off from all of the trails to the west of it. We need to let the people in charge know how important this is, since bike trails / bike lanes are so much more effective when they are connected to one another.
I roughed out a map of the current bikeability of the desirable bike routes in the Braddock area. I used
green = good (safe and acceptable grade)
yellow = ok
red = bad (unsafe, poor surface, or too steep)
unmarked = low-demand routes
Link for zoomable google map: https://goo.gl/X0XciF
This is a work in progress. I've biked some of these roads only once. Click each route for a bit of discussion. Where have I misclassified the safety or desirability of a route? What am I missing?
Braddock past say O'Connell should definitely not be red, or at least not as red as between Electric and O'Connell. I'd call it yellow. It's not too bad IMHO.
We discussed the route through Braddock last night at the Squirrel Hill Bike Ped group. It sounds like, from people who have been there, that there is plenty of presently unused space near the river. If the fence at the Braddock Lock had an opening, and appropriate arrangements were made with Edgar Thompson Works and the railroad, it would be possible to have a path all the way through Braddock to Turtle Creek.
I'm not sure whether or not this would be possible given the need for negotiations, but in the physical sense it seems like a lot less development would be necessary in that routing than trying to connect via Braddock Road and bypassing the Tri-Boro Expressway bridge somehow.
From satellite photos, I don't see space for a trail at the confluence of Turtle Creek and the Monongahela River. Here's a 3D Google Maps view of that area from the south
https://www.google.com/maps/@40.3874703,-79.8522204,188a,20y,0.53h,55.4t/data=!3m1!1e3?hl=en
On the road to Braddock lock & dam, you can get to within 1/2 mile of Turtle Creek before you hit a Keep Out sign, and from google it looks like that road dead-ends 1/4 mile from the creek, and the strip of land gets pinched down to nothing. Following Turtle Creek upstream, the railroad tracks around the perimeter of Edgar Thomson go right up to the steep banks of the creek. I don't see space for a trail here.
I think the best bet for an economical route into Turtle Creek Valley is Braddock Ave and Route 2183. I've never biked on the latter, but I see a fence across it in Google StreetView. Other than that fence, 2183 looks promising to me, as a bike route.
https://goo.gl/maps/7hkrRLUn5rJ2
I see your point; I don't see how the connection to Turtle Creek is supposed to work otherwise. Though I'm pretty sure I'm remembering the conversation correctly.
After looking at the aerial view some more, I'm not sure 2183 will work. It runs from Braddock Avenue to a dead-end at some railroad tracks. MattK seemed to be suggesting upthread that this track was unused, but I'm no longer convinced that's true of the section in question.
There's a railcar visible in Bing here. It's not visible in Google's aerial view, but railcars appear in different spots on that track if you look back over the years in Google Earth. The track there continues northward to the unused section. Southward, it continues through the floodgate and past the place where 2183 dead-ends, to a big railyard.
So I think 2183 dead-ends at a railroad line that gets at least occasional traffic, connecting the former Westinghouse site (now called Keystone Commons) to the railyard west of the 2183/Braddock Avenue intersection. I don't know how you'd fit a trail in there if the rail line's still in use.
Good Catch, Steven. I didn't see that before. perhaps some of the track is being used…
Here's the exact quote, from Paul Van Osdol's report on WTAE:
"TURTLE CREEK, Pa. —It's a railroad to nowhere, financed by taxpayers.
Action News Investigates has learned Allegheny County is spending $365,000 replacing a railroad track that has not been used in three decades and will not be used anytime soon.
The new track will run about a quarter-mile between two sections of unused track.
A local historian says no trains have run on this line since the 1980s when the nearby Westinghouse plant was still active."
Is it possible that the upstream part of the track is unused, and the downstream active? If the downstream is active, how active is it? Whom do we ask about this? Would a "rail and trail" a possibility? Is the path through the floodgate and under the bridge wide enough for bikes and a train at the same time? If hypothetically we have to worry about a delivery train arriving once a month at 5mph, that is one issue to deal with. But I'd rather deal with than than constant 50mph cars on the Tri Boro Expressway.
Re the floodgate. I know it doesn't work anymore. But does that area still flood a lot?
BTW, I don't think this solves the problem, but I once followed a Heckbertish (i.e., illegal) route bypassing this section of the Tri-Boro Expressway. I made a map of the route here.
The route starts at the parking lot next to Edgar Thompson works. I bicycled past there (heading west) one day and noticed they were having some sort of event. The gate there was open and a bunch of cars were parked in there. I entered and headed east through the lot, following the path I drew in on the map. It crosses 2183 and the dirt roads (at that point) marked as Flynn Way and Main St. Then passes under one railway bridge and across another railway bridge over Turtle Creek. You end up opposite "Value Added Processing" across Turtle Creek.
I suspect this path is less viable than the one through the closed Westinghouse Flood Gate fence because the railroad bridge across Turtle Creek is in use. And you end up in what I think is an active rail yard. I don't think there's a way out of there except by following Turtle Creek up to 2nd St.
But still, it's at least a physically connected path, given the open gate at Edgar Thompson works.
The triboro expressway reminds me of Freeport road between Hulton bridge and powers run. Way overbuilt for the capacity. I assume traffic on triboro expressway doesn't need highway standards.
Too bad when they rebuilt it they didn't make it into 1 lane each way, a road diet.
Any sense that the local pols could push through changing the road config for the expressway to one lane plus peds/bike each way?
Define "a lot". I would go down there after a one-inch-in-24-hours rain to see what routine high water looks like. We probably get 10 of those a year. But make sure to get down there to look at it after a really big storm.
Two flood gauges you can see online:
Thompson Run at Turtle Creek
Turtle Creek at Wilmerding
The railroad bridge over Turtle Creek on that Heckbertish route seems to be the one documented here. That mentions it once carried five tracks, but now only two. Seems like all that extra space might be usable for a bike trail, if it only went somewhere useful.
The detailed photos linked from that same page mention this in a photo caption:
Floodgates would also close former Braddock Av with street railway and Westinghouse Inter-Works Railway
The Westinghouse Inter-Works Railway seems to be the name of the abandoned line that continued from the Westinghouse plant out to Trafford.
The site also mentions that Mon-Fayette Expressway construction would remove the floodgates. The MFX could have a big influence on the available options for a bike path, if they build it through this area. (And not necessarily all negative. The MFX folks supposedly built a part of the Montour Trail that was near the new highway.)
If the downstream is active, how active is it? Whom do we ask about this?
Maybe the RIDC?
Let's try that again, this time with links and formatting not discarded.
Heckbertish, eh?
I think we're putting together some good ideas here. It's neat that online maps and photos enable us to do so without going out in the cold :)
The Westinghouse Floodgates measure 80×30′ (over the creek) and 40×20′ (over RT 2183 + the dead-end RR). The loading gauge for an American freight train is 10'8″. If my math is right, a 10'8″ train in the center of a 40′ wide flood gate leaves 14'2″ on each side for bikes to pass, which is plenty of room. The Heckbertish Railroad bridge cited above causes another narrow point due its supports, but it appears from the photo to be about as wide as the flood gate. So I'm optimistic that a trail could proceed through, even if it needs to share space with the (possibly) inactive railroad. It would however be better for us to replace the whole RR with a trail, since it would allow safe cycling from the Braddock steel mill to the Airbrake Walking Trail in Wilmerding without encountering a single stop sign.
As of August 2016, the Mon-Fayette Expressway is no longer headed into the city. The north-south portion, however, is still in the works. The overpass in Turtle Creek, ironically, will be over the same railroad-to-nowhere section that was recently rebuilt when the new Greensburg Pike bridge was built over it. I wonder if they'll have to rebuild the unused track again…
Pick up a copy of the 2/9 issue of the Valley Mirror newspaper (available at Giant Eagle in Edgewood Towne Centre, anyway, and at a number of other shops in Braddock, etc, undoubtedly) and you'll see an article by reporter Kristen Keleschenyi. It discusses the five-borough effort, and also includes the map I created of proposed trails on the right bank (the Braddock-and-Rankin side) of the Mon. The newspaper is not online.
Article that appeared in Thursday, February 9's Valley Mirror (newspaper "serving the Steel Valley, West Mifflin, Lincoln Place, and Woodland Hills Communities of Braddock, Braddock Hills, Chalfant, Churchill, East Pittsburgh, Forest Hills, North Braddock, Rankin, Swissvale, Turtle Creek, and Wilkins Township"):
The article text is about the five-boroughs effort discussed earlier, mostly, but the pictures came from my related effort to promote a trail from Hazelwood to Braddock. Click pictures for more detail.
Back in the early 1990s when the Turtle Creek Industrial Railroad was still running, Port Authority had a plan to extend the East Busway out to Trafford. (From 1983 to 2004, it ended at Wilkinsburg.) That part of the project did not happen; the extension that did get built only went to the edge of Rankin. I had only recently gotten involved in transit advocacy, and was not thinking about this part of the proposal. It would be worth trying to dig up those plans to see how they proposed to fit a busway through that notch.
This page from the SPC describes a 2003 plan:
East Busway Extension: Swissvale to East Pittsburgh or Monroeville
Extension of the East Busway along Norfolk Southern right-of-way to East Pittsburgh, with the possibility of using Tri-Boro or Mon-Fayette Expressway into Monroeville.
I didn't find anything more detailed than that. Norfolk Southern crosses on that bridge that once held five tracks but now has just two.
Turtle Creek isn't very wide, only about 80 feet for the creek itself. If we could build a bridge there, we could use something like Jon's route. Unfortunately, it goes on the wrong side of those active Norfolk Southern tracks. We'd need to be between those tracks and Turtle Creek for a bridge to work.
Here's another possible route. It starts with Route 2183. Then it uses an existing at-grade crossing of Norfolk Southern tracks, but one that's blocked off with Road Closed signs according to Google Street View. If that's still closed, it would need to be reopened for this route to work.
Then it uses space where Norfolk Southern once had a track to cross Turtle Creek and follow the creek up a bit, to a new 135 foot bridge to be built back across the creek, theoretically bypassing the section of former Westinghouse Inter-Works Railway that it appears is still in use. (I'm guessing about exactly which part is still active, of course.)
There's also an interesting abandoned single-track bridge running diagonally across Turtle Creek just a couple hundred yards downstream of the floodgate. We've already seen in Murrysville how amazingly quickly those bridges can get a new deck put on them when volunteers come together. That would be a way to the left bank that doesn't use the active NS bridge.
The issue is that the tracks on the left bank are very active. Freight trains run into and through the Pitcairn intermodal terminal at seemingly all hours day and night. The Amtrak Pennsylvanian also runs passenger service on those tracks once daily to and from New York City via Philadelphia and Harrisburg. You can see in this video just how tight the tracks are to the water in this area. Anyone interested in seeing where the old Turtle Creek Industrial Railroad used to merge into the tracks see the earlier video in the series at about 14:22. Both of these videos put together give a pretty clear picture of what is going on over on the left bank of the creek.
If the Turtle Creek Trail needs volunteers. now or in the future, to help build the trail,I will be happy to volunteer!!
I visited Westinghouse Flood Gate yesterday. Wow, we need a bike trail through here – it's a very unique place! It's easier to reach from the east than from the west, because of the locked gate that others described. Route 2183 (which seems to be the Old Braddock Ave) has rusty rails down the middle of it. One could bike along here now, but if the rails were removed or buried, that would make this old road much better. If we and the boroughs can convince US Steel to put a 3 foot wide door in their gate, Route 2183 could become a bike route; possibly a life-saving one, since it would get cyclists off most of the divided highway portion of Braddock Ave.
Updated Braddock Bike Routes map: https://goo.gl/X0XciF
I put a gallery of photographs here: https://goo.gl/photos/2ALH2g3nrxN7yzNcA
One sample photo:


text:
Dailey, Gillum, Common among graduation speakers at FSU, FAMU and TCC
Tallahassee Mayor John Dailey is the man in the demand for graduation ceremonies at Florida State and Tallahassee Community College this week.
Dailey, Gillum, Common among graduation speakers at FSU, FAMU and TCC Tallahassee Mayor John Dailey is the man in the demand for graduation ceremonies at Florida State and Tallahassee Community College this week. Check out this story on tallahassee.com: https://www.tallahassee.com/story/news/2019/04/30/dailey-gillum-common-among-graduation-speakers-fsu-famu-and-tcc/3621167002/
Byron Dobson, Tallahassee Democrat Published 2:38 p.m. ET April 30, 2019 | Updated 8:41 a.m. ET May 1, 2019
Tallahassee Mayor John Dailey will speak at commencement ceremonies at Florida State and Tallahassee Community College. (Photo: Special to the Democrat)
Tallahassee Mayor John Dailey is the man in demand for graduation ceremonies at Florida State and Tallahassee Community College this week.
Meanwhile, graduates at Florida A&M University will hear from three speakers: rapper and actor Common; former Tallahassee Mayor and Democratic gubernatorial candidate Andrew Gillum and music industry attorney Nicole Wyskoarko.
Dailey will be one of three speakers delivering keynote addresses for Florida State University's four graduation ceremonies Friday and Saturday. He also addresses TCC's graduation on Saturday.
FSU will award degrees to more than 6,500 graduates: 5,416 bachelor's degrees, 918 master's degrees and 225 doctorates.
Dailey, who earned his bachelor's and one of his master's degree from FSU and served as Student Government Association president, will address graduates of the colleges of Arts and Sciences, Motion Picture Arts and Social Work at 2 p.m. Friday.
At 7:30 p.m. Friday, John W. Thiel, a business consultant and member of the FSU Foundation Board of Trustees, will speak to graduates of the colleges of Business and Fine Arts, the Jim Moran School of Entrepreneurship and the Dedman School of Hospitality.
Thiel earned a bachelor's degree in accounting from FSU and worked in wealth management for much of his career with Merrill Lynch.
On Saturday, FSU Foundation Board of Trustees Chair and businessman David Lane will deliver the commencement addresses at 9 a.m. and again at 2 p.m. Lane earned a bachelor's degree in biology from FSU.
He will be addressing graduates in the colleges of Applied Studies, Criminology and Criminal Justice, Engineering, Nursing, Social Sciences and Public Policy, Communication and Information, Education, Human Sciences, Music, Medicine and The Graduate School.
Lane is president and chief operating officer of Terlato Wines based in Lake Bluff, Illinois.
Florida State will livestream the May 3-4 commencement ceremonies on the web at www.learningforlife.fsu.edu/fsu-graduation/ for webcast links.
Former Tallahassee Mayor and 2018 Florida Democratic gubernatorial candidate Andrew Gillum, will address graduates at Florida A&M University on Friday. (Photo: Tori Schneider/Tallahassee Democrat)
At Florida A&M University, more than 1,200 graduates will cross the stage in three ceremonies.
Gillum will deliver the commencement address at 6 p.m. Friday in the Lawson Center.
Gillum, the 2018 Florida Democratic gubernatorial candidate, will address graduates from the College of Agriculture and Food Sciences, College of Education, School of Allied Health Sciences, School of Business and Industry, and the School of Journalism & Graphic Communication.
In 2003, the former FAMU Student Government Association president was a political science student when he was elected to the Tallahassee City Commission at 23, making him the youngest commissioner in the city's history.
A CNN political commentator, Gillum launched the "Bring It Home Florida" voter registration initiative in March.
Music and film star Common will be addressing graduates Saturday morning at Florida A&M University. (Photo: Special to the Democrat)
Common, who studied business administration at FAMU, will speak at 9 a.m. Saturday to graduates of the College of Science and Technology, College of Social Sciences, Arts and Humanities and School of the Environment.
Common, who has earned Emmy and Grammy awards, has appeared in films such as "Selma," "Barbershop," "John Wick 2," and "The Hate U Give."
At 2 p.m. Saturday, Wyskoarko will address graduates from the FAMU-FSU College of Engineering, College of Law, College of Pharmacy and Pharmaceutical Sciences, the School Architecture and Engineering Technology and the School of Nursing.
Wyskoarko is executive vice president of urban operations for Interscope Records. Prior to joining Interscope, the Brooklyn Law School graduate was a partner with Carroll, Guido & Groffman, LLP.
She also has served as senior vice president at Universal Music Group and worked with East Coast labels (Island, Def Jam, and Republic).
Tallahassee Community College
Tallahassee Community College commencement ceremony will be held at 7:30 p.m. Saturday at the Tucker Civic Center.
Dailey enrolled at FSU after graduating from high school but decided to make the switch to TCC after a few semesters. After two semesters, he earned his Associate in Arts degree and was back at Florida State to earn his bachelor's degree.
Students eligible to participate in the ceremony are Summer 2018 graduates, Fall 2018 graduates and anticipated Spring 2019 graduates. Graduation will be streamed live on TCC's YouTube channel (YourTCC22) starting at 7 p.m. Saturday.
Here is the link to the channel: https://www.youtube.com/channel/UCE1pCgmE0ftQntp1tdzwZ4g?view_as=subscriber
Contact senior writer Byron Dobson at bdobson@tallahassee.com or on Twitter @byrondobson.
Want to get an all access pass to the latest tallahassee.com news, analysis, commentary, photos and video?
Become a digital subscriber to support our investigative journalism.
Other FSU ceremonies include:
The College of Nursing will hold its pinning ceremony at 6 p.m. Friday, in Ruby Diamond Concert Hall. College of Nursing alumna Mia Newlin and Dean Judith McFetridge-Durdle will be the guest speakers.
Army ROTC will commission 27 cadets during a ceremony at 5:30 p.m. Saturday in the Oglesby Union State Ballroom.
The guest speaker will be former FSU football coach Bobby Bowden.
Air Force ROTC will commission 24 cadets during a ceremony at 6 p.m. Saturday in Opperman Music Hall, Kuersteiner Music Building. The guest speaker will be Brigadier General Claude K. Tudor, Commander of the 24th Special Operations Wing at Hurlburt Field.
The College of Law will hold its graduation ceremony at 11 a.m. Sunday, May 5, at the Tucker Civic Center. Florida Supreme Court Justice Ricky Polston, a 1987 graduate of the FSU College of Law, will give the keynote address.
FSU Panama City will hold its commencement ceremony at 1:30 p.m. CDT Sunday, May 5, at the Edgewater Beach Resort Conference Center in Panama City Beach. FSU Provost Sally McRorie and FSU Panama City Dean Randy Hanna will preside.
The College of Medicine will hold its commencement ceremony at 10 a.m. Saturday, May 18, in Ruby Diamond Concert Hall. Dr. Michael Muszynski, dean of the college's Orlando Regional Campus and associate dean for clinical research, is speaker.
Read or Share this story: https://www.tallahassee.com/story/news/2019/04/30/dailey-gillum-common-among-graduation-speakers-fsu-famu-and-tcc/3621167002/


My Chinese-American fiancé and I were friends and dance partners for a long time before we got romantically involved. We spent a ton of time together at airports and hotels, not to mention the dance floor. We got to know each other very well.
There are tremendous benefits to being friends (without benefits!) before dating. You know if your friend is a cheater, an addict, or a guy with a lot of different girlfriends you never see more than once. These behaviors don't just show up six months into a relationship. If you think the friend turned boyfriend was awesome before and just became evil because you began dating, start eyeing your neighbors. Because you're the clueless random acquaintance on the 6 o'clock news, that invariably protests, "But he was such a nice guy!" after the police find body parts in Mr. Nice Guy's freezer.
For everyone with an ounce of observational skills, however, having a friend turned boyfriend is a bonus. All the little unknowns you agonize over when you first date a guy are no longer unknown. Like "Why isn't he texting back?!" Another woman might have figured Andy wasn't into her when he didn't answer calls or texts for hours, or even days. But I already knew the man turns in his phone at the door in his Top Secret Place of Employment. I also knew he subconsciously hates the phone/leash and "forgets" to turn it back on when he leaves the Top Secret Place of Employment. It makes me nuts, but I know it's not personal.
I already knew the man drove like a maniac, and thus I did not automatically assume he had rage issues or a death wish the first time we went on a date.
For his part, Andy already knew I had a phobia of marriage. He knew I had a temper. And he knew I was ambivalent about kids. So he took none of those issues personally.
When Andy and I finally went out of our first real date, I spent hours on my hair. Yeah, literally hours – my hair dryer broke in the middle of styling and I had to run out and buy a new one. I put on makeup, wore heels, and dressed in the perfect little black miniskirt.
Awww C'mon, take the compliment!! You made the effort, and he who does not give untrue compliments took the moment to acknowledge your effort. Good for him!! Beautiful!!
That's true. But surgery is a little freaky, too.
I think your theory makes sense: dating someone that has been a friend for a long period of time is a safe(r) bet.
Unless you have a best friend who is childish, not too smart, kinda ugly and thinks everything in life is a joke. Let's say you ignore all these red flags and at fall in love with him anyway and he likes you but HE IS NOT SURE. Let's say for over two years you keep getting together and breaking up because he does not know what he feels for you. Let's say this obviously breaks you heart every single time because you are crazy in love and frankly a little obsessed with this guy. Only few years later I realized it was a matter of pride for me, I couldn't accept someone like him was just not into me.
In this specific case knowing the person well wasn't useful because I was stupid enough to think he would grow up for me. How lame. Thanks God I met Mr. B shortly afterwards.
Wow, that sounds excruciating! Yes, sometimes unavailable is terribly, terribly attractive.
I ended up but my girlfriend's boyfriend (several years after they were done) and that was good. I knew exactly how he treated women! Even my crazy, self-absorbed girlfriend.
Nope. Even though she was married to someone else for many years, she was angry because I hooked up with her old boyfriend. Anyone she had ever dated was off limits. She hasn't talked to me in 20 years and we were besties.
That's just wrong. I mean, if you cared about someone at all, wouldn't you want them to be happy? Even if it was with someone else? Too bad. When I heard that my ex Ethan, the one before Andy, was getting married, I was happy for him. But he, apparently, can never stand to hear about Andy and me.
I think it smacks of unresolved issues!
I am sure you look beautiful with or without makeup, with or without nice fancy dress. Honesty is the best policy, and it sounds like Andy knows that. Something that every relationship needs, no hiding and just being comfortable with everything out in the open – which comes with knowing each other well in the first place.
Oh. Bad, bad exboyfriend. No wonder he's an EX!
I totally agree about the benefits of being friends (without benefits!) before you date. My fiance and I were flatmates – I didn't like him at all when I first met him but we became friends over the months and then eventually got together. I agree it got rid of a lot of the crap that comes with dating – there was no pressure when we were getting to know each other as we didn't intend on getting together which meant we just let it all hang out and saw each other all the time at our daggiest. Now years later we have lived together, worked together, travelled together and we always have that strong friendship basis to fall back on that means we can hang out like mates as easily as make out. I think it's rare to successfully transition a friendship to a relationship but I am not really sure why… Some guys have even asked my fiance "how" he went from flatmate to fiance like there is some kind of secret ability to doing this and he plays it all mysterious but really I think it's pretty straightforward!


text:
Can incoming Discourse email support replace old ticket portals?
mrcasa (Mr. Casa) May 2, 2016, 1:25pm #1
I'm a discourse newbie and this is a feature that will help replace our ageing ticket portal. Are there priorities that cab assigned to topics like in the ticketing systems?
How to Use Discourse as a Private Support/Ticket System
Configuring Reply via Email :e-mail:
steko (Stefano Costa) January 17, 2019, 7:47am #2
Have you looked at this topic:
Discourse as a private email support portal feature
Purpose We would like to set it up so Discourse can act as a private email support portal for a team. In this mode a single email address will be mapped to a category, all incoming mail will create new messages in that category that can be viewed by all the users with permission on the category. Users will be automatically provisioned as emails come in. Advantages over central email box Historically we have used a central email box for our team "support" this has proven to have quite a few draw…
I don't think there is a native way of attaching priorities to topics (in your case, tickets) but it could be easily implemented using the official tags feature.
system (system) automatically bumped January 13, 2019, 11:59pm #3
system (system) closed February 12, 2019, 11:59pm #4


we get a different I. Can you please tell where am I going wrong.
Consider A = I + b/2 – 1 => 128 = I + 16 – 1 => I = 113….now if we want point in the interior and on the boundary, that is I + b = 113 + 32 = 145 as above.
This is why I am a little wary of direct formulae – you have to be doubly careful to ensure you are applying them correctly and if you go wrong there is no indication…but in a logical (though slightly slower) approach, accuracy is more likely for someone like me.
yes. I missed that. true about that formulae and approach thing. You can never be sure with the formulae. I just wanted to see its application. Thanks a lot.
for |x| + |y| = n,this implies no. of pts will be given by 2*sum of AP – (n+1),AP will be 1,3,…upto n+1 terms..k?
Can we use the formula for |a| + |b| <= r as (n+r-1)C(r-1) using the same logic you mentioned in this post.
2 rectangular hyperbolas given by xy=8 and xy=-8 matlab each quadrant mein u'll have 1/x kinda curve..right sir?
Sir, first of all, your blogs are very insightul. I get to learn a lot. Thank you!
I 'm not understanding the solution to number of integer points on or within |x|+|y|=8. Please help! Thank you!
Parveen, I am just saying that x cannot go beyond the range of [-8, +8]. Plugging in the values of x, and finding what are the possible values of y corresponding to each x, we can quickly establish a pattern and count. Try listing them out manually for a smaller case first (say |x| + |y| <= 3, which should give you around 25 points I guess) and you will get a feel for the pattern of the problem.
I get it sir..Thank you!
I didn't need to draw the graph to that level of accuracy 🙂 I drew a precise graph only to illustrate the pattern; once you are comfortable with the behaviour of such a mod function you don't even need to draw the graph in many cases! See the next few posts and try and create a few questions of your own; you will get the hang of it soon enough.
You calculated the integer points by pattern. Will there be a case where there is no pattern and it that case how should we proceed?
Not impossible, but unlikely. In that case, you will have to consider all the values of x individually, which will require about twice as much effort, but is still doable.
solving I get 28+4(1+2+4+… +7) +1 =29+112=141 can you tell me where am I going wrong ?


Safari TV, the cardboard iPad Stand, is a perfect addition to home or office; a beautiful modern design that make a great gift.
Slide your iPad into the stand and display your favorite shows, movies, videos, and photographs. Makes a great display in the kitchen for your treasured online recipes.
Stand design allows access to Home button, FaceTime camera, USB connector, headphone jack, and volume control.
Compatible with iPad, iPad Air, and iPad Air 2.
Each stand is made of recycled cardboard, a non-toxic, environmentally friendly material. Laser-cut for precision fit and easy assembly using slot construction.
Detailed instructions included. Skill Level: Beginner.
IMPORTANT: NOT A TOY, NOT INTENDED FOR USE BY CHILDREN UNDER AGE OF 14. Flammable, keep away from open flames and hot lights. Edges are sharp, handle with care.


text:
Japanska F3-mästerskapet 2008 kördes över 18 omgångar. Mästare blev Carlo van Dam.

Delsegrare

Slutställning

2008 i Japan
Japanska F3-säsonger
Motorsportevenemang 2008

redpajama_set_name: RedPajamaWikipedia