text:
// ***********************************************************************
// Assembly         : TessellationAndVoxelizationGeometryLibrary
// Author           : Design Engineering Lab
// Created          : 02-27-2015
//
// Last Modified By : Matt Campbell
// Last Modified On : 02-15-2015
// ***********************************************************************
// <copyright file="MinimumBoundingBox.cs" company="Design Engineering Lab">
//     Copyright ©  2014
// </copyright>
// <summary></summary>
// ***********************************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using TVGL.Numerics;
using TVGL.Enclosure_Operations;

namespace TVGL
{
    /// <summary>
    ///     The MinimumEnclosure class includes static functions for defining smallest enclosures for a
    ///     tessellated solid. For example: convex hull, minimum bounding box, or minimum bounding sphere.
    /// </summary>
    public static partial class MinimumEnclosure
    {
        /// <summary>
        ///     Finds the minimum bounding box oriented along a particular Direction.
        /// </summary>
        /// <param name="ts">The ts.</param>
        /// <param name="times"></param>
        /// <param name="volumes"></param>
        /// <returns>BoundingBox.</returns>
        //private
        public static BoundingBox OrientedBoundingBox_Test(TessellatedSolid ts, out List<double> times,
            out List<double> volumes) //, out List<List<Vector2>> volumeData2)
        {
            var vertices = ts.ConvexHull.Vertices.Any() ? ts.ConvexHull.Vertices : ts.Vertices;
            times = new List<double>();
            volumes = new List<double>();
            //var flats = ListFunctions.Flats(ts.Faces.ToList());
            var now = DateTime.Now;
            Message.output("Beginning OBB Test", 2);
            var boundingBox1 = OrientedBoundingBox(vertices);
            times.Add((DateTime.Now - now).TotalMilliseconds);
            volumes.Add(boundingBox1.Volume);
            //Message.output("Time Elapsed for PCA Approach = " ,4);
            //Message.output("Volume for PCA Approach= " + boundingBox1.Volume,4);
            now = DateTime.Now;
            var boundingBox2 = Find_via_ChanTan_AABB_Approach(vertices);
            times.Add((DateTime.Now - now).TotalMilliseconds);
            volumes.Add(boundingBox2.Volume);
            Message.output("Time Elapsed for ChanTan Approach = " + (DateTime.Now - now), 4);
            Message.output("Volume for ChanTan Approach = " + boundingBox2.Volume, 4);
            //now = DateTime.Now;
            //Message.output("Beginning OBB Test");
            //var boundingBox1 = Find_via_MC_ApproachOne(ts, out volumeData1);
            //Message.output("Time Elapsed for MC Approach One = " + (DateTime.Now - now),4);
            //now = DateTime.Now;
            //var boundingBox2 = Find_via_BM_ApproachTwo(ts, out volumeData2);
            //Message.output("Time Elapsed for BM Approach Two = " + (DateTime.Now - now),4);

            return boundingBox2;
        }

        private static BoundingBox Find_via_ChanTan_AABB_Approach(IList<Vertex> convexHullVertices)
        {
            return Find_via_ChanTan_AABB_Approach(convexHullVertices, new BoundingBox(
                new Vector3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity),
                new[] { Vector3.UnitX, Vector3.UnitY, Vector3.UnitZ },
                new Vector3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)));
        }

        private class BoundingBoxData
        {
            private BoundingBoxData()
            {
            }

            internal BoundingBoxData(Vector3 startDir, Vector3 yDir, Edge rotatorEdge, Vector3 rotatorVector,
                TVGLConvexHull convexHull)
            {
                Direction = startDir;
                PosYDir = yDir;
                RotatorEdge = rotatorEdge;
                RotatorVector = rotatorVector;
                OrthGaussSphereArcs = new List<GaussSphereArc>();
                // make arrays of the Dots with start and end directions (x-values) to help subsequent
                // foreach loop which will look up faces multiple times.
                var startingDots = new double[convexHull.Faces.Length];
                for (var i = 0; i < convexHull.Faces.Length; i++)
                {
                    var face = convexHull.Faces[i];
                    face.IndexInList = i;
                    startingDots[i] = face.Normal.Dot(startDir);
                }
                foreach (var edge in convexHull.Edges)
                {
                    var ownedX = startingDots[edge.OwnedFace.IndexInList];
                    var otherX = startingDots[edge.OtherFace.IndexInList];
                    if (otherX * ownedX <= 0)
                    {
                        var ownedY = edge.OwnedFace.Normal.Dot(yDir);
                        var otherY = edge.OtherFace.Normal.Dot(yDir);
                        //if ((ownedX < 0 && ownedY > 0) || (ownedX > 0 && ownedY < 0))
                        //    OrthGaussSphereArcs.Add(new GaussSphereArc(edge, edge.OwnedFace));
                        //else if ((otherX < 0 && otherY > 0) || (otherX > 0 && otherY < 0))
                        //    OrthGaussSphereArcs.Add(new GaussSphereArc(edge, edge.OtherFace));
                        if ((ownedX <= 0 && ownedY > 0) || (ownedX >= 0 && ownedY < 0))
                            OrthGaussSphereArcs.Add(new GaussSphereArc(edge, edge.OwnedFace));
                        else if ((otherX <= 0 && otherY > 0) || (otherX >= 0 && otherY < 0))
                            OrthGaussSphereArcs.Add(new GaussSphereArc(edge, edge.OtherFace));
                    }
                }
                OrthVertices =
                    OrthGaussSphereArcs.SelectMany(arc => new[] { arc.Edge.From, arc.Edge.To }).Distinct().ToList();
                var maxDistance = double.NegativeInfinity;
                foreach (var v in convexHull.Vertices)
                {
                    var distance = rotatorEdge.From.Coordinates.Subtract(v.Coordinates).Dot(startDir);
                    if (distance > maxDistance)
                    {
                        maxDistance = distance;
                        BackVertex = v;
                    }
                }
            }

            public BoundingBox Box { get; set; }
            public Vector3 Direction { get; set; }
            public double Angle { get; set; }
            public List<Vertex> OrthVertices { get; private set; }
            public List<GaussSphereArc> OrthGaussSphereArcs { get; private set; }
            public Vertex BackVertex { get; set; }
            public Edge BackEdge { get; set; }
            public Vector3 PosYDir { get; set; }
            public Vector3 RotatorVector { get; private set; }
            public Edge RotatorEdge { get; private set; }

            public BoundingBoxData Copy()
            {
                return new BoundingBoxData
                {
                    Angle = Angle,
                    BackVertex = BackVertex,
                    BackEdge = BackEdge,
                    Box = Box.Copy(),
                    Direction = Direction,
                    OrthGaussSphereArcs = new List<GaussSphereArc>(OrthGaussSphereArcs),
                    OrthVertices = new List<Vertex>(OrthVertices),
                    PosYDir = PosYDir,
                    RotatorVector = RotatorVector,
                    RotatorEdge = RotatorEdge
                };
            }
        }

        #region MC ApproachOne

        /// <summary>
        ///     The MC_ApproachOne rotates around each edge of the convex hull between the owned and
        ///     other faces. In this way, it guarantees a much more optimal solution than the flat
        ///     with face algorithm, but is, therefore, slower.
        /// </summary>
        /// <timeDomain>
        ///     Since the computation cost for each Bounding Box is linear O(n),
        ///     and the approximate worse case number of normals considered is n*PI/maxDeltaAngle,
        ///     Lower Bound O(n^2). Upper Bound O(n^(2)*PI/maxDeltaAngle). [ex.  upper bound is O(36*n^2) when MaxDeltaAngle = 5
        ///     degrees.]
        /// </timeDomain>
        /// <accuracy>
        ///     Garantees the optimial orientation is within maxDeltaAngle error.
        /// </accuracy>
        private static BoundingBox OrientedBoundingBox(TVGLConvexHull convexHull)
        {
            var minBox = new BoundingBox(
                new Vector3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity),
                new[] { Vector3.UnitX, Vector3.UnitY, Vector3.UnitZ },
                new Vector3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity));
            foreach (var rotateEdge in convexHull.Edges)
            {
                #region Initialize variables

                //Initialize variables
                //rotatorVector is basically the edge in question - the vector that is being rotated about
                var rotatorVector = rotateEdge.Vector.Normalize();
                // startDir is the starting Direction - based on the OtherFace
                var startDir = rotateEdge.OtherFace.Normal;
                // endDir is the OwnedFace final Direction - we go from Other to Owned since in order to be about
                // the positive Direction of the rotatorVector
                var endDir = rotateEdge.OwnedFace.Normal;
                // posYDir is the vector for the positive y-Direction. Well, this is a simplification of the
                //gauss sphere to a 2D circle. The Direction (such as startDir) represents the x-axis and this
                //, which is the orthogonal is the y Direction
                var origPosYDir = rotatorVector.Cross(startDir).Normalize();
                var totalAngle = Math.PI - rotateEdge.InternalAngle;
                var thisBoxData = new BoundingBoxData(startDir, origPosYDir, rotateEdge, rotatorVector, convexHull);

                #endregion

                FindOBBAlongDirection(thisBoxData);
                if (thisBoxData.Box.Volume < minBox.Volume) minBox = thisBoxData.Box;
                var angle = 0.0;
                var deltaAngleToBackChange = 0.0;
                var deltaAngleOrthSet = 0.0;
                BoundingBoxData backChangeBox = null;
                BoundingBoxData sideChangeBox = null;
                do
                {
                    if (deltaAngleToBackChange <= 0)
                    {
                        backChangeBox = thisBoxData.Copy();
                        deltaAngleToBackChange = UpdateBackAngle(backChangeBox);
                    }
                    if (deltaAngleOrthSet <= 0)
                    {
                        sideChangeBox = thisBoxData.Copy();
                        deltaAngleOrthSet = UpdateOrthAngle(sideChangeBox);
                    }
                    BoundingBoxData nextBoxData;
                    if (deltaAngleOrthSet < deltaAngleToBackChange)
                    {
                        deltaAngleToBackChange -= deltaAngleOrthSet;
                        angle += deltaAngleOrthSet;
                        deltaAngleOrthSet = 0;
                        nextBoxData = sideChangeBox;
                    }
                    else if (deltaAngleToBackChange < deltaAngleOrthSet)
                    {
                        deltaAngleOrthSet -= deltaAngleToBackChange;
                        angle += deltaAngleToBackChange;
                        deltaAngleToBackChange = 0;
                        nextBoxData = backChangeBox;
                    }
                    else // if they are equal to each other
                    {
                        angle += deltaAngleToBackChange;
                        deltaAngleOrthSet = deltaAngleToBackChange = 0;
                        nextBoxData = backChangeBox;
                    }
                    if (angle > totalAngle)
                    {
                        // nextBoxData = new BoundingBoxData(endDir, rotatorVector.Cross(endDir).Normalize(), rotateEdge, rotatorVector, convexHull);
                        nextBoxData.Angle = totalAngle;
                        nextBoxData.Direction = endDir;
                    }
                    else
                    {
                        nextBoxData.Angle = angle;
                        nextBoxData.Direction = UpdateDirection(startDir, rotatorVector, origPosYDir, angle);
                    }
                    nextBoxData.PosYDir = nextBoxData.RotatorVector.Cross(nextBoxData.Direction).Normalize();

                    /****************/
                    FindOBBAlongDirection(nextBoxData);
                    /****************/
                    if (DifferentMembershipInExtrema(thisBoxData, nextBoxData))
                    {
                        var lowerBox = thisBoxData;
                        var upperBox = nextBoxData;
                        var midBox = thisBoxData.Copy();
                        while (!lowerBox.Angle.IsPracticallySame(upperBox.Angle, Constants.OBBTolerance))
                        {
                            midBox.Direction = (lowerBox.Direction + upperBox.Direction).Divide(2).Normalize();
                            midBox.Angle = (lowerBox.Angle + upperBox.Angle) / 2.0;
                            FindOBBAlongDirection(midBox);
                            if (midBox.Box.Volume > lowerBox.Box.Volume && midBox.Box.Volume > upperBox.Box.Volume)
                                break;
                            if (!DifferentMembershipInExtrema(lowerBox, midBox))
                                lowerBox = midBox;
                            else if (!DifferentMembershipInExtrema(upperBox, midBox))
                                upperBox = midBox;
                            else throw new Exception("new midbox is different from BOTH neighbors!");
                        }
                        if (thisBoxData.Box.Volume < minBox.Volume) minBox = midBox.Box;
                    }
                    thisBoxData = nextBoxData;
                    if (thisBoxData.Box.Volume < minBox.Volume) minBox = thisBoxData.Box;
                } while (angle < totalAngle);
            }
            return minBox;
        }

        private static double UpdateOrthAngle(BoundingBoxData boxData)
        {
            GaussSphereArc arcToRemove = null;
            var minSlope = double.PositiveInfinity;
            boxData.PosYDir = boxData.RotatorVector.Cross(boxData.Direction).Normalize();
            foreach (var arc in boxData.OrthGaussSphereArcs)
            {
                var x = boxData.Direction.Dot(arc.ToFace.Normal);
                var y = boxData.PosYDir.Dot(arc.ToFace.Normal);
                if (y == 0.0) continue;
                var tempSlope = -x / y;
                if (!(tempSlope < minSlope)) continue;
                minSlope = tempSlope;
                arcToRemove = arc;
            }
            if (minSlope < 0) return double.PositiveInfinity;
            var edgesAtJunction = new List<Edge>(arcToRemove.ToFace.Edges);
            for (var i = boxData.OrthGaussSphereArcs.Count - 1; i >= 0; i--)
            {
                var index = edgesAtJunction.FindIndex(boxData.OrthGaussSphereArcs[i].Edge);
                if (index >= 0)
                {
                    boxData.OrthGaussSphereArcs.RemoveAt(i);
                    boxData.OrthVertices.Remove(edgesAtJunction[index].From);
                    boxData.OrthVertices.Remove(edgesAtJunction[index].To);
                    edgesAtJunction.RemoveAt(index);
                }
            }
            foreach (var edge in edgesAtJunction)
            {
                if (!boxData.OrthVertices.Contains(edge.From)) boxData.OrthVertices.Add(edge.From);
                if (!boxData.OrthVertices.Contains(edge.To)) boxData.OrthVertices.Add(edge.To);
                boxData.OrthGaussSphereArcs.Add(new GaussSphereArc(edge, edge.OwnedFace == arcToRemove.ToFace
                    ? edge.OtherFace
                    : edge.OwnedFace));
            }
            return Math.Atan(minSlope);
        }

        private static double UpdateBackAngle(BoundingBoxData boxData)
        {
            Edge nextEdge = null;
            var yDir = boxData.RotatorVector.Cross(boxData.Direction);
            var minSlope = double.PositiveInfinity;
            foreach (var edge in boxData.BackVertex.Edges)
            {
                var otherVertex = edge.OtherVertex(boxData.BackVertex);
                var vector = otherVertex.Coordinates.Subtract(boxData.BackVertex.Coordinates);
                var y = yDir.Dot(vector);
                if (y < 0)
                {
                    // the x-value is boxData.Direction.Dot(vector) and it's positive for all edges since it's the back vertex
                    var slope = -boxData.Direction.Dot(vector) / y;
                    if (slope < minSlope)
                    {
                        minSlope = slope;
                        nextEdge = edge;
                    }
                }
            }
            if (minSlope < 0) return double.PositiveInfinity;
            boxData.BackVertex = nextEdge.OtherVertex(boxData.BackVertex);
            boxData.BackEdge = nextEdge;
            return Math.Atan(minSlope);
        }

        private static bool DifferentMembershipInExtrema(BoundingBoxData boxDataA, BoundingBoxData boxDataB)
        {
            var boxASides = boxDataA.Box.PointsOnFaces.Skip(2);
            var boxBSides = boxDataB.Box.PointsOnFaces.Skip(2).ToList();
            foreach (var boxASide in boxASides)
            {
                if (!boxBSides.Any(boxBSide => boxASide.Intersect(boxBSide).Any()))
                    return true;
            }
            return false;
        }

        private static Vector3 UpdateDirection(Vector3 startDir, Vector3 rotator, Vector3 posYDir, double angle)
        {
            var a = new Matrix3x3(rotator.X, rotator.Y, rotator.Z,
                startDir.X, startDir.Y, startDir.Z,
                posYDir.X, posYDir.Y, posYDir.Z);
            var b = new Vector3(0.0, Math.Cos(angle), Math.Cos(angle + Math.PI / 2));
            if (Matrix3x3.Invert(a, out var aInv))
                return b.Transform(aInv);
            else throw new Exception("Singular Matrix prevents updating direction.");
        }

        #endregion
    }
}


text:
In Jersey City, Crowds Gather To Remember Police Detective
By Jeff Brady
Now to Jersey City and the funeral for the police detective who was killed last week just before the attack on a kosher market. NPR's Jeff Brady reports police from around the region lined the streets today to pay their respects.
JEFF BRADY, BYLINE: It's a cold, wet day in Jersey City. A police procession with hundreds of officers escorted Detective Joseph Seals' coffin from a funeral home to Saint Aeden's Church.
(SOUNDBITE OF DRUMLINE)
BRADY: As the coffin was moved along the street, honor guards on the sidewalk raised their flags and officers with white gloves saluted. Arriving at the church, bagpipes played as mourners went inside for the funeral mass.
BRADY: Patrolman Frank Steinhauser is here with colleagues from the North Plainfield, N.J., police department.
FRANK STEINHAUSER: I'm thinking about the officer who was murdered in the line of duty by a terrorist - two terrorists.
BRADY: Federal authorities call this a case of domestic terrorism and say the attackers appeared to be motivated by a hatred for Jews and the police. Among those watching the procession, Natalie Miranda works nearby and says she noticed there was a big security presence, including officers patrolling with large guns.
NATALIE MIRANDA: There's SWAT. There's dogs - extra precautions today. I know that one of the cops had told me just, you know, keep an eye out today and try to be careful.
BRADY: Nearby and standing under an umbrella, Jersey City resident Michelle Maddy says she's thinking about Detective Seals' wife and five children.
MICHELLE MADDY: You know, it's just so sad. It really is, you know, 'cause I have five children of my own, you know? And, you know, to be - you know, for his life to be cut so short like that, you know, it's just sad. It really is, you know? I feel really bad for his family, and I hope they do all he can for his family.
BRADY: An online fundraiser brought in more than $570,000 dollars by this afternoon. Another organization is paying off the family's mortgage. Meantime, the investigation into Seals' death and the attack on the kosher market continues. Investigators are holding back some details, but we know that he was at a cemetery a week ago. Authorities say the attackers killed Seals first and then went to the kosher market, killing three more people. The shooters died after a gun battle with police.
Authorities say more details will be made public later. Today a police department from a nearby town patrolled Jersey City so officers here could spend the day remembering their colleague.
Jeff Brady, NPR News, Jersey City. Transcript provided by NPR, Copyright NPR.
Jeff Brady
Jeff Brady is a National Desk Correspondent based in Philadelphia, where he covers energy issues and climate change. Brady helped establish NPR's environment and energy collaborative which brings together NPR and Member station reporters from across the country to cover the big stories involving the natural world.
See stories by Jeff Brady

redpajama_set_name: RedPajamaCommonCrawl


Fashion and Beauty has always been my passion. Being a cosmetologist and professional make-up artist, I have brought my dream to life with opening Hello Beautiful, a boutique store in Murfreesboro, TN to inspire the everyday woman. Whether looking for an everyday outfit or something for a special occasion, Hello Beautiful is the place to come.
Seeking to provide an uplifting environment through honoring, empowering, and inspiring the every day woman.
I want, as a local owner and woman myself, to make everyone that I meet, or comes into Hello Beautiful, to feel the best that they possibly can, at whatever stage they are at in life. I believe in beauty from the inside out. We are all forever changing. It doesn't matter what stage you are at in life. I want you to rock it and feel good doing it.
Booked by appointment, I will be providing special occasion hair and make-up, every day make-up, and make-up lessons in Murfreesboro, TN. Bridal and customs packages can be created upon request.
Hello Beautiful is a Fashion Boutique with every day trending styles and Glam Bar for special occasion hair and make-up. We have women's clothing and accessories, ranging from XS-XL, and extended sizes from 10-12 to 22-24. We have local artist's handmade pieces of vintage tin jewelry. The ever popular Tennessee jewelry can also be found here. Hello Beautiful offers custom t-shirts featuring Hello Beautiful and The Boro. Private shopping events and more available upon request.
2705 Old Fort Parkway Suite E.
Don't miss out on exclusive deals!
Signup for our newsletter and receive discounts, know when we have sales, and keep updated with the hottest trends we have to offer.
*we promise never to spam you, because we hate spam too.


text:
Missing dog rescued from floodwater near Reading town centre
Fire crew from Dee Road were at the River Kennet by The Oracle at around 10am after a call from the dog's owner who assumed the collie had gone on to the lock
Gemma Davidson
River Kennet flooding at The Oracle and near Loch Fyne
A dog that had been swept away in the floodwater brought firefighters out yesterday morning to search for him.
The Dee Road crew were at the River Kennet by The Oracle at around 10am after a call from the dog's owner who assumed the collie had gone on to the lock.
Luckily, the river carried the animal into the flooded gardens in Elgar Road and was grabbed by a resident. The collie, called Tom, had hurt his front paw and was treated at a vets.
Environment Agency warn householders to expect more flooding
Firefighters emphasised the owner did the right thing in calling them and not entering the water.
They said the footpath was under 18 inches of water but people were still walking through it.
With more heavy rain expected over the next three days the Environment Agency (EA) has also issued a warning to people living near rivers to expect flooding.
A spokesperson said: "We are monitoring the situation in Reading very closely. There is a warning for the River Kennet and the River Loddon, and an alert in place for the River Thames which we will be keeping a close eye on."
The Met Office has issued an amber severe weather warning for heavy rain across an area including Reading, Bracknell and Wokingham from now until Sunday morning.
Reading Town Centre
The Oracle Shopping Centre


The rate of the Brooklyn property market remains to be brisk. Generally, houses get on the marketplace for 73 days. No greater than four months back, homes were on the market for an average of 112 days, or 34.8 percent longer. Throughout a year, the amount of time a home spent on the market declined by 36 days. There is no doubt the demand in the Brooklyn housing market at the moment.
help me sell my house fast Gresham Park helps you achieve your dreams.
What To Offer On A Home In Today's Market 2014 Autobots as well as Decepticons are at battle, with human beings on the sidelines. Optimus Prime is gone. The key to saving our future lies hidden in the secrets of the past, in the surprise background of Transformers in the world.
You need to obtain authorization from a lending institution to obtain a funding when youve determined that you desire and are ready to buy a residence. However before you could do that, you need to have a suggestion of just how much you could manage. Your credit will certainly likewise be a major factor in the funding procedure.
If a house has only gotten on the market for a couple of days, the vendor is much less likely to offer you a price Gresham Parkk than if your house has actually been resting empty for months. Why the seller is offering could also give a clue as to a seller's possible readiness to wheel as well as deal.
Book a FREE call with our team today if youre ready to begin developing a passive income via rental actual estate. Were ready to talk about your objectives and intend to assist you discover more regarding earning heritage riches for you and also your household.
The best ways to Obtain A Mortgage With Bad Credit Score If you're in the middle of the procedure and also keep obtaining denials, take into consideration putting your own a home dreams on hold while you work on boosting your credit history. If a person's score is much less than 580, we might assist them discover ways they could enhance their credit score as well as inform them we will certainly re-visit the financing application in two or three months," claims Eachus.
Making A Deal On A Residence By Email Get a comparative market analysis (CMA). Tepilo or your existing estate representative could perform the CMA on your behalf so you don't get lost in a maze of property jargon and statistics. Essentially, what youre searching for is how the property youre curious about compares to other comparable residential or commercial properties in the area. Factors consist of square video, the number of washrooms as well as rooms, offered prices vs. list prices and ordinary prices. Completion result is a precise quote of the homes real worth.
In order to start this procedure, you have to first choose which partner is going to stay in the home. The person that is mosting likely to live in the house is mosting likely to need to buyout the equity of the other spouse. Sometimes, the married couple will have the ability to choose that is mosting likely to stay in the house. In many cases, the judge in the separation court will certainly have to make a decision.
The best ways to Make A Deal On A House Some home-buyers bargain with the vendor making sure that they pays of the home evaluation. This is one cost youre most likely better off shouldering on your own, however, to make sure that the house inspector is benefiting you as well as watching out for your benefits.
Home Examination Record Structural examinations report on the structure as well as supporting elements of a residence. When carrying out a framework evaluation, the house examiner will certainly look for a selection of distress signs that may cause repair service or additional analysis recommendations.


With an updated fit and all new fabric the latest generation Hot Pack 6 Jacket still offers the resistance to wind and light rain that you love , maintains incredible lightness but now fits and feels even better.
The new fabric of the Hot Pack 6 Jacket improves the feel of this perrenial favourite, being softer against the skin for added comfort. The fabric also has a light stretch and when combined with an all new and improved anatomical cut the fit of the jacket is greatly improved leading to less flapping at speed.
The jacket also still features a nice high collar and elastic at the wrists and waist to seal out wind and rain, plus the minimal number of seams lessens the areas that water can seep inside. To ensure you don't feel clammy Sportful have included ventilation to the back so moisture can escape.
Even on a warm summer ride you can feel a chill on a fast downhill or on an early morning start which is where the Hot Pack Jacket excels. Lightweight but protective to wear and then impressively easy to pack away you really can take this on every ride, just in case.
Sportful Hot Pack 6 Jacket is rated 5.0 out of 5 by 1.
Rated 5 out of 5 by technics2001 from Perfect for Cold Summer Mornings This jacket is perfect for cold, early starts in the summer when you know it will be warm enough for short sleeves later on. It is extremely lightweight, the material so thin that it is transparent so any garments worn underneath are clearly visible. Despite this it feels hard wearing and actually provides a bit of warmth, it seems breathable enough. There is a pouch in a rear pocket that the jacket packs into but is quite bulky so I removed this, the jacket compresses down well and fits easily in a rear jersey pocket. Sportful tops and jackets are small made similar to Castelli so I would recommend taking a size up even if you like your garments close fitting.


Enjoyed the shadows cast on the fence just several minutes before totality of what is dubbed to be the "great American eclipse". It's interesting how it created the effect of people's heads in a crowd, exactly what was taking place across the country. I've had the privilege of viewing it from the backyard and thankful I didn't have to drive far to see it.
Just a few minutes before totality.
I thought my camera created a chromatic aberration here with the purple ring but other people's footage also showed purple.
Less than 2 minutes to view a once in a lifetime occurrence of totality with a very limiting optical device, no zoom nor solar filter attached to the camera. Bummer! But, the event was spectacular and didn't disappoint! Total darkness during daytime and experiencing the sudden drop of atmospheric temperature is something I'll never forget. It certainly had an eerie feel attached to it as my son mentioned would make a great plot for a game where people who saw the eclipse would turn into zombies. It is interesting how scientists pick this particular day to send off balloons with bacteria resistant to antibiotics into the atmosphere.
And a few minutes later… I wish I could rewind time to see it again.
Life goes on and sad to say, back to the humdrum of societal chaos.


- Ready for a fun weekend?
- He's not gonna have a fun weekend.
for a history test on Monday.
in your car, I'll play along.
Really? I told him I was on my way.
That might be why he's not here.
I'm gonna visit my parents.
I won't pick Jake up till Wednesday.
Alan has to take him to school.
Alan, why are you avoiding me?
- Why were you hiding?
hide from the stealthy jaguar?
...but as Charlie told you, I'm not here.
- I let her take Jake out to dinner.
me for 15 minutes about his dirty ears.
Like I'm a bad parent.
in a squirming 11 -year-old boy's ear.
Mom didn't believe in Q-Tips.
She had a squirt gun.
and licks their ears clean.
...she needs to back off.
- Okay, I'll tell her.
- I'll tell Alan you stopped by.
Okay, Lewis and Clark explored what?
- You just read that chapter.
was a long time ago.
Thanks for the ride, Sally.
And for getting me home too.
- Why is that funny?


Eric Johnson's Ah Via Musicom tour, featuring his original 1990 bandmates – drummer Tommy Taylor and bassist Kyle Brock, pulled in to The Arcada Theatre on Friday night for a rescheduled show from October 31. Anticipation from ticket holders was high, to say the least. This tour, very well received since the first leg commenced in 2017, proved that the current iteration is no exception. Listening to the comments in the audience pre-show, Johnson's reputation of being a class act was undoubtedly apparent.
There is a charm about the Arcada Theatre that seemed to be a good fit for the show I was about to see. The theater's ubiquitous impresario, Ron Onesti, prepared a video projected on the Arcada's massive video wall that welcomed the nearly sold-out crowd, which he does each time he cannot personally attend and M/C a show. As Johnson and company took to the stage, the resulting reaction from the audience was deafening. The band opened with "Stratagem" from the newest album Collage, which could easily stand right along with the other EJ staples in his catalog, especially by early-nineties Musicom standards.
As a guitarist myself, I was immediately struck by Johnson's anti-guitar-hero persona. Although I have been an EJ admirer for decades, this was actually my first time seeing him live, and that perspective should temper this review. I mean, today's newest crop of gunslingers – which include guitarists like Guthrie Govan – owe a debt to the wunderkind from Austin. Although I have seen Eric Johnson in countless videos, experiencing this guitar star live takes on an entirely different vibe. It was so refreshing to see him in such concentration with his instrument and his craft, with little to no attention given to being an over-the-top/flashy performer. His humility in performance comes through as entirely genuine. Absent is any hint of 'entitlement' that so many rock star guitarists seem to translate, intentionally or unintentionally, to the audience.
Most of the faithful worshippers in the house seemed to be long-seasoned veterans of the Eric Johnson experience. A quick query of a few audience members to my left and right revealed long-standing fans juxtaposed with a couple who had only seen EJ once before. Nevertheless, both factions seemed to enjoy what was coming from the stage thoroughly. EJ's dexterity is legendary; his chops blend rock, jazz, and classical so seamlessly it's as if he has singlehandedly invented a new genre altogether. In this day and age of the omnipresent guitar player, it's even more critical for guitarists to be able to stand out from the rest with their own voice, and Eric Johnson has been doing just that all these many years.
This concert was conceived, says Johnson, "from really listening to the feedback that my fans provide. They have been after me for the longest time to perform my Grammy-winning Ah Via Musicom album in its entirety live, and in 2017, we decided that now is the time." So the show was conceived in two parts, the first set being fan favorite non-Musicom gems, with the second set being the Ah Via Musicom album performed in its entirety. During the show, Johnson spent a fair amount of time speaking to the audience with behind-the-scenes stories and anecdotes explaining what certain EJ songs meant to him.
When the band played the opening notes of the beloved tune "Manhattan," you could hear an audible gasp of approval from the audience. Such incredible taste and class from the mind and fingers of the six-string maestro. With the tune being a nod to Wes Montgomery, where octaves meet pure EJ groove genius, all in attendance were collectively breathless. Johnson, unlike his compadres in the proverbial guitar-dom, sings about 50% of his material – and he can actually sing. It is a welcome distinction over the other guitarists who either stick to the instrumental model or employ a separate singer. EJ was also very aware of his talented bandmates and introduced them several times during key moments throughout the evening. By the time the band launched into the first cover song "The Land of 1,000 Dances," the Chris Kenner-penned early 60's rock anthem with its "Nah, Nah Nah Nah Nah" chorus, Eric Johnson fans were ecstatic with the show and continued to be as it approached the end of the first set.
One intermission later, the massive video wall projected the Ah Via Musicom logo, and we were off to Musicom-land. The title track of the album proceeded with its moody soundscapes and special effects, but it was when the familiar strains of the intro to "Cliffs of Dover" began that the place went up for grabs. Interestingly, this most famous of EJ tunes provided the only case of slightly out-of-sync playing that I noticed all evening. When Eric hit the hook of the song (in what would be the 'chorus' if the tune had a singer), it was the only time in the evening that the band as a whole were just slightly rhythmically out of sync. Call it a sudden bout of 'acute rhythmitis' or possibly a monitor issue? Or maybe just not being able to hear as well as they needed to on stage at that moment. Any non-musicians would likely not have even noticed. Still, they recovered nicely and the rest of the tune, as well as the rest of the album, was played flawlessly.
The requisite encore was unique. Instead of just doing a single tune the band did a few, left the stage and came back to do several more, leaving both the band and the audience both thrilled and physically spent. Throughout the evening Eric Johnson was the consummate professional, never wavering from his devotion to pleasing himself, his bandmates, and the audience with his artistry, his ability, and his music. He is indeed a class act.
Great review of the Eric Johnson Show at the Arcada Theater In St. Charles.


text:
Posted on December 5, 2018 by Pomeroy Daily Sentinel
Marauders fall to Warren, 63-48
By Alex Hawley - ahawley@aimmediamidwest.com
Meigs freshman Coulter Cleland (10) drives past Warren's Kurt Taylor (00), during the Warriors' 63-48 victory on Tuesday in Rocksprings, Ohio.
Alex Hawley|OVP Sports
Meigs senior Cole Betzing lines up a three-pointer, during the Marauders' 63-48 setback on Tuesday in Rocksprings, Ohio.
Meigs senior Nick Lilly (22) looks to pass from the lane, during the Marauders' non-league setback on Tuesday in Rocksprings, Ohio. (Alex Hawley|OVP Sports)
Meigs sophomore Wyatt Hoover attempts a jump shot, during the Marauders' 63-48 setback on Tuesday in Rocksprings, Ohio. (Alex Hawley|OVP Sports)
ROCKSPRINGS, Ohio — Not the home opener the Marauders were hoping for.
The Meigs boys basketball team never led and fell to non-conference guest Warren by a 63-48 final on Tuesday inside Larry R. Morrison Gymnasium.
Warren (1-1) scored the first five points of the night, holding the Marauders (1-1) scoreless for the opening four minutes. The Warriors led 15-8 at the end of the first quarter, and then started the second with a 6-1 run.
Meigs fought back with a 17-8 spurt over the final five minutes of the first half, cutting the Warrior advantage to 29-26 at halftime.
MHS senior Nick Lilly hit a three-pointer 18 seconds into the second half, tying the game at 29, but Warren reestablished the lead with a two-pointer a minute later. Lilly then made a two-pointer to tie the game at 31, but the Warriors answered with a trifecta and never lost the advantage.
Warren led by a 45-38 clip at the end of the third, but Meigs cut its deficit to five points in the opening 1:30 of the finale. However, Warren hit back-to-back buckets within 15 seconds to stretch the lead to double digits. The Warriors went on to sink 11-of-21 free throws in the final six minutes — in which the Marauders had four players foul out — and WHS sealed the 63-48 victory.
Following the first setback of the season, first-year MHS head coach Jeremy Hill admitted his team didn't do what it took to win the game.
"We got outplayed," Hill said. "We didn't rebound particularly well, we didn't shoot free throws particularly well, we didn't shoot the ball particularly well and we got ourselves in foul trouble. All of those things add up to a loss."
In the setback, the Marauders shot 15-of-42 (35.7 percent) from the field, including 4-of-15 (26.7 percent) from beyond the arc. Meanwhile, Warren was 18-of-46 (39.1 percent) from the field, including 4-of-13 (30.8 percent) from three-point range.
The teams combined to shoot 70 free throws, with the guests going 23-of-45 (51.1 percent) from the line, and Meigs shooting 14-of-25 (56 percent) from the stripe.
The Warriors claimed a narrow 30-to-29 rebounding advantage, despite Meigs' 14-to-11 edge on the offensive glass. Collectively, the Marauders had a dozen assists, five steals, one blocked shot and 19 turnovers. WHS finished with team totals of 11 assists, 12 steals, one rejection and 13 turnovers.
Weston Baer led the Marauder offense with 13 points, featuring two three-pointers, a trio of two-pointers and a free throw. Next was Zach Bartrum with 11 points, to go with six rebounds and a trio of assists.
Nick Lilly recorded seven points in the setback, while Cooper Darst and Coulter Cleland had five points apiece, with Darst earning a team-best five assists, and Cleland pulling in a team-high seven rebounds.
Cole Betzing and Wyatt Hoover had three points apiece for the hosts, while Bobby Musser chipped in with one. Zach Bartrum led the MHS defense with three steals and a block.
Austin Barta and Brandon Simoniette led the Warren offense with 13 points apiece, followed by Seth Dennis with 10 points and three assists. Makiah Merritt scored nine points, Clay Miller added five, with both players grabbing seven rebounds.
Kurt Taylor, Joel Chevalier and Gabe Venham each scored three points for the victors, while Bryce Knost and Isaac Colegrove added two apiece. Dennis, Merritt, and Simoniette had two steals each for the WHS defense, while Colegrove rejected a shot.
Hill noted that the Maroon and Gold won't dwell on the setback, but will try to learn from it as they move forward into league play.
"Anytime you get a loss, it's what you do with the loss that means the most," Hill said. "A loss doesn't define your season, it's what you do with the loss that defines your season. We're going to come back in the gym tomorrow and we're going to try to fix the things we did wrong."
Meigs opens it's Tri-Valley Conference Ohio Division campaign at home against Wellston on Friday. The Golden Rockets and Marauders were fourth and fifth respectively in the league last season.
https://www.mydailysentinel.com/wp-content/uploads/sites/14/2018/12/web1_12.6-MHS-Cleland.jpgMeigs freshman Coulter Cleland (10) drives past Warren's Kurt Taylor (00), during the Warriors' 63-48 victory on Tuesday in Rocksprings, Ohio. Alex Hawley|OVP Sports
https://www.mydailysentinel.com/wp-content/uploads/sites/14/2018/12/web1_12.6-MHS-Betzing.jpgMeigs senior Cole Betzing lines up a three-pointer, during the Marauders' 63-48 setback on Tuesday in Rocksprings, Ohio. Alex Hawley|OVP Sports
Meigs senior Nick Lilly (22) looks to pass from the lane, during the Marauders' non-league setback on Tuesday in Rocksprings, Ohio. (Alex Hawley|OVP Sports)
https://www.mydailysentinel.com/wp-content/uploads/sites/14/2018/12/web1_12.6-wo-MHS-Lilly.jpgMeigs senior Nick Lilly (22) looks to pass from the lane, during the Marauders' non-league setback on Tuesday in Rocksprings, Ohio. (Alex Hawley|OVP Sports)Alex Hawley|OVP Sports
Meigs sophomore Wyatt Hoover attempts a jump shot, during the Marauders' 63-48 setback on Tuesday in Rocksprings, Ohio. (Alex Hawley|OVP Sports)
https://www.mydailysentinel.com/wp-content/uploads/sites/14/2018/12/web1_12.6-wo-MHS-Hoover.jpgMeigs sophomore Wyatt Hoover attempts a jump shot, during the Marauders' 63-48 setback on Tuesday in Rocksprings, Ohio. (Alex Hawley|OVP Sports)Alex Hawley|OVP Sports
ahawley@aimmediamidwest.com
Hi! A visitor to our site felt the following article might be of interest to you: Marauders fall to Warren, 63-48. Here is a link to that story: https://www.mydailysentinel.com/sports/33832/marauders-fall-to-warren-63-48


Hello guys!We are looking for a home-mate. As you can see in the photos, there is a huge window which makes it light. The furniture quiet new. Please send me a massage for the viewing and for the question. Thank you.Interesse in deze woning? Ga naar Kamernet.nl en stuur een bericht naar de verhuurder of huisgenoten.


Art deco interior design for every rooms transformation, bedroom interior gayatri creations, stunning interior bedroom design and decoration ideas. Decorations: minimalist design modern bedroom interior. Beautiful bedrooms.


It is critically important to have a vet who is experienced with bunnies; they have very different needs than pets such as cats and dogs, and some treatments that are fine for those pets can be deadly to rabbits. It is important to take your bunny in for annual checkups; semi-annual is recommended for bunnies over age 6. Keep accurate records and don't rely on memory. Be prepared and don't wait for an emergency to try to find a qualified vet.
The Sweetpea Foundation frequently works with Dr. Gayle Roberts and Dr. Sari Kanfer who have been valuable resources in helping us keep our bunnies healthy. We've listed their office information along with other experienced bunny vets if you live in these areas. A link is also provided below so you can find a qualified veterinarian in your area.
Click here for list of Veterinarian by state provided by House Rabbit Society.
What if your bunny suddenly becomes ill, or stops eating and develops GI Stasis or gets injured and it is a Saturday evening or a Sunday when your regular bunny vet's office is closed? You hope it never happens, but be prepared so you have a back-up plan and can get your bunny to an emergency care center that is open 24 hours and has experience with rabbits. Your bunny's life may depend on it, so get them treatment so they are stabilized and then get them in to your regular vet the next day their office is open. Ask your regular bunny vet for their recommendation.
P: 626.441.8555 18300 Euclid St.


text:
Tigers' Upton: 'You feel like you're home now'
Upton has an opt-out clause after 2017. While he said it is early to think about that, he feels comfortable in Detroit.
Tigers' Upton: 'You feel like you're home now' Upton has an opt-out clause after 2017. While he said it is early to think about that, he feels comfortable in Detroit. Check out this story on Freep.com: http://on.freep.com/2k9yXRr
Anthony Fenech, Detroit Free Press Published 3:34 p.m. ET Jan. 20, 2017 | Updated 4:17 p.m. ET Jan. 20, 2017
Detroit Tigers 2017 winter caravan
Detroit Tiger's J.D. Martinez, left, poses for a photograph with Caitlin Kovary, of Waterford, during the Tigers' winter caravan Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
Paws, the Detroit Tigers' mascot, rests his arm on top of Michael Manjano, 9, of Monroe, while waiting for his food during the Tigers' winter caravan on Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
Karri Sandusky, left, of Detroit, poses with the Detroit Tigers' J.D. Martinez during the Tigers' winter caravan Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
Paws, the Detroit Tigers' mascot, poses with Jose Manjano, of Monroe, while waiting for her food during the Tigers' winter caravan on Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
The Detroit Tigers' Ian Kinsler, rushes to refill a customer's coffee during the Tigers' winter caravan on Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
Eleanor Simaika, 3, of Grosse Pointe Park, stands next to her grandma Margaret Michael, of Harper Woods, while they wait to say goodbye to the Detroit Tigers' Ian Kinsler and J.D. Martinez during the Tigers' winter caravan Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
Courtney Chestnutt, back left, of Taylor, and a server with Hard Rock Cafe, delivers food with Detroit Tigers' J.D. Martinez, back right, to Ed Lake, of Goodrich, front left, Pete Keyosky and Caitlin Kovary, both of Waterford during the Tigers' winter caravan Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
Eleanor Dodd, left, of Detroit, poses for a photograph with Detroit Tigers' J.D. Martinez, during the Tigers' winter caravan Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
The Detroit Tigers' J.D. Martinez meets with fans during the Tigers' winter caravan Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit. Elaine Cromie, DFP
The Detroit Tigers' Ian Kinsler signs a poster for Michael Manjano, 9, of Monroe, during the Tigers' winter caravan Thursday, Jan. 19, 2017 at Hard Rock Cafe in downtown Detroit.Cafe in downtown Detroit. Elaine Cromie, DFP
The Detroit Tigers' Justin Upton rounds the bases after hitting a solo home run against the Minnesota Twins on Sept. 22, 2016, in Minneapolis.(Photo: Jim Mone, Associated Press)
The first five months of 2016 were a struggle for Detroit Tigers leftfielder Justin Upton. He struck out a ton. Other times, he would pop up to second base and slam down his bat. At times, he looked lost.
"I just created bad habits throughout spring training, and they carried into the season," Upton said during the team's winter caravan Thursday. "I had to get a chance to get back to what I needed to do."
Upton received that chance in August, when manager Brad Ausmus removed him from the starting lineup for three games, trying to hit a "reset" button for the pennant race. It worked: Over the next 37 games, Upton hit .303 with 18 home runs and 41 RBIs.
"I didn't do anything new," Upton said. "I just got back to what I knew how to do. At the end of the season, it wasn't that I was having an epiphany with a new swing."
Upton finished his first season in Detroit with a line that seemed impossible near the All-Star break: hitting .246 and tying a career high with 31 home runs.
Reflecting on last season, his first after signing a six-year, $132.75-million contract, he said the rebound was possible because of his mentality away off the field, hidden under a heap of frustration on it.
"I had no choice," he said. "I couldn't come in and bury my head and not talk to anybody. I didn't have that option. I had to stay where I was and believe in the process and that, eventually, I would help the team. And I did."
Sitting at a table inside the Tiger Den with second baseman Ian Kinsler, whom Upton credited as a steadying force throughout the season, Upton admitted that, earlier in his career, he probably wouldn't have been able to handle the early-season struggles.
"It's just something that comes with age," Upton said. "This will be my 10th year, and I spent the first four years beating myself up every time I was in a slump and patting myself on the back every time I was hot. So, I've learned from those experiences and gotten better over time."
No small part of his even-keel mentality came from his infant daughter, Sydnee, unknowingly offering big-picture perspective every time he came home after an 0-fer.
"For sure," he said. "Going home and starting off the next day, she didn't care about what I did the night before. I definitely think that played a part."
Upton no longer is young. At 29 and entering his 10th full season, he is a major league veteran. But at his age, he still has untapped potential -- and perhaps fighting through the kind of season he had in 2016 will make him a stronger player in the future.
Whether it will be with the Tigers remains to be seen. Upton's contract includes an opt-out clause after this season. While he said it is too early to be thinking about that, he did say he felt comfortable in Detroit -- and comfort is his first priority.
"I'm not really thinking about that," he said. "When I signed here, my plan was to come here and try to win a World Series, and that's what I want to do, because this team is good enough to do it."
It doesn't seem likely that Upton could eclipse the $88.5 million remaining on his deal in 2018-21 on the open market. And if he were in a position to do so, the Tigers certainly would have been pleased with his 2017 season.
Though a streaky hitter, Upton has been relatively consistent throughout the years. He's never injured, hits for power and runs a bit. Now in his second season in Detroit, he's not worried about the expectations of being a former No. 1 draft pick or slipping into a monthlong slump. Been there, done that. He's more comfortable in his Comerica Park digs, as spacious as they are, and guesses that he'll play there awhile longer.
"It feels normal," Upton said. "Naturally, you feel like you're home now. You just feel like this is home, that this is where I plan on being."
Detroit Tigers going for it, despite sticking with status quo
Contact Anthony Fenech: afenech@freepress.com. Follow him on Twitter @anthonyfenech.
U-M assistant Anthony Campanile leaving for Miami Dolphins
Doumbouya shines in Pistons' 116-103 upset of Celtics
Michigan's top recruiting targets for Class of 2021: Local and national


The Canadian clinical psychologist Jordan B Peterson has, in recent years, become an internet celebrity, producing a slew of videos and interviews on all manner of political and social topics. He is acerbic, combative and openly contemptuous of his opponents, particularly Marxists and "Postmodernists", for whom he harbours a special animus. He is an enthusiastic and prolific culture warrior, who has no truck with "white privilege", "cultural appropriation" and a range of other ideas associated with social justice movements. His reluctance to call transgender people by their preferred pronouns (unless they ask him to) has earned him a reputation as a transphobe, and while his views have marginalised him within the academic community, they have bolstered his reputation in conservative circles.
His academic work includes many papers in which he seeks to understand political and religious belief in terms of the so-called "big five" personality traits – openness, conscientiousness, extraversion, agreeableness and neuroticism. His work on the psychology of political correctness has raised eyebrows, given his recent proposal to purge "corrupt" academic departments of courses and teachers he deems infected by this pathology.
This response captures much of what, for good and ill, informs 12 Rules for Life, his long and often peculiar foray into the self-help genre. It is a book that combines sensible advice gleaned from his clinical practice with inspirational anecdotes from his personal life, accounts of his academic work in the field of psychology and a lot of intellectual history of the "great books" variety, which he interprets in highly tendentious ways.
Jordan B Peterson, raised and toughened in the frigid wastelands of Northern Alberta, has flown a hammerhead roll in a carbon fibre stunt plane, piloted a mahogany racing sailboat around Alcatraz Island, explored an Arizona meteorite crater with a group of astronauts, built a Native American longhouse on the upper floor of his Toronto home, and been inducted into the coastal Pacific Kwakwaka'wakw tribe.
Once the cloud of testosterone has cleared (leaving behind the lingering curiosity as to why, exactly, one would want a longhouse upstairs), the reader discovers that each of Peterson's 12 rules is explained in an essay delivered in a baroque style that combines pull-your-socks-up scolding with footnoted references to academic papers and Blavatskyesque metaphysical flights. He likes to capitalise the word "Being" and also to talk about "fundamental, biological and non-arbitrary emergent truth". Within a page, we are told that "expedience is cowardly, and shallow, and wrong" and "meaning is what emerges beautifully and profoundly like a newly formed rosebud opening itself out of nothingness into the light of sun and God". The effect is bizarre, like being shouted at by a rugby coach in a sarong.
The big duality in 12 Rules for Life is the opposition of order and chaos. The point of the rules is, as the subtitle states, to provide "an antidote to chaos". The maintenance of order is at the core of Peterson's world view. Order is truth. It is singular and masculine. Chaos is "the eternal feminine", a misty Jungian formulation that puts the author in the invidious position of promoting a how-to manual on suppressing the feminine principle. He fudges this by talking about yin and yang, and "straddling dualities", but if chaos is indeed the "possibility, growth and adventure" towards which he occasionally remembers to genuflect, it's clear that he is mainly preoccupied with keeping it at bay.
It's not an easy thing to live in a truthful manner, but the alternative is hell … I learned a lot about the importance of spoken truth as the countervailing force against tyranny and authoritarianism. It isn't an alternative political structure that's the countervailing force, it's spoken truth that's the countervailing force. Why would I put my job on the line to have an opinion about compelled pronouns? Because the ability to speak your truth is the bulwark against hell.
This religious language is not metaphorical. Peterson does not like to be asked if he believes in God, complaining to an interviewer that the question is intended to "box him in", but 12 Rules for Life is saturated with Christian theology. Many pages are devoted to biblical exegesis, and his thoughts about lies lead him first to Goebbels and the "big lie" of propaganda, then to the "father of lies" – not Derrida, but the devil. When thinking about the Columbine school shootings, he is moved to wonder whether Eric Harris was not, in fact, an incarnation of Satan.
What makes this book so irritating is Peterson's failure to follow many of the rules he sets out with such sententiousness. He does not "assume that the person he is listening to might know something he doesn't". He is far from "precise in his speech", allowing his own foundational concepts (like "being" and "chaos") to slide around until they lose any clear meaning. He is happy to dish out a stern injunction against straw-manning, but his "Postmodernists" and Marxists are the flimsiest of scarecrows, so his chest-thumping intellectual victories seem hollow. He appears sincere, and in some ways admirable in his fierce desire for truth, but he is much less far along his journey than he thinks, and one ends his oppressive, hectoring book relieved to be free of him.
• 12 Rules for Life: An Antidote to Chaos is published by Allen Lane. To order a copy for £17 (RRP £20) go to guardianbookshop.com or call 0330 333 6846. Free UK p&p over £10, online orders only. Phone orders min p&p of £1.99.


My application fir 'permission to appeal' in a small claims case has been refused without a hearing, but the court letter says we can ask for the decision to be reconsidered in an oral hearing before the court and that such request must be filed in the court within 7 days. If I apply for this oral hearing, does that stop any potential enforcement by the claimant to recover the debts owned until the oral hearing is made? Is there usually a fee for such an oral hearing?
Did you pay a fee to file your Appellants notice originally?
You just write and ask for an oral hearing.
Because you do not have an order suspending enforcement.
Your permission is only just that, permission. It is not the actual appeal. You may abandon permission part way through.
What else is it you would like to know and I would be delighted to assist?
If i attend the oral hearing, is there any grounds i can apply for new challenges?
No. You can only appeal the existing decision on those facts.
You can not introduce new evidence.
An appeal is a review of the decision of the Court below - it is not a rehearing of the case.


The Pentagon has known for years that a significant number of the replacement parts it buys for its missile guidance and satellite systems contain substandard counterfeit microchips.
NASA's Cassini spacecraft is back in contact with Earth after its successful first-ever dive through the narrow gap between the planet Saturn and its rings on April 26, 2017.
Rice University professor and ACM Fellow Lydia Kavraki will receive this year's ACM Athena Lecturer Award.
New neural network-based detection algorithms can determine what movies people who use streaming services are viewing.
Six-year-old girls exposed to a computer-programming activity had more interest in technology and more positive outlooks about their own skills compared to non-participants.
Researchers have developed a method for wirelessly powering ingestible electronic devices.
Jean-Marc Alliot at the Computer Science Research Institute of Toulouse in France has developed a system that directly ranks chess players based on the quality of their chess moves.
What do you picture when you think of a drone?
A new automated probe system for gauging the performance of computer elements is designed to run 100 times faster than current supercomputers, while consuming far less energy.
New York University professor Justin Cappos has been developing The Update Framework (TUF) for eight years to help organizations update their software securely.
Researchers have developed a new method to counter algorithmic bias, with the goal of proving algorithms can guarantee fairness in resource allocation.
Disney researchers say they have developed a new method that makes it possible to realistically simulate hair by observing real hair in motion.
A City University of New York program helps public school students learn science and math, and provides them with role models.
Two graduate students stood silently beside a lectern, listening as their professor presented their work to a conference.
Scientists have discovered a new planet with the mass of Earth, orbiting its star at the same distance that we orbit our sun.
Organ Donation: A New Frontier For Ai?
Researchers are developing a computerized machine-learning method for better predicting how well a typical organ transplant will proceed.
Researchers at the University of Rochester are using data science to understand the phenomena driving the global climate system.
University of Idaho professor Joseph Qualls says he envisions education being transformed by artificial intelligence.
Researchers have demonstrated it is possible to prevent machine-vision systems from seeing specific categories of objects in a scene.
Researchers created ScanNet, a new database of three-dimensional images with millions of annotated objects, to help train machines to better understand the physical world via deep learning.
Mozak is a new scientific discovery game enabling citizen scientists to generate three-dimensional reconstructions of neurons in different regions of human and animal brains.
NASA's Cassini spacecraft is set to make its first dive through the narrow gap between Saturn and its rings on April 26, 2017.
Chemists are dreamers. Every day, they imagine molecules floating in space, with atoms moving about in a stately dance.
In early January, I went to see Mark Zuckerberg at MPK20, a concrete-and-steel building on the campus of Facebook's headquarters, which sits across a desolate highway from the marshy salt flats of Menlo Park, Calif.
An estimated 600 March for Science rallies took place Saturday across the U.S., and across the globe.
A team of Google researchers by the end of this year plans to build a device that achieves "quantum supremacy."
This year's "Made with Code" initiative paired women from three non-government agencies with student scientists to address environmental challenges.
Researchers are working on an approach to unmanned air systems and aerial vehicles that does not use global navigation satellite systems .
D-Wave and IBM offer access to supercomputing quantum computers in the cloud.


text:
COVID-19 Wreaks Havoc On Jets' Schedule
December 30, 2021 by Declan Schroeder
The Winnipeg Jets have had a number of games postponed recently. Here, we'll break down all of the schedule changes and how they will impact the team going forward.
No Fans Allowed Leads to Layoff Extended
The NHL schedule has been changing at a dizzying pace and postponements have been piling up since more players have been testing positive for COVID-19 and the highly-transmissible Omicron variant becomes the dominant strain in North America.
Sign up for our regular 'Jets Newsletter' for all the latest.
The Jets have not played since Dec. 19, when they defeated the St. Louis Blues 4-2 at home. Due to the postponements, they will not play again until Jan. 2, when they travel to Vegas to face the Golden Knights.
The Jets only have two players in COVID-19 protocol, but the most recent postponements are due restrictions on fans in the stands.
The Jets have had a number of games postponed recently. (Photo by Darcy Finley/NHLI via Getty Images)
Amped-up Manitoba health orders currently dictate that the Jets can have a maximum of 250 fans at Canada Life Centre, even after much hope that admitting only fully-vaccinated fans would allow 100 per cent capacity to be maintained for the whole season.
The NHL is not willing to allow Canadian teams to host at less than 100 per cent capacity as they did last season. The Calgary Flames, Edmonton Oilers, Ottawa Senators, Toronto Maple Leafs and Vancouver Canucks are limiting to 50 per cent, while the Montreal Canadiens aren't allowing fans at all.
Breaking Down the Postponements
On Tuesday, the NHL announced more postponements, including three Jets' games — on Dec. 31 in Calgary against the Flames and on Jan. 8 and Jan 10 against the Seattle Kraken and Minnesota Wild in Winnipeg, respectively.
Three more Winnipeg Jets games have been postponed:
– At Calgary, Dec. 31
– At home vs Seattle, Jan. 8
– At home vs Minnesota, Jan. 10#COVID19
— Bartley Kives (@bkives) December 28, 2021
The Jets already had four other games delayed. Prior to Christmas, games on Dec. 21 in Nashville due to multiple Predators in COVID-19 protocol and on Dec. 22 in Dallas against the Stars due to concerns with cross-border travel were put on ice.
After Christmas, the Dec. 27 against the Minnesota Wild was pushed back due to the NHL pause being extended an extra day, as was Dec. 29 against the Chicago Blackhawks (which the Winnipeg Free Press' Mike McIntyre reported was due to a Jets' request due to fan limits.)
The new schedule sees the Jets play in Vegas on Jan 2, on Jan. 4 in Arizona against the Coyotes, and in Colorado on Jan. 6 against the Avalanche. They'll have a week-long break before playing in Detroit against the Red Wings on Jan. 13.
Jets Trying Their Best to Cope with Down Time
While what was supposed to be a one-week break between Dec. 19 and Dec. 27 was a positive development —given it would give interim head coach Dave Lowry more time to implement changes after Paul Maurice stepped down on Dec. 17 — it's a question mark as to how well the Jets will play after two entire weeks off.
Related: Jets' Unexpected Week Off Comes at the Perfect Time
Lowry has been practicing the team much harder than Maurice did, with hour-plus-long practices on Sunday, Monday, and Tuesday (Maurice's practices were usually no more than 40 minutes.) It's obvious Lowry is using the time off as a training camp to assess what he has and what needs changing for the club that came into the season considered a Stanley Cup contender but has underperformed.
New interim head coach Dave Lowry has been practicing his team hard during the two-week break. (Photo by Jonathan Kozub/NHLI via Getty Images)
"We've grinded a little harder than we normally would at this time of the year," Dave Lowry said Tuesday. "We want to make sure we take full advantage of the opportunity to use these practices and use them and do things with a purpose. And that's getting ready for our next game."
Whether going harder in practice will make up for the NHL forcing them to be off for so long — or whether the Jets have been put at a competitive disadvantage — remains to be seen.
February May Be Busy, But it All Depends on COVID (Again)
The hope was, with every NHL player but one fully vaccinated, all this pivoting and adjusting on the fly could be put in the past and everyone could enjoy a normal season. But this virus has been nothing if persistent and Omicron's transmissibility has once again thrown everything out of whack.
The Jets' next home game is scheduled for Jan. 15 against the Senators, but it doesn't seem likely that one will be played in front of a full house either, despite Manitoba's current health orders expiring Jan. 11.
Manitoba, like the rest of Canada, is setting records when it comes to raw case numbers as Omicron sweeps through at a rapid pace. Manitoba set another single-day case record Wednesday with 947 and had a five-day test-positivity rate of 24.2 per cent. Hospitalizations are also rising slightly.
The only way NHL hockey's going to be played at Canada Life Centre is if fans are allowed in the stands. (Photo by Darcy Finley/NHLI via Getty Images)
The hope is that the Omicron wave will have settled by February, and the Jets can make up the five homes games they lost with fans in the stands. They currently have no games scheduled between Feb. 1 and Feb. 23, due to the three-week gap originally created so NHLers could participate in the 2022 Winter Olympics in Beijing (the NHL announced Dec. 22 that players wouldn't be going.)
That would lead to a condensed stretch akin to what was seen during the 56-game 2020-21 campaign. But like that season, everything's once again at the mercy of COVID-19.
Declan Schroeder
Declan Schroeder is a 26-year-old communications specialist and freelance journalist in Winnipeg, Manitoba. He holds a diploma in Creative Communications with a major in journalism from Red River College and a bachelors in Rhetoric and Communications from the University of Winnipeg.
Deeply rooted in the city's hockey culture, the original Jets skipped town when he was two and the 2.0 version came onto the scene when he was 17.
Categories Winnipeg Jets Tags 2022 Winter Olympics, COVID-19, Dave Lowry, NHL Schedule
Blues Weekly: COVID List Expansion, Kyrou, Thomas & More