You collected the data and on your behalf, we will soon deliver it to your local roadside maintenance crews. With Great Lakes Restoration Initiative funding through the Environmental Protection Agency, the Ozaukee Washington Land Trust (OWLT) has partnered with SEWISC to schedule meetings with key representatives in more than 100 cities, towns and villages in Washington, Sheboygan, Ozaukee, Milwaukee, Racine and Kenosha Counties.
Over the next year, SEWISC representatives will meet with staff of each local government and deliver location and population size data for five invasive species which were recently mapped along roadsides through the efforts of more than 150 volunteers. Wild parsnip (Pastinaca sativa) was mapped by citizen scientists in 2012 while common and cut-leaved teasel (Dipsacus sylvestris and D. laciniatus), common reed grass (Phragmites australis) and Japanese knotweed (Polygonum cuspidatum) populations were the target of 2011 efforts. These surveys were funded through the US Forest Service and the Wisconsin Department of Natural Resources. Sheboygan, Washington, Ozaukee, Waukesha, Milwaukee, Walworth, Racine and Kenosha Counties donated township maps for our surveyors.
I n addition to the mapped data, SEWISC will deliver basic invasive species educational presentations along with draft long-term management plans. Each local government will be asked to adopt a final version of the plan and develop an annual budget for managing roadside invasive plants. The budgets will be used to help secure funding assistance if needed.
As part of this project, OWLT will prioritize and begin managing populations of Japanese knotweed and common reed grass. OWLT funding is also available for controlling populations of purple loosestrife (Lythrum salicaria) and lyme grass (Leymus arenarius). Please report locations of lyme grass and purple loosestrife to: Daniel Rieland at: . SEWISC will prioritize and control the mapped common and cut-leaved teasel populations in 2013.
Resident volunteers have mapped more than 4,500 populations of 5 invasive plant species which are rapidly spreading along southeastern Wisconsin roadways. This information will now be delivered to roadway managers along with management plans and funding options.
In 2005 Governor James Doyle demonstrated a firm commitment to address the issue of invasive species in Wisconsin by creating the Wisconsin Council on Invasive Species and by declaring June of that year the first annual Invasive Species Awareness Month. For each of the past 8 years, that tradition has continued in an effort to raise awareness about non-native invasive plants and animals.
Stay tuned as implementation efforts proceed!
Last summer we partnered with Anna Moyer, WDNR Aquatic Invasive Species Specialist, to select locations for biocontrol beetle release. Unfortunately, the beetle supply was not large enough to treat every purple loosestrife population in the SEWISC region, and Anna returned this spring to help create a beetle nursery at the University of Wisconsin-Field Station in Saukville. The Ozaukee Washington Land Trust (OWLT) graciously donated 20 purple loosestrife plants, potting soil and netting. SEWISC members and volunteers Jim Reinartz, Melissa Warner, Jim Hooten and Ryan Fenley ( pictured right) joined Anna to pot the plants needed to raise beetles that will be released later this year in Cedarburg Bog, Little Cedar Lake, Ackerman's Grove, Caledonia, Long Lake and select OWLT properties.
SEWISC and Johnson's Nursery Team up!


text:
using TGC.Core.BoundingVolumes;
using TGC.Core.Collision;
using TGC.Core.Mathematica;

namespace TGC.Examples.Collision.SphereCollision
{
    /// <summary>
    ///     Collider BoundingBox
    /// </summary>
    public class BoundingBoxCollider : Collider
    {
        /// <summary>
        ///     BoundingBox
        /// </summary>
        public TgcBoundingAxisAlignBox Aabb { get; set; }

        /// <summary>
        ///     Crear Collider a partir de BoundingBox.
        ///     Crea el BoundingSphere del Collider.
        /// </summary>
        /// <param name="mesh">BoundingBox</param>
        /// <returns>Collider creado</returns>
        public static BoundingBoxCollider fromBoundingBox(TgcBoundingAxisAlignBox aabb)
        {
            var collider = new BoundingBoxCollider();
            collider.Aabb = aabb;
            collider.BoundingSphere = TgcBoundingSphere.computeFromPoints(aabb.computeCorners()).toClass();
            return collider;
        }

        /// <summary>
        ///     Colisiona un BoundingSphere en movimiento contra el BoundingBox.
        ///     Si hay colision devuelve el instante t de colision mas proximo y el punto q de colision mas cercano
        /// </summary>
        /// <param name="sphere">BoundingSphere</param>
        /// <param name="movementVector">movimiento del BoundingSphere</param>
        /// <param name="t">Menor instante de colision</param>
        /// <param name="q">Punto mas cercano de colision</param>
        /// <param name="n">Normal de la cara colisionada</param>
        /// <returns>True si hay colision</returns>
        public override bool intersectMovingSphere(TgcBoundingSphere sphere, TGCVector3 movementVector,
            TgcBoundingSphere movementSphere, out float t, out TGCVector3 q, out TGCVector3 n)
        {
            t = -1f;
            q = TGCVector3.Empty;
            n = TGCVector3.Empty;

            // Compute the AABB resulting from expanding b by sphere radius r
            var e = Aabb.toStruct();
            e.min.X -= sphere.Radius;
            e.min.Y -= sphere.Radius;
            e.min.Z -= sphere.Radius;
            e.max.X += sphere.Radius;
            e.max.Y += sphere.Radius;
            e.max.Z += sphere.Radius;

            // Intersect ray against expanded AABB e. Exit with no intersection if ray
            // misses e, else get intersection point p and time t as result
            TGCVector3 p;
            var ray = new TgcRay.RayStruct();
            ray.origin = sphere.Center;
            ray.direction = movementVector;
            if (!intersectRayAABB(ray, e, out t, out p) || t > 1.0f)
                return false;

            // Compute which min and max faces of b the intersection point p lies
            // outside of. Note, u and v cannot have the same bits set and
            // they must have at least one bit set among them
            var i = 0;
            var sign = new int[3];
            if (p.X < Aabb.PMin.X)
            {
                sign[0] = -1;
                i++;
            }
            if (p.X > Aabb.PMax.X)
            {
                sign[0] = 1;
                i++;
            }
            if (p.Y < Aabb.PMin.Y)
            {
                sign[1] = -1;
                i++;
            }
            if (p.Y > Aabb.PMax.Y)
            {
                sign[1] = 1;
                i++;
            }
            if (p.Z < Aabb.PMin.Z)
            {
                sign[2] = -1;
                i++;
            }
            if (p.Z > Aabb.PMax.Z)
            {
                sign[2] = 1;
                i++;
            }

            //Face
            if (i == 1)
            {
                n = new TGCVector3(sign[0], sign[1], sign[2]);
                q = sphere.Center + t * movementVector - sphere.Radius * n;
                return true;
            }

            // Define line segment [c, c+d] specified by the sphere movement
            var seg = new Segment(sphere.Center, sphere.Center + movementVector);

            //Box extent and center
            var extent = Aabb.calculateAxisRadius();
            var center = Aabb.PMin + extent;

            //Edge
            if (i == 2)
            {
                //Generar los dos puntos extremos del Edge
                float[] extentDir = { sign[0], sign[1], sign[2] };
                var zeroIndex = sign[0] == 0 ? 0 : (sign[1] == 0 ? 1 : 2);
                extentDir[zeroIndex] = 1;
                var capsuleA = center + new TGCVector3(extent.X * extentDir[0], extent.Y * extentDir[1], extent.Z * extentDir[2]);
                extentDir[zeroIndex] = -1;
                var capsuleB = center + new TGCVector3(extent.X * extentDir[0], extent.Y * extentDir[1], extent.Z * extentDir[2]);

                //Colision contra el Edge hecho Capsula
                if (intersectSegmentCapsule(seg, new Capsule(capsuleA, capsuleB, sphere.Radius), out t))
                {
                    n = new TGCVector3(sign[0], sign[1], sign[2]);
                    n.Normalize();
                    q = sphere.Center + t * movementVector - sphere.Radius * n;
                    return true;
                }
            }

            //Vertex
            if (i == 3)
            {
                var tmin = float.MaxValue;
                var capsuleA = center + new TGCVector3(extent.X * sign[0], extent.Y * sign[1], extent.Z * sign[2]);
                TGCVector3 capsuleB;

                capsuleB = center + new TGCVector3(extent.X * -sign[0], extent.Y * sign[1], extent.Z * sign[2]);
                if (intersectSegmentCapsule(seg, new Capsule(capsuleA, capsuleB, sphere.Radius), out t))
                    tmin = TgcCollisionUtils.min(t, tmin);

                capsuleB = center + new TGCVector3(extent.X * sign[0], extent.Y * -sign[1], extent.Z * sign[2]);
                if (intersectSegmentCapsule(seg, new Capsule(capsuleA, capsuleB, sphere.Radius), out t))
                    tmin = TgcCollisionUtils.min(t, tmin);

                capsuleB = center + new TGCVector3(extent.X * sign[0], extent.Y * sign[1], extent.Z * -sign[2]);
                if (intersectSegmentCapsule(seg, new Capsule(capsuleA, capsuleB, sphere.Radius), out t))
                    tmin = TgcCollisionUtils.min(t, tmin);

                if (tmin == float.MaxValue) return false; // No intersection

                t = tmin;
                n = new TGCVector3(sign[0], sign[1], sign[2]);
                n.Normalize();
                q = sphere.Center + t * movementVector - sphere.Radius * n;
                return true; // Intersection at time t == tmin
            }

            return false;
        }

        /// <summary>
        ///     Detectar colision entre un Segmento de recta y una Capsula.
        /// </summary>
        /// <param name="seg">Segmento</param>
        /// <param name="capsule">Capsula</param>
        /// <param name="t">Menor instante de colision</param>
        /// <returns>True si hay colision</returns>
        private bool intersectSegmentCapsule(Segment seg, Capsule capsule, out float t)
        {
            var ray = new TgcRay.RayStruct();
            ray.origin = seg.a;
            ray.direction = seg.dir;

            if (intersectRayCapsule(ray, capsule, out t))
            {
                if (t >= 0.0f && t <= seg.length)
                {
                    t /= seg.length;
                    return true;
                }
            }

            return false;
        }

        /// <summary>
        ///     Detectar colision entre un Ray y una Capsula
        ///     Basado en: http://www.geometrictools.com/LibMathematics/Intersection/Wm5IntrLine3Capsule3.cpp
        /// </summary>
        /// <param name="ray">Ray</param>
        /// <param name="capsule">Capsula</param>
        /// <param name="t">Menor instante de colision</param>
        /// <returns>True si hay colision</returns>
        private bool intersectRayCapsule(TgcRay.RayStruct ray, Capsule capsule, out float t)
        {
            t = -1;
            var origin = ray.origin;
            var dir = ray.direction;

            // Create a coordinate system for the capsule.  In this system, the
            // capsule segment center C is the origin and the capsule axis direction
            // W is the z-axis.  U and V are the other coordinate axis directions.
            // If P = x*U+y*V+z*W, the cylinder containing the capsule plane is
            // x^2 + y^2 = r^2, where r is the capsule radius.  The finite cylinder
            // that makes up the capsule minus its hemispherical end caps has z-values
            // |z| <= e, where e is the extent of the capsule segment.  The top
            // hemisphere cap is x^2+y^2+(z-e)^2 = r^2 for z >= e, and the bottom
            // hemisphere cap is x^2+y^2+(z+e)^2 = r^2 for z <= -e.
            var U = capsule.segment.dir;
            var V = U;
            var W = U;
            generateComplementBasis(ref U, ref V, W);
            var rSqr = capsule.radius * capsule.radius;
            var extent = capsule.segment.extent;

            // Convert incoming line origin to capsule coordinates.
            var diff = origin - capsule.segment.center;
            var P = new TGCVector3(TGCVector3.Dot(U, diff), TGCVector3.Dot(V, diff), TGCVector3.Dot(W, diff));

            // Get the z-value, in capsule coordinates, of the incoming line's unit-length direction.
            var dz = TGCVector3.Dot(W, dir);
            if (FastMath.Abs(dz) >= 1f - float.Epsilon)
            {
                // The line is parallel to the capsule axis.  Determine whether the line intersects the capsule hemispheres.
                var radialSqrDist = rSqr - P.X * P.X - P.Y * P.Y;
                if (radialSqrDist < 0f)
                {
                    // Line outside the cylinder of the capsule, no intersection.
                    return false;
                }

                // line intersects the hemispherical caps
                var zOffset = FastMath.Sqrt(radialSqrDist) + extent;
                if (dz > 0f)
                {
                    t = -P.Z - zOffset;
                }
                else
                {
                    t = P.Z - zOffset;
                }
                return true;
            }

            // Convert incoming line unit-length direction to capsule coordinates.
            var D = new TGCVector3(TGCVector3.Dot(U, dir), TGCVector3.Dot(V, dir), dz);

            // Test intersection of line P+t*D with infinite cylinder x^2+y^2 = r^2.
            // This reduces to computing the roots of a quadratic equation.  If
            // P = (px,py,pz) and D = (dx,dy,dz), then the quadratic equation is
            //   (dx^2+dy^2)*t^2 + 2*(px*dx+py*dy)*t + (px^2+py^2-r^2) = 0
            var a0 = P.X * P.X + P.Y * P.Y - rSqr;
            var a1 = P.X * D.X + P.Y * D.Y;
            var a2 = D.X * D.X + D.Y * D.Y;
            var discr = a1 * a1 - a0 * a2;
            if (discr < 0f)
            {
                // Line does not intersect infinite cylinder.
                return false;
            }

            float root, inv, tValue, zValue;
            var quantity = 0;
            if (discr > float.Epsilon)
            {
                // Line intersects infinite cylinder in two places.
                root = FastMath.Sqrt(discr);
                inv = 1f / a2;
                tValue = (-a1 - root) * inv;
                zValue = P.Z + tValue * D.Z;
                if (FastMath.Abs(zValue) <= extent)
                {
                    quantity++;
                    t = tValue;
                }

                tValue = (-a1 + root) * inv;
                zValue = P.Z + tValue * D.Z;
                if (FastMath.Abs(zValue) <= extent)
                {
                    quantity++;
                    t = TgcCollisionUtils.min(t, tValue);
                }

                if (quantity == 2)
                {
                    // Line intersects capsule plane in two places.
                    return true;
                }
            }
            else
            {
                // Line is tangent to infinite cylinder.
                tValue = -a1 / a2;
                zValue = P.Z + tValue * D.Z;
                if (FastMath.Abs(zValue) <= extent)
                {
                    t = tValue;
                    return true;
                }
            }

            // Test intersection with bottom hemisphere.  The quadratic equation is
            // t^2 + 2*(px*dx+py*dy+(pz+e)*dz)*t + (px^2+py^2+(pz+e)^2-r^2) = 0
            // Use the fact that currently a1 = px*dx+py*dy and a0 = px^2+py^2-r^2.
            // The leading coefficient is a2 = 1, so no need to include in the
            // construction.
            var PZpE = P.Z + extent;
            a1 += PZpE * D.Z;
            a0 += PZpE * PZpE;
            discr = a1 * a1 - a0;
            if (discr > float.Epsilon)
            {
                root = FastMath.Sqrt(discr);
                tValue = -a1 - root;
                zValue = P.Z + tValue * D.Z;
                if (zValue <= -extent)
                {
                    quantity++;
                    t = TgcCollisionUtils.min(t, tValue);
                    if (quantity == 2)
                    {
                        return true;
                    }
                }

                tValue = -a1 + root;
                zValue = P.Z + tValue * D.Z;
                if (zValue <= -extent)
                {
                    quantity++;
                    t = TgcCollisionUtils.min(t, tValue);
                    if (quantity == 2)
                    {
                        return true;
                    }
                }
            }
            else if (FastMath.Abs(discr) <= float.Epsilon)
            {
                tValue = -a1;
                zValue = P.Z + tValue * D.Z;
                if (zValue <= -extent)
                {
                    quantity++;
                    t = TgcCollisionUtils.min(t, tValue);
                    if (quantity == 2)
                    {
                        return true;
                    }
                }
            }

            // Test intersection with top hemisphere.  The quadratic equation is
            // t^2 + 2*(px*dx+py*dy+(pz-e)*dz)*t + (px^2+py^2+(pz-e)^2-r^2) = 0
            // Use the fact that currently a1 = px*dx+py*dy+(pz+e)*dz and
            // a0 = px^2+py^2+(pz+e)^2-r^2.  The leading coefficient is a2 = 1, so
            // no need to include in the construction.
            a1 -= 2f * extent * D.Z;
            a0 -= 4 * extent * P.Z;
            discr = a1 * a1 - a0;
            if (discr > float.Epsilon)
            {
                root = FastMath.Sqrt(discr);
                tValue = -a1 - root;
                zValue = P.Z + tValue * D.Z;
                if (zValue >= extent)
                {
                    quantity++;
                    t = TgcCollisionUtils.min(t, tValue);
                    if (quantity == 2)
                    {
                        return true;
                    }
                }

                tValue = -a1 + root;
                zValue = P.Z + tValue * D.Z;
                if (zValue >= extent)
                {
                    quantity++;
                    t = TgcCollisionUtils.min(t, tValue);
                    if (quantity == 2)
                    {
                        return true;
                    }
                }
            }
            else if (FastMath.Abs(discr) <= float.Epsilon)
            {
                tValue = -a1;
                zValue = P.Z + tValue * D.Z;
                if (zValue >= extent)
                {
                    quantity++;
                    t = TgcCollisionUtils.min(t, tValue);
                    if (quantity == 2)
                    {
                        return true;
                    }
                }
            }

            return quantity > 0;
        }

        /// <summary>
        ///     Input W must be a unit-length vector.  The output vectors {U,V} are
        ///     unit length and mutually perpendicular, and {U,V,W} is an orthonormal basis.
        /// </summary>
        private void generateComplementBasis(ref TGCVector3 u, ref TGCVector3 v, TGCVector3 w)
        {
            float invLength;

            if (FastMath.Abs(w.X) >= FastMath.Abs(w.Y))
            {
                // W.x or W.z is the largest magnitude component, swap them
                invLength = FastMath.InvSqrt(w.X * w.X + w.Z * w.Z);
                u.X = -w.Z * invLength;
                u.Y = 0f;
                u.Z = +w.X * invLength;
                v.X = w.Y * u.Z;
                v.Y = w.Z * u.X - w.X * u.Z;
                v.Z = -w.Y * u.X;
            }
            else
            {
                // W.y or W.z is the largest magnitude component, swap them
                invLength = FastMath.InvSqrt(w.Y * w.Y + w.Z * w.Z);
                u.X = 0f;
                u.Y = +w.Z * invLength;
                u.Z = -w.Y * invLength;
                v.X = w.Y * u.Z - w.Z * u.Y;
                v.Y = -w.X * u.Z;
                v.Z = w.X * u.Y;
            }
        }

        /// <summary>
        ///     Interseccion entre un Ray y un AABB
        /// </summary>
        /// <param name="ray">Ray</param>
        /// <param name="aabb">AABB</param>
        /// <param name="tmin">Instante minimo de colision</param>
        /// <param name="q">Punto minimo de colision</param>
        /// <returns>True si hay colision</returns>
        private bool intersectRayAABB(TgcRay.RayStruct ray, TgcBoundingAxisAlignBox.AABBStruct aabb, out float tmin,
            out TGCVector3 q)
        {
            var aabbMin = TgcCollisionUtils.toArray(aabb.min);
            var aabbMax = TgcCollisionUtils.toArray(aabb.max);
            var p = TgcCollisionUtils.toArray(ray.origin);
            var d = TgcCollisionUtils.toArray(ray.direction);

            tmin = 0.0f; // set to -FLT_MAX to get first hit on line
            var tmax = float.MaxValue; // set to max distance ray can travel (for segment)
            q = TGCVector3.Empty;

            // For all three slabs
            for (var i = 0; i < 3; i++)
            {
                if (FastMath.Abs(d[i]) < float.Epsilon)
                {
                    // Ray is parallel to slab. No hit if origin not within slab
                    if (p[i] < aabbMin[i] || p[i] > aabbMax[i]) return false;
                }
                else
                {
                    // Compute intersection t value of ray with near and far plane of slab
                    var ood = 1.0f / d[i];
                    var t1 = (aabbMin[i] - p[i]) * ood;
                    var t2 = (aabbMax[i] - p[i]) * ood;
                    // Make t1 be intersection with near plane, t2 with far plane
                    if (t1 > t2) TgcCollisionUtils.swap(ref t1, ref t2);
                    // Compute the intersection of slab intersection intervals
                    tmin = TgcCollisionUtils.max(tmin, t1);
                    tmax = TgcCollisionUtils.min(tmax, t2);
                    // Exit with no collision as soon as slab intersection becomes empty
                    if (tmin > tmax) return false;
                }
            }
            // Ray intersects all 3 slabs. Return point (q) and intersection t value (tmin)
            q = ray.origin + ray.direction * tmin;
            return true;
        }

        /// <summary>
        ///     Estructura para segmento de recta
        /// </summary>
        private struct Segment
        {
            public Segment(TGCVector3 a, TGCVector3 b)
            {
                this.a = a;
                this.b = b;

                dir = b - a;
                center = (a + b) * 0.5f;
                length = dir.Length();
                extent = length * 0.5f;
                dir.Normalize();
            }

            public readonly TGCVector3 a;
            public TGCVector3 b;

            public readonly TGCVector3 center;
            public readonly TGCVector3 dir;
            public readonly float extent;
            public readonly float length;
        }

        /// <summary>
        ///     Estructura para Capsula
        /// </summary>
        private struct Capsule
        {
            public Capsule(TGCVector3 a, TGCVector3 b, float radius)
            {
                segment = new Segment(a, b);
                this.radius = radius;
            }

            public Segment segment;
            public readonly float radius;
        }

        /*
        private bool intersectSegmentCapsule(Segment seg, Capsule capsule, out float t)
        {
            TgcRay.RayStruct ray = new TgcRay.RayStruct();
            ray.origin = seg.a;
            ray.direction = seg.b - seg.a;

            float minT = float.MaxValue;
            if (intersectSegmentCylinderNoEndcap(seg.a, seg.b, capsule.segment.a, capsule.segment.b, capsule.radius, out t))
            {
                minT = TgcCollisionUtils.min(t, minT);
            }

            TgcBoundingSphere.SphereStruct s = new TgcBoundingSphere.SphereStruct();
            s.center = capsule.segment.a;
            s.radius = capsule.radius;
            if (intersectRaySphere(ray, s, out t) && t <= 1.0f)
            {
                minT = TgcCollisionUtils.min(t, minT);
            }

            s.center = capsule.segment.b;
            if (intersectRaySphere(ray, s, out t) && t <= 1.0f)
            {
                minT = TgcCollisionUtils.min(t, minT);
            }

            if (minT != float.MaxValue)
            {
                t = minT;
                return true;
            }
            return false;
        }

        /// <summary>
        /// Indica si un Ray colisiona con un BoundingSphere.
        /// </summary>
        public static bool intersectRaySphere(TgcRay.RayStruct ray, TgcBoundingSphere.SphereStruct sphere, out float t)
        {
            t = -1;

            TGCVector3 m = ray.origin - sphere.center;
            float b = TGCVector3.Dot(m, ray.direction);
            float c = TGCVector3.Dot(m, m) - sphere.radius * sphere.radius;
            // Exit if r's origin outside s (c > 0) and r pointing away from s (b > 0)
            if (c > 0.0f && b > 0.0f) return false;
            float discr = b * b - c;
            // A negative discriminant corresponds to ray missing sphere
            if (discr < 0.0f) return false;
            // Ray now found to intersect sphere, compute smallest t value of intersection
            t = -b - FastMath.Sqrt(discr);
            // If t is negative, ray started inside sphere so clamp t to zero
            if (t < 0.0f) t = 0.0f;
            return true;
        }

        /// <summary>
        /// Indica si un cilindro colisiona con un segmento.
        /// El cilindro se especifica con dos puntos centrales "cylinderInit" y "cylinderEnd" que forman una recta y con un radio "radius".
        /// Si hay colision se devuelve el instante de colision "t".
        /// No chequear EndCaps
        /// </summary>
        /// <param name="segmentInit">Punto de inicio del segmento</param>
        /// <param name="segmentEnd">Punto de fin del segmento</param>
        /// <param name="cylinderInit">Punto inicial del cilindro</param>
        /// <param name="cylinderEnd">Punto final del cilindro</param>
        /// <param name="radius">Radio del cilindro</param>
        /// <param name="t">Instante de colision</param>
        /// <returns>True si hay colision</returns>
        private static bool intersectSegmentCylinderNoEndcap(TGCVector3 segmentInit, TGCVector3 segmentEnd, TGCVector3 cylinderInit, TGCVector3 cylinderEnd, float radius, out float t)
        {
            t = -1;

            TGCVector3 d = cylinderEnd - cylinderInit, m = segmentInit - cylinderInit, n = segmentEnd - segmentInit;
            float md = TGCVector3.Dot(m, d);
            float nd = TGCVector3.Dot(n, d);
            float dd = TGCVector3.Dot(d, d);
            // Test if segment fully outside either endcap of cylinder
            if (md < 0.0f && md + nd < 0.0f) return false; // Segment outside 'p' side of cylinder
            if (md > dd && md + nd > dd) return false; // Segment outside 'q' side of cylinder
            float nn = TGCVector3.Dot(n, n);
            float mn = TGCVector3.Dot(m, n);
            float a = dd * nn - nd * nd;
            float k = TGCVector3.Dot(m, m) - radius * radius;
            float c = dd * k - md * md;
            if (FastMath.Abs(a) < float.Epsilon)
            {
                // Segment runs parallel to cylinder axis
                if (c > 0.0f) return false; // 'a' and thus the segment lie outside cylinder
                // Now known that segment intersects cylinder; figure out how it intersects
                if (md < 0.0f) t = -mn / nn; // Intersect segment against 'p' endcap
                else if (md > dd) t = (nd - mn) / nn; // Intersect segment against 'q' endcap
                else t = 0.0f; // 'a' lies inside cylinder
                return true;
            }
            float b = dd * mn - nd * md;
            float discr = b * b - a * c;
            if (discr < 0.0f) return false; // No real roots; no intersection
            t = (-b - FastMath.Sqrt(discr)) / a;
            if (t < 0.0f || t > 1.0f) return false; // Intersection lies outside segment

            //No chequear EndCaps

            // Segment intersects cylinder between the endcaps; t is correct
            return true;
        }
        */
    }
}

redpajama_set_name: RedPajamaGithub


Capture the attention of the right crowd when you hand out the Year Neon Lights Postcard before your big party. Printed on high quality card stock, these postcards feature a background of gorgeous pink and blue lights, with your event info listed on seventeen lines. Combine with a Matching Event Kit for more party promo materials!
Send a bold message with the right postcard from TicketPrinting.com.


text:
On October 9th, Vancouver-based trio We Are The City (keyboardist/vocalist Cayne McKenzie, drummer Andrew Huculiak, and guitarist David Menzel) announced that the band had died from "natural causes":
"Nothing goes on forever and it is important for us to recognize that the band reached its peak and it is time to call it. We Are The City has been a glorious chapter for the three of us. What an awesome ride," the band writes in a statement. On October 23rd, We Are The City will host one final event, "RIP We Are The City: A Live Streamed Celebration of Life" which you can buy a ticket for here.
Michael Thomas and Laura Stanley (formerly of the defunct music blog Grayowl Point) have been fans of We Are The City since the band's beginning and so they decided to come together to remember, reflect, and to scream, one last time: "That's it! That's all!"
Laura Stanley: My memory fails me a bit, and so I don't exactly remember the first time I heard We Are The City. Their debut record, In a Quiet World,came out in 2009, so it must have been through CBC Radio 3. I know you were a big Radio 3 fan as well, so you probably remember that alongside We Are The City, there was a pretty big boom of BC-based acts that year playing on Radio 3: Dan Mangan, Said The Whale, and Hannah Georgas immediately come to mind.
We Are The City's song "There Are Very Tiny Beasts In The Ground", — the first We Are The City song I heard and one that is still a favourite of mine — stood out to me because it sounded completely different from what those other BC bands were doing but also from anything that I was listening to at the time. It is mostly rooted in piano-pop but there's a punkish, rough energy to the song as well. There's that line McKenzie repeats: "she said, 'let me clean my teeth and I'll be right down'". It's kind of a goofy lyric, but it's delivered with such an intense staccato — underlined by Huculiak's steadfastly impeccable drumming — that it sounds so exciting.
After "There Are Very Tiny Beasts In The Ground" sparked my curiosity about We Are The City, I am pretty sure that I downloaded the rest of In a Quiet World via Limewire (sorry!) in my university dorm room. Like "There Are Very Tiny Beasts In The Ground", the rest of the album had a unique pop-rock hue about it, but when I revisited the album recently, right before writing this to you, In a Quiet World feels almost tame compared to what the band goes on to create.
Michael Thomas: I wish I could say I have a less mundane way of first hearing We Are The City, but it was literally from a promo I received early on in the days of Grayowl Point. Still, I recall so clearly the chills I felt during the album's intro when McKenzie sings, "I had my health/But now I'm ill." The simplicity and quietness with which he sang the first line and the passion of the second had me hooked. That's always been a strength of this band: the one-two punch of softness and passion, most recently in RIP's "Killer B-Side Music."
It's funny you mention that line from "Tiny Beasts", because that was the song that guaranteed I would be listening to this band for a long time yet. It's sung with such sincerity but is so incongruous to the vibe of the song that it becomes unforgettable. I did not have the pleasure of seeing We Are The City live for the first time until their Violent days, but I'm just imagining a crowd of people chanting, "Let me clean my teeth and I'll be right down." It's delightful.
It's interesting looking back on In a Quiet World as a window into what they would become. There's certainly a lot of complexity to be had, like in the epic "Astronomers," but you're right, they manage to evolve so many times in the next ten years that I don't think anyone listening to them in 2009 could have even imagined the warped excess of Above Club or the experimentation of AT NIGHT. Their debut album also firmly established their conversations with God that continue right until the end of their career. Were they the first "religious people but not religious music" band you stumbled upon, Laura?
It's also interesting to see how this led to High School. I remember in 2009 thinking that "Peso-Loving Squid" was a strange song to include on this album, but now I can see the playfulness of this song fitting in quite well with High School.
Laura: High School IS a playful release but it can be quite brutal too, which in many ways feels in line with young adulthood. The opening almost guttural-sounding guitar chugs on "Get Happy" always feel ominous to me, a feeling that gets stronger as the band winds their way to "1987" and "An Angel In White." On the other hand, "Happy New Year" — a song I listen to every New Year's Eve — is so buoyant and has a youthful energy to it which I love so much.
This is an interesting time for We Are The City because Menzel left and Blake Enemark was filling in. But despite the (brief) lineup change, I think this trio also has fantastic chemistry. I feel like this was a big turning point for the band creatively, what with the music video series that accompanied High School, which really took the visual side of the band to another level.I'm glad you mentioned the religious aspect of the band. It's funny — and maybe this shows how passive a listener I can be sometimes, or maybe it was the band's intent — but I didn't fully pick up on the spirituality of their lyrics until their 2013 record Violent. Sufjan Stevens (and his record Seven Swans) was my introduction to religious songwriters who make music that's not labelled "Christian music." So no, We Are The City wasn't the first "religious-people-but-not-religious-music" band that I listened to, but compared to the quiet musing of Stevens, We Are The City's approach on Violent — a boisterously emotional record — was something entirely new for me. The anxiety within "King David" in particular always moves me: "I'm afraid to go to hell. David, am I going to hell?"
We have exchanged a lot of excited messages about We Are The City records over the years — these included, hah! — but for some reason, I specifically remember how blown away we were when Violent came out. Do you remember that feeling too?
Michael: We must have exchanged some excited messages about Violent when it first came out, but sadly I cannot find those initial reactions in my searches. Either way, yes, Violent was and continues to be a force. "Blown away" is a good phrase because this record did that to me in multiple ways. The increased experimentation with form and the particularly emotionally charged lyrics were one aspect; the sheer volume of sound was the other. I think this would have been the point where their live shows started to pack a walloping low end that could very well blow out your eardrums. I remember hearing "Bottom of the Lake" for the first time and feeling sheer awe.
You mentioned the visual side of We Are The City and I've always been fascinated by how the band, from High School onward, added a tangible element to their albums. Violent had its accompanying feature film of the same name; Above Club had an unnerving "livestream" accompanying its release; RIP had the band opening an "RIP Store" to encourage and help creative people. They're also acutely aware of their presence when playing live; when I saw them touring Violent, it felt like each of their movements had a distinct purpose. It was hypnotic.
Anyway, Violent itself: I imagine this is your favourite of their records? I think that this album is a masterpiece, and I don't use that word lightly. There are so many huge and small moments that feel inextricably intertwined. You mentioned "King David", probably one of the quietest overall songs on the record, which really makes that line you quoted all that more of a gut punch. And speaking of gut punches, I think we've talked at length and multiple times how "Friends Hurt" may be one of the most emotionally affecting songs we have heard or will ever hear. These illuminating moments pair nicely with the heavy instrumentation, like the explosive end of "20 Ft. Up" or the heavy electronics in "Legs Give Out." Huculiak's titanic drumming is also inescapable on Violent: I can't imagine "Baptism" having the same impact without the distinctive percussion. Huculiak even gets a little showcase of his own with the 38-second "Passing of the Peace."
I imagine you have some things you want to say about Violent as well, but I'd also like to ask you about Above Club and all of its glorious excess. I found it thrilling in a completely different way than Violent, and its "livestream" may have been one of We Are The City's most brilliant moves.
Laura: For my favourite We Are The City album, it's definitely a toss-up between Violent and Above Club. Violent is one of those rare albums where I think every song is great. It is We Are The City at their tightest and most focused. "Friends Hurt" and "Everything Changes" are two songs that arrived at a time (that I haven't outgrown, tbh) where I was dizzy from all of the changes that were going on in my life, and they both offered affirmations that I was not alone.
And then two years later, We Are The City released Above Club — a gnarly pop-rock and synth-infused album — and all my expectations about the kind of records that the band makes were thrown out the window. I think We Are The City could have put out three more records that sounded like Violent and I would have been okay with that, but I'm sure the band would have felt the opposite. Above Club, as you say, is full of glorious excess but it never feels out of control, don't you think? Even the squealing instrumental mess of "Sign My Name Like QUEEN" manages to match McKenzie's confidently delivered sass. My favourite song, "Lovers in All Things," remains the only song that I know of that combines impassioned rock with what sounds like a recording of club music made by somebody standing outside of a club and a deeply spiritual mantra: "Read the Bible, believe the Bible, need the Bible, need the Spirit."
I found this Facebook message from you from 2015 that I think will make you smile: "Also this We Are The City song is killer. I am always nervous when a band returns with new music that has a song with "Dance" in the title because I assume they've gone into a shitty mainstream pop direction but I never need to worry about We Are The City."
Michael: While I don't specifically remember writing that message, I can definitely remember seeing "Keep on Dancing" as a title and being a little nervous. But then — as I should have anticipated — Above Club defied all my expectations. The album was definitely as maximalist as they could get: I still feel a kind of musical high every time I hear "Heavy as a Brick". It's a completely disorienting experience in the best way.
The "livestream" that led up to the release of Above Club added to the disorienting nature of the album. What was initially thought to be a genuine livestream was actually a carefully planned performance, resulting in what might be the longest film of all time. These kinds of ambitious, creative endeavours make We Are the City's legacy all the richer.
A few years later We Are The City announced two albums simultaneously, though there would be a year and a bit separating AT NIGHT and RIP. I'll be honest: my initial reaction to AT NIGHT was just plain bafflement. Perhaps intentionally so, it's a lot more disjointed than the band's other works, but revisiting it for this piece, I'm actually finding it to be full of interesting ideas. You've drawn a lot of attention to their powerful lyricism, and the opening of "DARK HORIZON" really speaks to me: "You have been doubting yourself, you've been guarding yourself, and hiding yourself somewhere out of sight." The song is one of the gentle coves in a sea of more difficult pieces, like the explosive "DELTA LAB" or the stuttering "CHOICE IS UNLIKE ANYTHING".
I'm not going to go on about RIP since I have already done so here, but I'm also curious as to what you think is next for them. Reading into their notice of death of "natural causes," they also say, "But we'll see you again soon. The future is wide open." I will not at all be surprised if they change their name and start doing punk music or something. We Are All The City.
Laura: I remember you being baffled by AT NIGHT! I had a similar, immediate disconnection with this record for the exact reason you mentioned: it felt too disjointed. But I'm so glad that you mentioned "DARK HORIZON" because that was the one song on this record that made me return to it again and again and helped me to appreciate all of its jagged fragments. You know my fondness for soft sounds very well, so it's probably not surprising to you that "DARK HORIZON" is my favourite song because it has one of the album's quietest moments: the opening line that you highlighted. I also love songs that include a dance proposal in their lyrics, and this track has a hell of a good one: "When we dance, can we dance until the bar closes down?" A few other AT NIGHT highlights for me include the plainspoken romance of "WHEN I DREAM, I DREAM OF YOU" and the screechy distortion that takes over McKenzie's tender worries on "TO GET IT RIGHT YOU HAVE TO GET IT WRONG SOMETIMES." But, hilariously, I think that We Are The City summarize this album themselves: at the very end of the instrumental interlude "DELTA LAB" — a haze of drums and synths and maybe guitar but I can't really tell — somebody says "that's a weird one!"
I saw We Are The City play in Toronto in 2018 at Adelaide Hall, a cramped venue with an oddly low ceiling. The band played the then-unreleased "Killer B-Side Music" from RIP, and I thought the ceiling was going to come down because of the wall of sound (as found in the song's chorus) the trio unleashed. I'm so happy to have that memory. I know that when RIP was released, the band said that it might be their last, and I think that it is a great farewell. It's a record about change and death and it has a peculiar vibe to it that We Are The City pulls off so well.
I think the future holds a solo release or two and probably some films. And, most likely, friends like us re-listening to (or discovering for the first time) We Are The City's records and eagerly writing to each other about them.

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: How to set the scope of `this`on Kendo UI's autocomplete template? Kendo UI's template API lets you use JavaScript in the template. This is useful to customize the autocomplete template.
When the generated code runs, the scope of this is the Window object. I want to set the scope to the autocomplete instance, for example, to use the _prev value to customize the results.
On this demo code, to change the color of the customer's name to red on the substring equivalent to the search text, you can search for the autocomplete instance  within the template code. On the given sample, just change the template property to
 template:
    '' +
    ''+
    '# var searchText= $("\\#customers").data("kendoAutoComplete")._prev; #'+
    '# data.coloredName= '+
        '""  '   +
         '+ data.ContactName.substring(0, searchText.length) +'   +
         '"" + data.ContactName.substring(searchText.length);  #'+
        '
#= data.coloredName #
'+
        '
#: data.CompanyName #
'+
    '',

However, if I can't use the $() "search", I would want to do it by setting the scope of the function generated by the template. Is it possible?

A: It is possible:
var autocomplete = $("#customers").kendoAutoComplete({
   // standard options, not the template
}).data("kendoAutoComplete");

var templateHtml = 'your template html using "this" here ...';
// compile the template from the html
var compiledTemplate = kendo.Template.compile(templateHtml);
// bind the template function to whatever you want, e.g. the autocomplete
var boundTemplate = compiledTemplate.bind(autocomplete);
//  set the template on the widget
autocomplete.setOptions({
    template: boundTemplate
});

(demo)
Note that any properties you may have on the context will get overridden by the data that is passed to the template, so you can't access those from the outer scope (see structure of the template function here).

redpajama_set_name: RedPajamaStackExchange


The sub-title of Karen F. McCarthy's highly readable The Other Irish: The Scots-Irish Rascals Who Made America sums up the book's tone and scope: "The Scots-Irish Rascals Who Made America." This is a general introduction to the Scots-Irish contribution to the history and culture of the United States, with special attention to their role in shaping the South. As the author puts it in her Preface, "In the South, one can't swing a muskrat without hitting a Scots-Irishman, but outside the South they are little known." Indeed, one could make the case that the Scots-Irish, even in the South, where their influence has been greatest, are barely known even to themselves. This book will help remedy that.
If you've ever heard someone say the South is the way it is because of the Scots-Irish, you may have wondered, What made the Scots-Irish the way they are? In a chapter entitled, "The Invasion Of The Irish," McCarthy presents a brief but emotionally engaging summary that will shed light on that question. Beginning in ancient times, the author relates how the warlike Dal Riata tribe raided, drank, and pillaged its way around Ireland and present-day Scotland. The Romans found them to be ungovernable. Later, the English fared somewhat better in establishing control over them, eventually dominating both Ireland and Scotland, though never able to turn them into profitable colonies. James I of England hit upon a plan that gave Scottish serfs lands in northern Ireland, which enabled the Scots to significantly better their lives, though the dispossessed Irish soon found themselves in poverty, which forced them to turn to their old raiding ways.
Following her general history of the Scots-Irish, McCarthy presents notable Americans of Scots-Irish descent. The remaining chapters organize their stories by vocation, including religion, the military, politics, music, literature, the interlocking legends of moonshine and stock car racing, and even the Space Race.
And what characters you will meet. In addition to the ones you'd expect, such as Andrew Jackson, Edgar Allan Poe, and Junior Johnson, you'll get to know other nation-building "rascals," such as Colin Layne, William Campbell, William Tennent, and James E. Webb.
In a heated moment when all things Southern are being not only vilified, but vigorously expunged from the national dialogue and even from the national history, it is encouraging to recall the essential role the South's most definitive ethnic group played in this nation's history. Even more heartening is this entertaining book's reminder of what we, as a people, have bravely faced and mastered, and can still stubbornly endure.
Good, concise, review. I just released a book in Scots-Irish field also. It is 'Finding the McCains, a Scots-Irish Odyssey.' Biography of a well known Scots-Irish family, i.e. the McCains of Mississippi (Senator John's tribe). The book a biography and memoir, and a account of how I used DNA to locate our cousins back in Ireland and Scotland. I read many Scots-Irish books in my research, but did not read Karen McCarthy's work. So, thanks for posting that, it does sound like a good read. My book available from Amazon or your local book shop.
Southern Cradle shows the distinct difference in the Southern Man and Puritan Yankee?
Thank you, and best of luck with Finding The McCains. It's encouraging to see so much interest in the Scots-Irish.
Adapting to the wilderness emphasized ancient distinctions between the two peoples. As McCarthy said, "This rapid transformation in appearance quickly set them apart from the wigs and buckles and frilly shirts of New England." The book's focus is on the lives and contributions of noted Scots-Irish of the North and South. But as you can guess, most are in the South.
We are so different and always will be, from the insane Northeast Puritans.
Why would anyone choose a blousy shirt, powdered wig, and women's makeup over buckskin?…….LOL!


If you do not want real wood siding on your home, use fiber cement siding instead. You can paint or stain fiber cement to give it the appearance you desire. Applying a stain to the fiber cement replicates the appearance of wood. The stain also prolongs the life of the fiber cement by preventing cracks, bubbles and blisters. You can reapply the stain as often as you would like to keep it the color that you desire.
Purchase a semitransparent stain made specifically for fiber cement.
Clean the fiber cement with a pressure washer that is set on a low setting, such as 1,500 pounds per square inch. You will lock in any dirt or mold on the fiber cement if you do not remove it before painting over it. If you do not own your own pressure washer, you can rent one or hire a company to clean the fiber cement for you. Follow the manufacturer's warnings before using a pressure cleaner on the siding. Some brands warn that a pressure washer may damage the siding, so you should instead use a hose and hand washing.
Allow the fiber cement to air-dry before continuing.
Stain the fiber cement by dipping a paintbrush, or paint roller, into the stain. Start at the highest point on the fiber cement and work your way down. When dipping the paintbrush, remove excess stain from the bristles. Apply a thin coat over the entire area.
Allow the stain to dry for about an hour.
Repeat Step 3 to apply a second coat. If the stain is still not the desired color, apply a third coat.
Allow the stain to air-dry.
You can also clean the surface of the fiber cement by using a hose and washing it by hand.
Follow the manufacturer's warnings on staining. Some brands require a different type of stain, such as a 100 percent latex stain, while others recommend that the siding should be stained only by the manufacturer.
Hay, Ashley. "How to Stain Fiber Cement." Home Guides | SF Gate, http://homeguides.sfgate.com/stain-fiber-cement-27665.html. Accessed 21 April 2019.
Does Fiber Cement Siding Insulate Better Than Vinyl?


text:
Students Soar at Dellrose
Dellrose scholars attend acclaimed schools in the well-regarded Waller Independent School District where they can flourish academically, athletically and socially in an intimate environment. Nurtured by highly trained faculty, they will emerge prepared for the challenges of higher education.
Discover Waller ISD
Waller ISD has fostered students for nearly 130 years, earning a reputation for academic and extracurricular excellence. Waller ISD schools compete for — and win — UIL area, regional and state awards in academics, fine arts and athletics. The 97 percent graduation rate is well above the state average. Waller ISD earned an "A" rating from the Texas Education Agency in 2019 for a second consecutive year.
Aided by a $71 million bond package that was passed in 2015, Waller ISD is poised to add campuses as the district population expands — including the construction of on-site elementary and middle schools within Dellrose.
Roberts Road Elementary
Roberts Road faculty and staff honor individual learning styles in a positive and nurturing environment. In 2017, the school was named a "Schools Transforming Learning" designated campus by the Principals' Institute for innovative educational programing, including bilingual classes and the WISD Dyslexia Services model. Students benefit from instruction in music, physical education and technology applications.
– Innovative Compact for Learning unites students, parents and teachers for an effective learning environment.
– Bilingual, Gifted and Talented and ESL classes are offered.
– Programs for students with autism, dyslexia and other conditions.
– Emphasis on technology with networked computers in every classroom.
– A strong PTO and active volunteer program contribute to the school's success.
Address: 24920 Zube Road, Hockley, Texas 77447
School Mascot: Bulldog
Principal: Amy Carranza
Asst. Principal: Amanda Thompson
Waller Junior High School
With a strong focus on academics, as well as a wide range of electives and extracurricular activities, Waller Bulldogs have many opportunities to shine. Teachers work collaboratively in departments and grade-level teams to create and deliver engaging, high-quality lessons, preparing students for the transition to Waller High School. Electives include choices in fine arts, foreign language, business, vocational, wellness, physical education and athletics. High school credit classes are offered.
– 2019 Distinctions in six categories: English Language Arts/Reading, Social Studies, Science, Comparative Academic Growth, Postsecondary Readiness and Comparative Closing the Gaps.
– Technology is integrated into all subject areas and three computer labs facilitate technology literacy.
– Seventh-grade boys were named 2018 Cross Country District Champions.
Address: 2402 Waller Street Waller, Texas 77484
Principal: Tanya Carrejo
Asst. Principal: Andre Brooks and Joel Poag
Waller High School
Waller High School is a winning combination of academics, electives and extracurricular activities. A range of Advanced Placement and dual credit classes are offered, and students achieve higher than average SAT and ACT scores. Waller Bulldogs excel in athletics and the arts, winning medals at UIL competitions and district championships. The graduation rate is 97 percent.
– The wide range of athletics offered includes football, baseball, basketball, boys' and girls' soccer, track, golf and Special Olympics.
– 2019 TEA Distinctions in Comparative Closing the Gaps.
– The Lady Bulldog Basketball Team ended the 2018 season as bi-district champions.
– The Career and Technical Education program offers students 20 certification opportunities and more than 70-course offerings. More than 33 percent of 2019 graduates earned industry certifications.
– Waller High School Rodeo Team member won a third Houston Livestock Show and Rodeo Championship in 2019.
Address: 20950 Field Store Road, Waller, Texas 77484
Principal: Stephanie Fletcher
Asst. Principal: Robert Kinney, Amy Weinert, Mindy Pepper, Kevin Byrd and Celestino Albarran


text:
Q: How do I change list item's background programatically? What I am currently trying to do is to change each row of the
ListView to a specific background.
I'm loading all the information from SQLite. I can load the picture next to the text, but I cannot put the image I wanna use to the specific row as a background.
ForthActivity.java
public class ForthActivty extends AppCompatActivity implements
     View.OnClickListener   {

     private EditText  pastetext;
     private ClipboardManager myClipboard;

     private ProgressDialog loading;
     protected ListView lv;
     protected ListAdapter adapter;
     SQLiteDatabase db;
     Cursor cursor;
     EditText et_db;

     @SuppressWarnings("deprecation")
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         setContentView(R.layout.activity_forth_activty);
         myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
         pastetext = (EditText) findViewById(R.id.textView1);

         db = (new DB_Resep(this)).getWritableDatabase();
         lv = (ListView) findViewById(R.id.lv);
         et_db = (EditText) findViewById(R.id.et);

         try {
             cursor = db.rawQuery("SELECT * FROM resep ORDER BY nama ASC", null);
             adapter = new SimpleCursorAdapter(this, R.layout.isi_lv, cursor,
                     new String[] { "nama", "bahan", "img" }, new int[] {
                     R.id.tv_nama, R.id.tvBahan, R.id.imV });
             lv.setAdapter(adapter);
             lv.setTextFilterEnabled(true);
             lv.setOnItemClickListener(new OnItemClickListener() {

                 @Override
                 public void onItemClick(AdapterView<?> parent, View v,
                                         int position, long id) {
                     detail(position);

                 }
             });
         } catch (Exception e) {
             e.printStackTrace();
         }

     }

     @SuppressWarnings("deprecation")
     public void search_db(View v) {
         String edit_db = et_db.getText().toString();
         if (!edit_db.equals("")) {
             try {
                 cursor = db.rawQuery("SELECT * FROM resep WHERE nama LIKE ?",
                         new String[] { "%" + edit_db + "%" });
                 adapter = new SimpleCursorAdapter(
                         this,
                         R.layout.isi_lv,
                         cursor,
                         new String[] { "nama", "bahan", "img" },
                         new int[] { R.id.tv_nama, R.id.tvBahan, R.id.imV });
                 if (adapter.getCount() == 0) {
                     Toast.makeText(
                             this,
                             "Nu am putut gasi reteta dumneavoastra " + edit_db
                                     + "", Toast.LENGTH_SHORT).show();
                 } else {
                     lv.setAdapter(adapter);
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }
         } else {
             try {
                 cursor = db.rawQuery("SELECT * FROM resep ORDER BY nama ASC",
                         null);
                 adapter = new SimpleCursorAdapter(
                         this,
                         R.layout.isi_lv,
                         cursor,
                         new String[] { "nama", "bahan", "img" },
                         new int[] { R.id.tv_nama, R.id.tvBahan, R.id.imV });
                 lv.setAdapter(adapter);
                 lv.setTextFilterEnabled(true);
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
     }

     @SuppressLint("NewApi")
     public void paste(View view) {
         ClipData cp = myClipboard.getPrimaryClip();
         ClipData.Item item = cp.getItemAt(0);
         String text = item.getText().toString();
         pastetext.setText(text);
         Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);}

     public void detail(int position) {
         int im = 0;
         String _id = "";
         String nama = "";
         String bahan = "";
         String cara = "";
         if (cursor.moveToFirst()) {
             cursor.moveToPosition(position);
             im = cursor.getInt(cursor.getColumnIndex("img"));
             nama = cursor.getString(cursor.getColumnIndex("nama"));
             bahan = cursor.getString(cursor.getColumnIndex("bahan"));
             cara = cursor.getString(cursor.getColumnIndex("cara"));
         }

         Intent iIntent = new Intent(this, DB_Parse.class);
         iIntent.putExtra("dataIM", im);
         lv.setBackground(R.drawable.+ "im");
         iIntent.putExtra("dataNama", nama);
         iIntent.putExtra("dataBahan", bahan);
         iIntent.putExtra("dataCara", cara);
         setResult(RESULT_OK, iIntent);
         startActivityForResult(iIntent, 99);
     int res = getResources().getIdentifier("@drawable/" + "test", "drawable", getPackageName());
    lv.setBackground(getDrawable(context, res));
}
@SuppressWarnings("deprecation")
private Drawable getDrawable(Context context, int im) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        return context.getResources().getDrawable(im, context.getTheme());
    } else {
        return context.getResources().getDrawable(im);
    }
}

     @Override
     public void onClick(View v) {

     }
}

DB_Resep.java
ContentValues values = new ContentValues();
values.put("_id", "1");
values.put("nama", "Recipe Name");
values.put("bahan", "Random Recipe");
values.put("img", R.drawable.test);
db.insert("resep", "_id", values);

A: all you need to do override getView method in your adapter class
    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        if(convertView == null)
        {
            convertView = inflater.inflate(R.layout.list_row, parent, false);
        }

        //get Image from DB (store path not blob)
        Drawable d = Drawable.createFromPath(pathToImageFile[position]);

       //Set the drawable for view
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
        convertView.setBackground(drawable);
        }
        else{
             convertView.setBackgroundDrawable(drawable);
        }
        /do your remaining stuff....

        return convertView;
    }

A: You need to implement custom adapter instead of SimpleCursorAdapter
Here is the very useful turorial
I've adapted code from this tutorial for your needs:
package de.vogella.android.listactivity;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MySimpleArrayAdapter extends ArrayAdapter<String> {
  private final Context context;
  private final String[] values;

  public MySimpleArrayAdapter(Context context, String[] values) {
    super(context, -1, values);
    this.context = context;
    this.values = values;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
    View view = rowView.findViewById(R.id.background);
    // change the icon for Windows and iPhone
    String s = values[position];
    if (s.startsWith("iPhone")) {
      view.setBackgroundResource(R.drawable.no);
    } else {
      view.setBackgroundResource(R.drawable.ok);
    }

    return rowView;
  }
}

A: Try using below codes, if you want to use image resource from db.
I just check if it works well or not, it works well.
int res = getResources().getIdentifier("@drawable/" + YOUR_DB_IMAGE_SURFFIX, "drawable", getPackageName());
listview.setBackground(getDrawable(context, res);

private Drawable getDrawable(Context context, int id) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        return context.getResources().getDrawable(id, context.getTheme());
    } else {
        return context.getResources().getDrawable(id);
    }
}


Pryor, Wendy. "Staying safe: cybersecurity in modern museums." Museums and the Web 2017: Selected Papers and Proceedings from an International Conference, edited by Nancy Proctor and Rich Cherry, 215-226. Silver Spring: Museums and the Web LLC, 2017.
Pryor, Wendy. "Staying safe: cybersecurity in modern museums." MW17: Museums and the Web 2017. Published January 23, 2017.


9 products I saw at CES that you're going to want now | Carley K.
I'm back and still processing the sensory overload that was CES (formerly the Consumer Electronics Show), where brands big and small trot out their biggest and brightest innovations. I saw concept cars and outlandish Virtual Reality spectacles, but there were a handful of things that I'll be waiting by my mailbox for— things that were beautifully wearable and incredibly useful. Most of these items are not yet available, but here are my best of CES 2017— check them out and then tell me you're not excited for the future.
Cubit is a smart measuring tape. Well, it's a measuring wheel, to be exact. You run it around a room and it will create a map for you in real time. Or you can use it with a smartphone photo to make a to-scale image of a space you want to hang a picture, or place a sofa in. Seeing Cubit was one of those moments at the show where I felt my heart swell. This is an extraordinary piece of technology that solves real problems for real people.
It's hard to explain, though— watch this video and you'll get it.
I've been loving my Misfit Ray for a while now— with it's no-need-to-charge battery and it's small form factor, it blends in nicely with other jewelry I'm wearing and tracks my sleep, steps, calories and more. With more colors and these pretty tasseled bands, I'm thinking of it more like a coveted accessory and less like a "wearable" (which makes it more wearable, no?).
I don't know what it is about laundry, but the idea that a machine could help make easier work of this everyday, inescapable task is always a romantic notion to me. The Samsung Flex Wash and Flex Dry units are two in one, so the washer has a smaller wash basin up top for you skivvies while your jeans and sweatshirts spin below; the dryer has a large bowl for your sheets and towels and a drying rack up top for teddy bears, cashmere sweaters, and anything else that needs special laundry attention.
Smart plugs are outlet covers that allow you to control anything you plug into them with a smartphone app (think turning on a lamp while you're away from home, or starting your toaster from bed). They are usually big and bulky and end up annoyingly blocking both outlets, replacing your two with one. So this upgrade from Belkin is a small but mighty step forward— you can stack two of them on top of one another, and the profile isn't too big to slide a couch in front of.
Don't call it a composter— the Zera Food Recycler from Whirlpool Labs doesn't want you to think about churning worm soup in your backyard. Instead, it promises to turn your food scraps into ready-to-use fertilizer for your garden, cutting back on your landfill contributions all while looking stylish in your kitchen. The video doesn't offer too much insight into how this machine magically turns banana peels and egg shells into compost without making your kitchen smell like rotting food, but I love that Whirlpool has this lab inside their large corporation that is innovating in cool and unusual ways.
Norton makes software that protects your computer (and your children) from cyber threats. At CES 2017, they reintroduced themselves as a hardware company, with a revolutionary wireless router. Norton Core (which looks a bit like a silver faceted soccer ball, delivers a powerful defense against malware, viruses, hackers and the perils of online life for kids, all while being blazingly fast. All while giving you a FICO-like "Security Score" you can track on an app that simplifies complex concept and offers suggestions to keep you (and your data) safe.
Now that I have one kid behind the wheel (!), I'm on the hunt for solutions that make driving safer and offer less distractions. I jumped behind the wheel for a Navdy demo, and was impressed by what I saw— a piece of glass that rests on your dashboard and projects turn-by-turn directions and other car controls onto your windshield. Everything is in front of you, so your eyes are never off the road. Navdy speaks to you as well, and you can answer, use a dial on your steering wheel, or gesture with your hand to control. Oh, and I have a little geek crush on Adam Lisagor, who made their video— he's my favorite salesman for all these high tech gadgets.
Another car innovation, this one brings safety features to the deserving masses. For under $500, Pearl gives you a wireless backup camera that's as easy to install as a license plate cover, which you can view from a dashboard-mounted app on your phone. A genius idea with an easy installation that can save lives. I'm impressed.
Amazon wasn't even at CES, but they stole the show. Alexa, their virtual assistant, is being baked into all kinds of products like cars, refrigerators, and this beautiful lamp from GE. The C by GE Connected lamp turns Alexa's ring into an avant garde work of art— a strikingly beautiful lamp that is waiting for your command, and will answer you with a soft glow and a helpful check of the weather, sports score or whatever else you'd like Alexa to find out for you.
What are you most excited to see on this list from CES? Let me know in the comments!
Wow!! These are amazing. I hadn't even heard of Misfit Ray… they look way more stylish than my Fitbit options. Thanks for sharing.


text:
								<?php if ($this->session->flashdata('error_message')) { ?>

										<?php echo $this->session->flashdata('error_message'); ?>

								<?php } ?>
								<?php if ($this->session->flashdata('success_message')) { ?>

										<?php echo $this->session->flashdata('success_message'); ?>

								<?php } ?>

Request a Callback

									<form name="frmcallback" id="frmcallback" action="" class="" method="POST">

											<input class="select-input" type="text" name="first_name" id="first_name"/>
											First Name*

											<input class="select-input" type="text" name="last_name" id="last_name"/>
											Last Name*

											<input type="text" value="" readonly class="date datetime" name="preffered_call_date" id="preffered_call_date"/>
											Preferred Date for Call

											<input type="text" value="" readonly class="time datetime" name="preffered_call_time" id="preffered_call_time"/>
											Preferred Time for Call

											<input class="select-input" type="text" name="phone" id="phone"/>
											Phone*

											<input class="select-input" type="email" name="email_id" id="email_id"/>
											Email Address*

									      <div class="g-recaptcha" data-sitekey="<?php echo RECAPTCHA_SITE_KEY;?>">

										  <input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha">

											<input type="submit" class="btn-common btn-blue" name="btnSubmit" id="btnSubmit" value="Request a Callback" />

									</form>


text:
Q: Aggregating Qualtrics responses within user I have a classification task that I'm seeking to do via Qualtrics. Essentially, each participant sees a randomly generated piece of embedded data (from a total of 400 embedded data fields), and answers 5 questions about this piece of data. Each participant does this 10 times (i.e. they classify 10 pieces of data). Each classification task comprises of the same five muliple-choice questions. Is there any way to aggregate the answers obtained to each question and see the aggregate results? For instance, the first question in each task is "was this written before or after purchase?", and I want to see 10 yes/no answers together for each participant, and also aggregated across participants (right now Qualtrics aggregates them only across participants, but not within).
Thanks!

A: You can use Qualtrics scoring functionality to aggregate within participants: https://www.qualtrics.com/support/survey-platform/survey-module/survey-tools/response-management-tools/scoring/


text:
Associate Director Ajay Kumar Joshi talks about Horticulture course, what is Horticulture and other details about a Career in Horticulture.
Ajay Kumar Joshi | Associate Director | Regional Horticultural Research & Training Station
There are many nuances of a Career in Horticulture. Unfortunately, it is very difficult to find information about What Horticulture actually is. Most pages on the internet just talk about How to get into Horticulture. The internet is a great source of information on Horticulture, but it is second best to learning about the same from a real professional.
Associate Director Ajay Kumar Joshi has 27 years of professional experience in Horticulture. Associate Director Ajay Kumar Joshi describes Horticulture as:
Horticulture is the science and art of growing plants, fruits, vegetables, flowers, and any other cultivar. It also includes plant conservation, landscape restoration, soil management, landscape and garden design, construction, and maintenance, and arboriculture.
How Associate Director Ajay Kumar Joshi got into Horticulture?
After completing my PhD in Agriculture from Punjab University, I started working as an Assistant Professor in Yashwant Singh Parmar University of Horticulture & Forestry, Solan and after that joined Regional Horticultural Research & Training Station as an Associate Director.
Associate Director Ajay Kumar Joshi's Talk on Horticulture
1) Horticulture
Next, it covers Education. It is easy to Google information about what Qualifications are needed to enter Horticulture, this Talk went a step ahead to talk about the body of knowledge one needs to develop to excel at Horticulture. Here is a list of Education items required for Horticulture:
2) Plant Breeding & Genetics
3) Agronomy
4) Biology
5) Mathematics & Statistics
6) Economics
7) Agricultural Engineering
8) Soil Science
9) Plant Physiology
10) Plant Protection
Then, the Talk focuses on the most important component that is Skills. Anyone aspiring for Horticulture needs to understand that Skill development is crucial for success. It discusses following headings for Skills in Horticulture:
11) Farming Techniques
12) Management of Crops
13) Handling the Produce
14) Marketing
15) Tech-savvy
16) Multitasking
Horticulture has an interesting list of Positives. The Talk goes through this list of Positives of Horticulture:
17) Diverse Opportunities
18) High Returns per Unit Area
19) Growth
Challenges are the other side of Positives and Horticulture is no exception:
20) Global Warming
21) Urbanisation
22) Lackadaisical Approach of Youth
23) Lack of Technical Know How
In the final section of the Talk, Ajay Kumar Joshi talks about How a day goes in a Career in:
24) Horticulture
(for Free) Watch Associate Director Ajay Kumar Joshi's full Horticulture Career Talk
(for ₹ 100 or ₹ $ 1.4) Do a Self Assessment on Horticulture to calculate your Dream Index, which is defined as:
According to Ajay Kumar Joshi your chances of success in Horticulture is __%
Horticulture?
If you are want to get into Horticulture, start by investing in a Career Plan.
The 14 hour process, guided by a LifePage Career Advisor, will help you introspect and check whether your interest in Horticulture is merely an infatuation or is it truly something you wish to do for the rest of your life.
Next, your Career Advisor will help you document how you can get into Horticulture, what education and skills you need to succeed in Horticulture, and what positives and challenges you will face in Horticulture.
Finally, you will get a Career Plan stating which Courses, Certifications, Trainings and other Items you need to do in the next 7 years to become world's best in Horticulture.
LifePage Career Talk on Horticulture
https://www.lifepage.in/careers/horticulture
https://www.youtube.com/watch?v=F-Kg-VMhwLU
(Horticulture, Dr Ajay Kumar Joshi, Regional Horticultural Research & Training Station, Plant Breeding, Plant Conservation, Landscape Restoration, Soil Management, Arboriculture, Landscape and Garden Design)
Scientist (E) | Forest Research Institute
Forestry & Environmental Science deals with forest-related environments which support the world's most important resources. It involves managing forest ecosystems within increasingly complex social environments. A challenging and demanding profession, forestry applies forest ecosystem sciences, management sciences, and communication skills to the conservation and management of forest resources to meet society's ever increasing need for commodities, services, and a healthy environment.
"I have done B Sc in Forestry from Pantnagar Agriculture University. Post that I did M Sc in Forestry from Punjab Agriculture University. I went on to do a PhD in Forest Genetics from Oxford University & University of Wales, Bangor, UK. I started my career from ICFRE as a Scientist (B). I am a Scientist (E) at Forest Research Institute, Dehradun."
Priyanka Thakur
Principal Floriculturist | Dr Y S Parmar University of Horticulture & Forestry
Floriculture or flower farming is a discipline of horticulture concerned with the cultivation of flowering and ornamental plants for gardens and for floristry, comprising the floral industry. The development, via plant breeding, of new varieties is a major occupation of floriculturists.
"After doing my B Sc in Horticulture and M Sc in Floriculture & Landscape, I did my PhD in Floriculture & Landscape from Dr. Y S Parmar University. I am working as a Principal Floriculturist at Dr. Y S Parmar University of Horticulture & Forestry."
Manas Garg
Cultivator | J.P Floritech
Production Management refers to the application of management principles to the production function in a factory. In other words, production management involves application of planning, organizing, directing and controlling the production process.
"I have done B Com (Hons) from Shri Ram College of Commerce, DU. Post that, I did an Executive Program in Export Management from IIFT, New Delhi and an Executive Program in Entrepreneurship from IIM, Bangalore. Apart from helping my father in our family business of stationery, I run a paper cup manufacturing unit. I also own a floriculture business by the name J.P Floritech."
Forest Entomology
R S Bhandari
Scientist (F) | Forest Research Institute
Entomology is the scientific study of insects, a branch of zoology. Forest entomology also includes the management of insect pests that cause the degrading, defoliation, crown die-back or death of trees.
"After doing my B Sc and M Sc from DAV College, I did Diploma in Forestry from IGNFA, Dehradun and then another Diploma in Insect Ecology from SLU, Sweden. I worked as a Scientist (F), Head of Entomology in Forest Research Institute for 39 years."
Nivedita Kukreti Kumar
IPS | Government of India
Hemant Kochhar
Director | Madhuban Hotel
Anahita Dhondy
Chef Manager | Soda Bottle Openerwala
LifePage App – choose a Career in 3 steps
Career in Marine Engineering:
https://team-lifepages-blank-site.webflow.io/
Career in Indian Forest Service:
https://diigo.com/0hj7uh
Career in Folk Singing:
https://www.osakacareers.xyz/2020/04/how-do-you-pursue-career-in-folk-singing.html
Career Counselling in Blenheim
Career Counselling in Shahr-e-Kord
Career Counselling in Tuy-Hoa


text:
Home / General News / Cuba trains more than 3,000 Ghanaians in various fields
Cuba trains more than 3,000 Ghanaians in various fields
January 23, 2019 General News Comments Off on Cuba trains more than 3,000 Ghanaians in various fields
More than 3, 000 Ghanaians have so far received training in various fields, especially Education and Medicine, in Cuba, as part of the healthy relations between the two countries.
Mr Charles Owiredu, Deputy Minister for Foreign Affairs and Regional Integration, who said this, announced that the process for selecting students was ongoing with successful students expected to arrive in Cuba by the end of January.
The Deputy Minister was holding discussions on strengthening socio-economic relations with a six-member Cuban delegation, which paid a courtesy call to the Ministry, on Monday.
The delegation, led by Dr Mrs Marcia Cobas Ruiz, Deputy Minister of Public Health, comprised Ms Vivian Herrera Cid, General Director of Foreign Trade at the Ministry for Foreign Trade and Investment and Ms Martha Elena Romero Bermudze, Director of International Operation of the Banco Financiero International, a Cuban Bank.
Other members are: Ms Miladys Orraca Casterillo, President of Cuban Medical Services, Ms Laura Antonia Vives Castillo, Commercial Specialist Biocubafarm and Mr Pedro Luiz Gonzalez, Cuban Ambassador to Ghana.
Mr Owiredu thanked the Cuban Government for the tremendous support it had provided towards Ghana's service health delivery through the Cuban Medical Brigade Assistance Programme.
"Often, people express amazement at the zeal with which medical doctors work so hard to improve the conditions of patients in rural and under-privileged communities," he said.
The Minister commended the fruitful relations dating back to Ghana's independence, saying it had been based on shared values and interest in the Non-Aligned Movement (NAM).
Ghana is the first country south of the Sahara to establish diplomatic relations with Cuba in 1959.
Mr Owiredu said a proposal had been made to celebrate the 60th Anniversary of the Ghana-Cuba Diplomatic relations by organising special events.
He announced that the President Nana Addo Dankwa Akufo-Addo and Vice President Mahamadu Bawumia had agreed to honour the invitation of their Cuban counterparts to further deepen the bilateral relationship.
Dr Mrs Ruiz, for her part, pledged Cuba's continuous support to Ghana in the areas of health and education, which has been the traditional areas of cooperation between for the past 60 years.
"Our visit today is to explore, augment and define the agreement to help move it to the next level," she said.
emmakd
Previous Counterfeit Pharmaceuticals: A threat to Africa's development-ENACT
Next A total of 442km roads to be constructed under Sinohydro deal to start in March


Howl-O-Wine - Inland Valley Humane Society and S.P.C.A.
Don't wait until it's too late to buy your tickets to this year's Howl o Wine event on October 19th. This year's event will sell out.
Join us for brews and chews. Tastings from local breweries, wine merchants and family vineyards as well as farm to table edibles will be just some of the delights of the evening.
Time- 6:00 p.m. – 9:00 p.m.
– Ticket includes a commemorative taster glass, farm fresh food bites & unlimited beer and wine tasting.
– Early access to the event 5:30 pm, tray passed hors d'oeuvres and complimentary cocktails in the VIP area.


text:
• Ben Roethlisberger
• QB Rank
• Pittsburgh Steelers
• Mirai Nagasu
Hakeem Nicks puts Colts, Panthers and Chargers at the top of his list
By Steven Ruiz March 9, 2014 5:01 pm
Jim O'Connor-USA TODAY Sports
As far as contract years go, 2013 could not have gone any worse for Giants wide receiver Hakeem Nicks.
Coming off a disappointing 2012 campaign, Nicks struggled in the final year of his rookie deal. He caught just 56 passes for 896 yards and was shut out of the endzone in 15 games.
But Nicks is ready to prove the last two seasons were just a hiccup caused by a nagging knee injury, which is now fully heeled. The former first round pick sent out letters to all 32 teams from Dr. James Andrews and Dr. Robert Anderson vouching for the health of his knee, ESPN's Chris Mortensen reported.
It was also reported that Nicks would be open to a one-year deal in order to prove himself this season before hitting the free agent market once again in next offseason. But in an interview with ESPN, Nicks seems to have backed off that sentiment.
So, Hakeem @hakeemnicks just told @JosinaAnderson to be clear that he wants long-term deal. Mentioned, Indy, CAR, SD as good spot for him
— Jordan Raanan (@JordanRaanan) March 9, 2014
Nicks said he was looking for a long-term deal and a place where he can be "the missing link."
Asked what teams he was most interested in joining, Nicks said, "I know if I went to a place like Indianapolis I would be dangerous with a quarterback like Andrew Luck. I can see myself catching passes from Cam Newton or even Philip Rivers.
"Players have already started to reach out to me from other teams saying they would love for me to come join them."
Nicks is just two years removed from an 1,192-yard, seven-touchdown season and has the ability to be a top-end second option in the NFL. If he is truly healthy and willing to accept a low risk, short-term deal, Nicks could end up as one of the bigger steals of the offseason for a fringe contender like the three he named.
The Panthers, Chargers and Colts have the cap space to make the move and are all in need of another wide receiver. Getting a revived Nicks could turn any one of those teams into a legitimate contender.
Carolina Panthers, free agency, Hakeem Nicks, Indianapolis Colts, New York Giants, NFL, San Diego Chargers, NFL


If you own Mobiistar X1 Notch, please do leave your feedback too.
Lowest price of Mobiistar X1 Notch price in India starts at Rs. 6,620 Mobiistar X1 Notch is available on Flipkart at Rs. 7,199 and on Amazon at Rs. 6,620. Prices updated on 19th April 2019.
The Mobiistar X1 Notch entered into the Indian market through the company's strategic partnership with Flipkart. The Mobiistar X1 Notch features an AI-enabled selfie camera that could be its biggest selling point. As its name implies, the device flaunts a notch display with an impressive 'Full View' aspect ratio. The smartphone also brings the latest technological trends at this price bracket.
Talking about the optical configuration, the Mobiistar X1 Notch sports 13MP lens for both front and rear sides. The lenses come with AI beautification and scene detection feature respectively. It also offers Night mode, live filters, FaceBeauty, pro mode, HDR and more.
Moving on to its performance, the device is based on MediaTek Helio A22 SoC. There is a quad-core Cortex A53 processor having the clock speed of 2GHz. The processor shares the load with PowerVR GE8300 GPU to get smooth performance. The whole operation is done by Android v8.1 (Oreo). The software is offered with features like face unlock, DuraSpeed, gestures support and more.
The Mobiistar X1 Notch is the first device with the notched display by the maker. It stands 5.7-inch tall with a 19:9 aspect ratio. The display offers HD+ resolution and features a 2.5D curved glass layer on top. The screen looks bright with sharp text and vibrant colour.
The device houses 16GB internal storage, which seems to be low in this price segment. However, it comes with an external memory slot, which can be used as extra storage up to 128GB.
The Mobiistar X1 Notch draws the charge from a Li-ion battery having the capacity of 3,300mAh, which can give a decent backup for long hours.
In terms of connectivity, the device can be connected with other devices via Bluetooth, Mobile Hotspot, Direct Wi-Fi, GPS and more. The SIM slots come with 4G-VoLTE connectivity.
The device features Accelerometer, Proximity Sensor, Gyroscope and a Fingerprint sensor on the back, which helps it to unlock faster and more secure.


text:
Old Galway
Galway Diary
Local Success Stories
#Galway
Literature & Readings
Essential Playlist
Coffee Break Read
Rentals / Property to let
Accommodation Agencies
BER Assessors
Jobs / Situations Vacant
Jobs / Situations Wanted
Childminding / Childcare
Gardenwise
People of the Tribes
A journey that may as well be a million miles
by Ronan Scully Galway Advertiser, Thu, Oct 04, 2018
It takes two days to travel from my home in Galway to the rural poor families with whom Self Help Africa works with in Uganda. But in other respects it's a journey that may as well be a million miles. After two days of travel, your eyes are heavy and your legs are stiff but your mind is racing. You cannot but question how come there are people living in such poverty. It is inevitable then that you ask 'what can I do to help?'
I made this journey recently with a great group of Irish supporters of Self Help Africa to visit projects and communities that the charity are implementing in Uganda. We read and hear a lot about the positive changes that Africa is going through.
Despite this however, the biggest challenge – poverty – stares you in the face. Children are barefoot and in rags, schools are dirt floored and overcrowded, and electricity, if it exists at all, is not much more than a bare bulb hanging from a ceiling. Life expectancy in Uganda recently topped 60 years of age. By our standards that is extremely low, but when you consider that it has increased from 52 years of age just a decade ago, that is evidence of significant change.
Rural unemployment levels remain alarmingly high, and basic services – sanitation, basic healthcare, education and electricity - are way behind what we should expect in any country in the 21st century. The social and economic challenges faced by poor families are vast. It is difficult for us to imagine growing up in a world where you lack the very basics in life such as food, clean water, medicine, shelter, safety, a bed of your own.
Condemned to poverty
Beyond that, there are few toys for children - no dolls, no soccer balls, no sweets and treats. Families struggle to fund the cost of sending their children to school beyond the very rudimentary overcrowded primary schools that are available at a village level, and because of that, huge numbers of young and innocent children are condemned to a life of poverty from the earliest age.
Growing up brings its share of problems wherever you are in the world, but growing up in a place like Uganda can be a struggle beyond imagination. Many children are fortunate to be still alive at the age of five, as many of their friends have died of things such as malaria, dysentery, malnutrition, and the like. If both parents are still living, that can be considered another miracle.
Malaria is still the number one killer in East Africa, but AIDS comes in a strong second place. Wherever you go you can see the evidence of the ravages of AIDS. Go into any school and ask how many children have only one parent, or no parent and you would be astounded. In a country like Uganda with a population of just over 40 million, there are as many as 1.2 million AIDS orphans. Yes, there is rebel activity in the north and west of Uganda. Yes, there is malaria and other illnesses.
This is the other war, AIDS, the silent killer that sweeps through offices, villages, banks, schools and government institutions.The Irish charity I proudly work for, Self Help Africa is committed to reducing poverty, hunger, health problems and the refugee crisis by focusing on agriculture and healthcare in parts – both the capacity of small farms to produce the food that a family might need, and the capacity of the land to generate an income from which the household can invest in food, clothing, school fees, medication and the other necessities of daily life.
On our trip, we visited a wide variety of different communities and households that Self Help Africa is working with in the country, and we saw at first hand the impact that the simplest activities can have on ordinary daily life.
Introducing farmers to new crop varieties, supporting families to set up their own modest backyard vegetable plots, and promoting new breeds of goats, pigs and poultry are just a handful in a myriad of activities that are slowly, but surely changing peoples lives. Under-pinning all of the different activities that are being carried out by Self Help Africa's Ugandan team is a relentless focus on training and education – so that farmers and their families can do it for themselves, and can make the changes that they want to in their lives.
It's why we are called 'self help'!Self Help Africa's MAYEP project in Uganda is currently helping 3,000 young Ugandans with training that will help them to become farmers, become small agriculture based business people, and also pursue careers in a host of different areas. In just a year it has seen young people commit their futures to their local areas – as processors and traders, as bookkeepers, as construction workers, transport providers and an array of different careers.
While the scale of the problems of rural Africa may be vast, and the provision of training to young people, women and families in some respects might seem just like a drop in the ocean, it does illustrate the practical measures that can be taken, and that can and are making a difference. These are practical steps made possible by the kindness and support of my 12 Irish travelling companions to Uganda, and could be made by you too. These people are not just statistics; they are members of our human family.
However, statistics can indicate the magnitude of the problem and the urgency of the task. As we enter into the Second half of 2018, more than half of the world's population lives on less than €2 a day. More than 1.2 billion people live on less than €1 a day. Over one billion people across the globe, most of them children, live with hunger or malnutrition as a regular fact of life. They live in desperate poverty, which means they die younger than they should, struggle with hunger and disease, and live with little hope and less opportunity for a life of dignity.
Yet poverty is not limited to the poorest countries as we ourselves know! In our own beautiful country of Ireland, poverty is also persistent and pervasive. To be poor in our country is far different from being poor in parts of Africa or Asia but poverty still diminishes the lives and undermines the dignity of many families who live in our midst.
A million miles
It may be a million miles from Galway to Uganda but watching people from both places meet and share of their lives together in the African bush a few weeks ago, I was struck by how close our lives are. Close your eyes and the voices are all the same, all singing the same song. It's hard to really appreciate the suffering of these people when we are so removed from them in every way. But we can try. We all need help at some point.
The problems of the world can seem pretty overwhelming and it can sometimes feel that simply looking after our own is all we can do and yet, just a little would help so much. The littlest things can help make a difference. Simple examples of this difference include the various fundraising events around many parts of our county. It is in this way that we can all play our part in helping to bring an end to hunger, poverty and misery in Africa. The fight against hunger and poverty in Africa - and in Ireland - is not anyone's responsibility. It is everyone's.
If you would like to help Self Help Africa with its work or would like to attend the Gorta Self Help Africa charity Ball on Friday October 12 in The Galway Bay Hotel, you can get in touch on (01 ) 6778880 or at www.selfhelpafrica.org or simply send whatever you can afford to Self Help Africa, Westside Resource Centre, Seamus Quirke Road, Westside, Galway. If you would like to drop me a note to [email protected] or (087 ) 6189094. I'd be happy to chat!
Fiction Ireland food Africa Social Issues Asia electricity Westside Resource Centre healthcare [email protected] Galway Bay Hotel Uganda East Africa www.selfhelpafrica.org basic healthcare Journey basic services Million Miles Miles Straume The Journey Begins Secret Journey (01 ) 6778880 (087 ) 6189094
Leader of successful bid campaign appointed Galway 2020 CEO
Book of Lady Gregory's writings launched at Autumn Gathering
NUI Galway Innocence Clinic to review Maamtrasna and set up database of wrongful convictions
Two Galway players hope to make Underdogs team to play Dubs
Global IT leader SOTI announces 150 new jobs with opening of Galway office
Galway's first Pumpkin Patch opens in Ardrahan this Halloween
'Excellence' of Galway staff leads Wayfair to announce 200 new jobs
Galway West Labour to 'campaign vigorously' for Michael D's re-election
Public meeting to ask 'Is Brexit is an opportunity for Ireland?'
'People Need to Live Here' posters to appear on vacant houses in city suburbs
JFC Agri businesswoman named winner of Female Leadership Award
Ó Cuív demands rules for community employment schemes be 'relaxed'
"It is just by randomness of birth that we are Irish — so we have to help others"
'It is only when you work alongside extremely poor that you realise that statistics never tell the full story'
No one should be hungry this Christmas
Gorta-Self Help Africa says thank you for helping fight against poverty
Join fundraiser Ronan Scully on 100k trek to raise funds for Gorta Self Help Africa
Zikomo — giving a helping hand up
Lucia Evans checks out the African A-List
Volunteers sought for Great Ethiopian Run
Catastrophe looms in East Africa
Special occasion department opens at Gorta-Self Help Africa shop
Tweets by galwayad


Identity for ToprakveSu, a Turkish hydroponics company. It was fun to do and I like the result. So did they. Check it out on the identity section.
I never update as soon as I have something new. Well, not this time. This time I'm putting it out here so that people can see it. Made a website for a milk farm. Got to shoot (photograph) old cows, baby cows and a truck Check it out on the web portfolio page or go right to the website here : ferma de lapte.