text:
using namespace OSL;

namespace { // anonymous namespace

// unique identifier for each closure supported by testrender
enum ClosureIDs {
    EMISSION_ID = 1,
    BACKGROUND_ID,
    DIFFUSE_ID,
    OREN_NAYAR_ID,
    TRANSLUCENT_ID,
    PHONG_ID,
    WARD_ID,
    MICROFACET_GGX_ID,
    MICROFACET_GGX_REFR_ID,
    MICROFACET_BECKMANN_ID,
    MICROFACET_BECKMANN_REFR_ID,
    REFLECTION_ID,
    FRESNEL_REFLECTION_ID,
    REFRACTION_ID,
    TRANSPARENT_ID,
};

// these structures hold the parameters of each closure type
// they will be contained inside ClosureComponent
struct EmptyParams      { };
struct DiffuseParams    { Vec3 N; };
struct OrenNayarParams  { Vec3 N; float sigma; };
struct PhongParams      { Vec3 N; float exponent; };
struct WardParams       { Vec3 N, T; float ax, ay; };
struct ReflectionParams { Vec3 N; float eta; };
struct RefractionParams { Vec3 N; float eta; };
struct MicrofacetParams { Vec3 N; float alpha, eta; };

} // anonymous namespace

OSL_NAMESPACE_ENTER

void register_closures(OSL::ShadingSystem* shadingsys) {
    // Describe the memory layout of each closure type to the OSL runtime
    enum { MaxParams = 32 };
    struct BuiltinClosures {
        const char* name;
        int id;
        ClosureParam params[MaxParams]; // upper bound
    };
    BuiltinClosures builtins[] = {
        { "emission"   , EMISSION_ID,           { CLOSURE_FINISH_PARAM(EmptyParams) } },
        { "background" , BACKGROUND_ID,         { CLOSURE_FINISH_PARAM(EmptyParams) } },
        { "diffuse"    , DIFFUSE_ID,            { CLOSURE_VECTOR_PARAM(DiffuseParams, N),
                                                  CLOSURE_FINISH_PARAM(DiffuseParams) } },
        { "oren_nayar" , OREN_NAYAR_ID,         { CLOSURE_VECTOR_PARAM(OrenNayarParams, N),
                                                  CLOSURE_FLOAT_PARAM (OrenNayarParams, sigma),
                                                  CLOSURE_FINISH_PARAM(OrenNayarParams) } },
        { "translucent", TRANSLUCENT_ID,        { CLOSURE_VECTOR_PARAM(DiffuseParams, N),
                                                  CLOSURE_FINISH_PARAM(DiffuseParams) } },
        { "phong"      , PHONG_ID,              { CLOSURE_VECTOR_PARAM(PhongParams, N),
                                                  CLOSURE_FLOAT_PARAM (PhongParams, exponent),
                                                  CLOSURE_FINISH_PARAM(PhongParams) } },
        { "ward"       , WARD_ID,               { CLOSURE_VECTOR_PARAM(WardParams, N),
                                                  CLOSURE_VECTOR_PARAM(WardParams, T),
                                                  CLOSURE_FLOAT_PARAM (WardParams, ax),
                                                  CLOSURE_FLOAT_PARAM (WardParams, ay),
                                                  CLOSURE_FINISH_PARAM(WardParams) } },
        { "microfacet_ggx", MICROFACET_GGX_ID,  { CLOSURE_VECTOR_PARAM(MicrofacetParams, N),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, alpha),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, eta),
                                                  CLOSURE_FINISH_PARAM(MicrofacetParams) } },
        { "microfacet_ggx_refraction", MICROFACET_GGX_REFR_ID,
                                                { CLOSURE_VECTOR_PARAM(MicrofacetParams, N),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, alpha),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, eta),
                                                  CLOSURE_FINISH_PARAM(MicrofacetParams) } },
        { "microfacet_beckmann", MICROFACET_BECKMANN_ID,
                                                { CLOSURE_VECTOR_PARAM(MicrofacetParams, N),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, alpha),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, eta),
                                                  CLOSURE_FINISH_PARAM(MicrofacetParams) } },
        { "microfacet_beckmann_refraction", MICROFACET_BECKMANN_REFR_ID,
                                                { CLOSURE_VECTOR_PARAM(MicrofacetParams, N),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, alpha),
                                                  CLOSURE_FLOAT_PARAM (MicrofacetParams, eta),
                                                  CLOSURE_FINISH_PARAM(MicrofacetParams) } },
        { "reflection" , REFLECTION_ID,         { CLOSURE_VECTOR_PARAM(ReflectionParams, N),
                                                  CLOSURE_FINISH_PARAM(ReflectionParams) } },
        { "reflection" , FRESNEL_REFLECTION_ID, { CLOSURE_VECTOR_PARAM(ReflectionParams, N),
                                                  CLOSURE_FLOAT_PARAM (ReflectionParams, eta),
                                                  CLOSURE_FINISH_PARAM(ReflectionParams) } },
        { "refraction" , REFRACTION_ID,         { CLOSURE_VECTOR_PARAM(RefractionParams, N),
                                                  CLOSURE_FLOAT_PARAM (RefractionParams, eta),
                                                  CLOSURE_FINISH_PARAM(RefractionParams) } },
        { "transparent", TRANSPARENT_ID,        { CLOSURE_FINISH_PARAM(EmptyParams) } },
        // mark end of the array
        { NULL, 0, {} }
    };

    for (int i = 0; builtins[i].name; i++) {
        shadingsys->register_closure(
            builtins[i].name,
            builtins[i].id,
            builtins[i].params,
            NULL, NULL);
    }
}

OSL_NAMESPACE_EXIT

namespace { // anonymous namespace

template <int trans>
struct Diffuse : public BSDF, DiffuseParams {
    Diffuse(const DiffuseParams& params) : BSDF(false), DiffuseParams(params) { if (trans) N = -N; }
    virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
        pdf = std::max(N.dot(wi), 0.0f) * float(M_1_PI);
        return pdf;
    }
    virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
        Vec3 out_dir;
        Sampling::sample_cosine_hemisphere(N, rx, ry, out_dir, invpdf);
        wi = out_dir; // FIXME: leave derivs 0?
        return 1;
    }
};

struct OrenNayar : public BSDF, OrenNayarParams {
   OrenNayar(const OrenNayarParams& params) : BSDF(false), OrenNayarParams(params) {
      // precompute some constants
      float s2 = sigma * sigma;
      A = 1 - 0.50f * s2 / (s2 + 0.33f);
      B =     0.45f * s2 / (s2 + 0.09f);
   }
   virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
      float NL =  N.dot(wi);
      float NV = -N.dot(sg.I);
      if (NL > 0 && NV > 0) {
         pdf = NL * float(M_1_PI);
         // project L and V down to the plane defined by N
         Vec3 Lproj = (   wi - NL * N).normalize();
         Vec3 Vproj = (-sg.I - NV * N).normalize();
         // cosine of angle between vectors
         float cos_phi_diff = Lproj.dot(Vproj);
         if (cos_phi_diff > 0) {
            // take advantage of function monoticity to save inverse trig ops
            //     theta_i = acos(N.L)
            //     theta_r = acos(N.V)
            //     alpha   = max(    theta_i,      theta_r )
            // sin_alpha   = max(sin(theta_i), sin(theta_r))
            //     beta    = min(    theta_i ,     theta_r )
            // tan_beta    = min(tan(theta_i), tan(theta)r))
            float sin_theta_i2 = 1 - NL * NL;
            float sin_theta_r2 = 1 - NV * NV;
            float sin_alpha, tan_beta;
            if (sin_theta_i2 > sin_theta_r2) {
               sin_alpha = sin_theta_i2 > 0 ? sqrtf(sin_theta_i2) : 0.0f;
               tan_beta  = sin_theta_r2 > 0 ? sqrtf(sin_theta_r2) / NV : 0.0f;
            } else {
               sin_alpha = sin_theta_r2 > 0 ? sqrtf(sin_theta_r2) : 0.0f;
               tan_beta  = sin_theta_i2 > 0 ? sqrtf(sin_theta_i2) / NL : 0.0f;
            }
            return pdf * (A + B * cos_phi_diff * sin_alpha * tan_beta);
         } else
            return pdf * A;
      }
      return pdf = 0;
   }
   virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
       Vec3 out_dir; float pdf;
       Sampling::sample_cosine_hemisphere(N, rx, ry, out_dir, invpdf);
       wi = out_dir; // leave derivs 0?
       return eval(sg, out_dir, pdf) * invpdf;
   }
private:
   float A, B;
};

struct Phong : public BSDF, PhongParams {
    Phong(const PhongParams& params) : BSDF(false), PhongParams(params) {}
    virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
        float cosNI =  N.dot(wi);
        float cosNO = -N.dot(sg.I);
        if (cosNI > 0 && cosNO > 0) {
           // reflect the view vector
           Vec3 R = (2 * cosNO) * N + sg.I;
           float cosRI = R.dot(wi);
           if (cosRI > 0) {
               float common = 0.5f * float(M_1_PI) * powf(cosRI, exponent);
               float out = cosNI * (exponent + 2) * common;
               pdf = (exponent + 1) * common;
               return out;
           }
        }
        return pdf = 0;
    }
    virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
        float cosNO = -N.dot(sg.I);
        if (cosNO > 0) {
            // reflect the view vector
            Vec3 R = (2 * cosNO) * N + sg.I;
            TangentFrame tf(R);
            float phi = 2 * float(M_PI) * rx;
            float cosTheta = powf(ry, 1 / (exponent + 1));
            float sinTheta2 = 1 - cosTheta * cosTheta;
            float sinTheta = sinTheta2 > 0 ? sqrtf(sinTheta2) : 0;
            wi = tf.get(cosf(phi) * sinTheta,
                        sinf(phi) * sinTheta,
                        cosTheta); // leave derivs 0?
            float cosNI = N.dot(wi.val());
            if (cosNI > 0) {
                float d = 1 / (exponent + 1);
                invpdf = 2 * float(M_PI) * powf(cosTheta, -exponent) * d;
                return cosNI * (exponent + 2) * d;
            }
        }
        return invpdf = 0;
    }
};

struct Ward : public BSDF, WardParams {
    Ward(const WardParams& params) : BSDF(false), WardParams(params) {}
    virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
        float cosNO = -N.dot(sg.I);
        float cosNI =  N.dot(wi);
        if (cosNI > 0 && cosNO > 0) {
            // get half vector and get x,y basis on the surface for anisotropy
            Vec3 H = wi - sg.I;
            H.normalize();  // normalize needed for pdf
            TangentFrame tf(N, T);
            // eq. 4
            float dotx = tf.getx(H) / ax;
            float doty = tf.gety(H) / ay;
            float dotn = tf.getz(H);
            float exp_arg = (dotx * dotx + doty * doty) / (dotn * dotn);
            float denom = (4 * float(M_PI) * ax * ay * sqrtf(cosNO * cosNI));
            float exp_val = expf(-exp_arg);
            float out = cosNI * exp_val / denom;
            float oh = H.dot(wi);
            denom = 4 * float(M_PI) * ax * ay * oh * dotn * dotn * dotn;
            pdf = exp_val / denom;
            return out;
        }
        return 0;
    }
    virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
        float cosNO = -N.dot(sg.I);
        if (cosNO > 0) {
            // get x,y basis on the surface for anisotropy
            TangentFrame tf(N, T);
            // generate random angles for the half vector
            float phi = 2 * float(M_PI) * rx;
            float cosPhi = ax * cosf(phi);
            float sinPhi = ay * sinf(phi);
            float k = 1 / sqrtf(cosPhi * cosPhi + sinPhi * sinPhi);
            cosPhi *= k;
            sinPhi *= k;

            // eq. 6
            // we take advantage of cos(atan(x)) == 1/sqrt(1+x^2)
            //                  and sin(atan(x)) == x/sqrt(1+x^2)
            float thetaDenom = (cosPhi * cosPhi) / (ax * ax) + (sinPhi * sinPhi) / (ay * ay);
            float tanTheta2 = -logf(1 - ry) / thetaDenom;
            float cosTheta  = 1 / sqrtf(1 + tanTheta2);
            float sinTheta  = cosTheta * sqrtf(tanTheta2);

            Vec3 h; // already normalized becaused expressed from spherical coordinates
            h.x = sinTheta * cosPhi;
            h.y = sinTheta * sinPhi;
            h.z = cosTheta;
            // compute terms that are easier in local space
            float dotx = h.x / ax;
            float doty = h.y / ay;
            float dotn = h.z;
            // transform to world space
            h = tf.get(h.x, h.y, h.z);
            // generate the final sample
            float oh = -h.dot(sg.I);
            wi = 2 * oh * h + sg.I; // TODO: leave derivs 0?
            if (sg.Ng.dot(wi.val()) > 0) {
                float cosNI = N.dot(wi.val());
                if (cosNI > 0) {
                    // eq. 9
                    float e = expf(-(dotx * dotx + doty * doty) / (dotn * dotn));
                    float c = 4 * float(M_PI) * ax * ay;
                    float k = oh * dotn * dotn * dotn;
                    invpdf = (c * k) / e;
                    return k * sqrtf(cosNI / cosNO);
                }
            }
        }
        return 0;
    }
};

struct GGXDist {
    GGXDist(float alpha) : alpha2(alpha * alpha) {}

    float D(float cosThetaM) const {
        // eq. 33: calculate D(m) with m=Hr:
        float cosThetaM2 = cosThetaM * cosThetaM;
        float tanThetaM2 = (1 - cosThetaM2) / cosThetaM2;
        float cosThetaM4 = cosThetaM2 * cosThetaM2;
        return alpha2 / (float(M_PI) * cosThetaM4 * (alpha2 + tanThetaM2) * (alpha2 + tanThetaM2));
    }
    float G(float cosNx) const {
        // eq. 34: calculate G
        return 2 / (1 + sqrtf(1 + alpha2 * (1 - cosNx * cosNx) / (cosNx * cosNx)));
    }
    Vec3 sample(float rx, float ry) const {
        // generate a random microfacet normal m
        // eq. 35,36:
        // we take advantage of cos(atan(x)) == 1/sqrt(1+x^2)
        //                  and sin(atan(x)) == x/sqrt(1+x^2)
        float tanThetaM2 = alpha2 * rx / (1 - rx);
        float cosThetaM  = 1 / sqrtf(1 + tanThetaM2);
        float sinThetaM  = cosThetaM * sqrtf(tanThetaM2);
        float phiM = 2 * float(M_PI) * ry;
        return Vec3(cosf(phiM) * sinThetaM,
                    sinf(phiM) * sinThetaM,
                    cosThetaM);
    }
private:
    float alpha2;
};

struct BeckmannDist {
    BeckmannDist(float alpha) : alpha2(alpha * alpha) {}
    float D(float cosThetaM) const {
        float cosThetaM2 = cosThetaM * cosThetaM;
        float tanThetaM2 = (1 - cosThetaM2) / cosThetaM2;
        float cosThetaM4 = cosThetaM2 * cosThetaM2;
        return expf(-tanThetaM2 / alpha2) / (float(M_PI) * alpha2 *  cosThetaM4);
    }
    float G(float cosNx) const {
        // eq. 26, 27: calculate G
        float ax = 1 / sqrtf(alpha2 * (1 - cosNx * cosNx) / (cosNx * cosNx));
        return ax < 1.6f ? (3.535f * ax + 2.181f * ax * ax) / (1 + 2.276f * ax + 2.577f * ax * ax) : 1.0f;
    }
    Vec3 sample(float rx, float ry) const {
        // eq. 35,36:
        // we take advantage of cos(atan(x)) == 1/sqrt(1+x^2)
        //                  and sin(atan(x)) == x/sqrt(1+x^2)
        float tanThetaM = sqrtf(-alpha2 * logf(1 - rx));
        float cosThetaM = 1 / sqrtf(1 + tanThetaM * tanThetaM);
        float sinThetaM = cosThetaM * tanThetaM;
        float phiM = 2 * float(M_PI) * ry;
        return Vec3(cosf(phiM) * sinThetaM,
                    sinf(phiM) * sinThetaM,
                    cosThetaM);
    }
private:
    float alpha2;
};

template <typename Distribution, int Refract>
struct Microfacet : public BSDF, MicrofacetParams {
    Microfacet(const MicrofacetParams& params) : BSDF(false), MicrofacetParams(params), dist(params.alpha) {}
    virtual float albedo(const ShaderGlobals& sg) const {
        float fr = fresnel_dielectric(-N.dot(sg.I), eta);
        return Refract ? 1 - fr : fr;
    }
    virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
        pdf = 0;
        Vec3 wo = -sg.I;
        if (!Refract) {
            float cosNO = N.dot(wo);
            float cosNI = N.dot(wi);
            if (cosNI > 0 && cosNO > 0) {
                // get half vector
                Vec3 Hr = (wi + wo).normalize();
                // eq. 20: (F*G*D)/(4*in*on)
                float cosThetaM = N.dot(Hr);
                float Dr = dist.D(cosThetaM);
                // eq. 34: now calculate G1(i,m) and G1(o,m)
                float Gr = dist.G(cosNO) * dist.G(cosNI);
                // fresnel term between outgoing direction and microfacet
                float cosHO = Hr.dot(wo);
                float Fr = fresnel_dielectric(cosHO, eta);
                float out = (Fr * Gr * Dr) * 0.25f / cosNO;
                // eq. 24
                float pm = Dr * cosThetaM;
                // convert into pdf of the sampled direction
                // eq. 38 - but see also:
                // eq. 17 in http://www.graphics.cornell.edu/~bjw/wardnotes.pdf
                pdf = pm * 0.25f / cosHO;
                return out;
            }
        } else {
           Vec3 ht, Ht;
           float cosNO, cosNI;
           if (wi.dot(wo) <= 0 && (cosNO = N.dot(wo)) > 0.0f) {
               cosNI = N.dot(wi);
               // compute half-vector of the refraction (eq. 16)
               ht = -(eta * wi + wo);
               if (eta < 1.0f)
                  ht = -ht;
               Ht = ht.normalize();
               // compute fresnel term
               float cosHO = Ht.dot(wo);
               float Ft = 1.0f - fresnel_dielectric(cosHO, eta);
               if (Ft > 0) { // skip work in case of TIR
                  float cosHI = Ht.dot(wi);
                  // eq. 33: first we calculate D(m) with m=Ht:
                  float cosThetaM = N.dot(Ht);
                  if (cosThetaM <= 0.0f)
                     return 0;
                  float Dt = dist.D(cosThetaM);
                  // eq. 34: now calculate G1(i,m) and G1(o,m)
                  float Gt = dist.G(cosNO) * dist.G(cosNI);
                  // probability
                  float invHt2 = 1 / ht.dot(ht);
                  pdf = Dt * cosThetaM * (fabsf(cosHI) * (eta * eta)) * invHt2;
                  return (fabsf(cosHI * cosHO) * (eta * eta) * (Ft * Gt * Dt) * invHt2) / fabsf(cosNO);
               }
           }
        }
        return 0;
    }

    virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
        // generate a random microfacet normal m
        TangentFrame tf(N);
        Vec3 m = dist.sample(rx, ry);
        m = tf.get(m.x, m.y, m.z);
        if (!Refract) {
            Vec3 wo = -sg.I;
            float cosMO = m.dot(wo);
            if (cosMO > 0) {
                // eq. 39 - compute actual reflected direction
                wi = 2 * cosMO * m - wo;
                float e = eval(sg, wi.val(), invpdf);
                invpdf = 1 / invpdf; // eval returned pdf, invert it
                return e * invpdf; // FIXME: simplify math here
           }
        } else {
            float Ft = fresnel_refraction (sg.I, m, eta, wi);
            if (Ft > 0) { // FIXME: find bug for refractive eval
                //float e = eval(sg, wi.val(), invpdf);
                //invpdf = 1 / invpdf; // eval returned pdf, invert it
                //return e * invpdf; // FIXME: simplify math here
                return invpdf = 1;
            }
        }
        return invpdf = 0;
    }

private:
    Distribution dist;
};

typedef Microfacet<GGXDist, 0> MicrofacetGGXRefl;
typedef Microfacet<GGXDist, 1> MicrofacetGGXRefr;
typedef Microfacet<BeckmannDist, 0> MicrofacetBeckmannRefl;
typedef Microfacet<BeckmannDist, 1> MicrofacetBeckmannRefr;

struct Reflection : public BSDF, ReflectionParams {
    Reflection(const ReflectionParams& params) : BSDF(true), ReflectionParams(params) {}
    virtual float albedo(const ShaderGlobals& sg) const {
        float cosNO = -N.dot(sg.I);
        if (cosNO > 0)
            return fresnel_dielectric(cosNO, eta);
        return 1;
    }
    virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
        return pdf = 0;
    }
    virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
        // only one direction is possible
        OSL::Dual2<OSL::Vec3> I = OSL::Dual2<OSL::Vec3>(sg.I, sg.dIdx, sg.dIdy);
        OSL::Dual2<float> cosNO = -dot(N, I);
        if (cosNO.val() > 0) {
            wi = (2 * cosNO) * N + I;
            invpdf = 0;
            return fresnel_dielectric(cosNO.val(), eta);
        }
        return invpdf = 0;
    }
};

struct Refraction : public BSDF, RefractionParams {
    Refraction(const RefractionParams& params) : BSDF(true), RefractionParams(params) {}
    virtual float albedo(const ShaderGlobals& sg) const {
        float cosNO = -N.dot(sg.I);
        return 1 - fresnel_dielectric(cosNO, eta);
    }
    virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
        return pdf = 0;
    }
    virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
        OSL::Dual2<OSL::Vec3> I = OSL::Dual2<OSL::Vec3>(sg.I, sg.dIdx, sg.dIdy);
        invpdf = 0;
        return fresnel_refraction(I, N, eta, wi);
    }
};

struct Transparent : public BSDF {
    Transparent(const int& dummy) : BSDF(true) {}
    virtual float eval  (const OSL::ShaderGlobals& sg, const OSL::Vec3& wi, float& pdf) const {
        return pdf = 0;
    }
    virtual float sample(const OSL::ShaderGlobals& sg, float rx, float ry, OSL::Dual2<OSL::Vec3>& wi, float& invpdf) const {
        wi = OSL::Dual2<OSL::Vec3>(sg.I, sg.dIdx, sg.dIdy);
        invpdf = 0;
        return 1;
    }
};

// recursively walk through the closure tree, creating bsdfs as we go
void process_closure (ShadingResult& result, const ClosureColor* closure, const Color3& w, bool light_only) {
   if (!closure)
       return;
   switch (closure->type) {
       case ClosureColor::MUL: {
           Color3 cw = w * ((const ClosureMul*) closure)->weight;
           process_closure(result, ((const ClosureMul*) closure)->closure, cw, light_only);
           break;
       }
       case ClosureColor::ADD: {
           process_closure(result, ((const ClosureAdd*) closure)->closureA, w, light_only);
           process_closure(result, ((const ClosureAdd*) closure)->closureB, w, light_only);
           break;
       }
       case ClosureColor::COMPONENT: {
           const ClosureComponent* comp = (const ClosureComponent*) closure;
           Color3 cw = w * comp->w;
           if (comp->id == EMISSION_ID)
               result.Le += float(M_1_PI) * cw;
           else if (!light_only) {
               bool ok = false;
               switch (comp->id) {
                   case DIFFUSE_ID:            ok = result.bsdf.add_bsdf<Diffuse<0>, DiffuseParams   >(cw, *(const DiffuseParams*   ) comp->data()); break;
                   case OREN_NAYAR_ID:         ok = result.bsdf.add_bsdf<OrenNayar , OrenNayarParams >(cw, *(const OrenNayarParams* ) comp->data()); break;
                   case TRANSLUCENT_ID:        ok = result.bsdf.add_bsdf<Diffuse<1>, DiffuseParams   >(cw, *(const DiffuseParams*   ) comp->data()); break;
                   case PHONG_ID:              ok = result.bsdf.add_bsdf<Phong     , PhongParams     >(cw, *(const PhongParams*     ) comp->data()); break;
                   case WARD_ID:               ok = result.bsdf.add_bsdf<Ward      , WardParams      >(cw, *(const WardParams*      ) comp->data()); break;
                   case MICROFACET_GGX_ID:           ok = result.bsdf.add_bsdf<MicrofacetGGXRefl     , MicrofacetParams>(cw, *(const MicrofacetParams*) comp->data()); break;
                   case MICROFACET_GGX_REFR_ID:      ok = result.bsdf.add_bsdf<MicrofacetGGXRefr     , MicrofacetParams>(cw, *(const MicrofacetParams*) comp->data()); break;
                   case MICROFACET_BECKMANN_ID:      ok = result.bsdf.add_bsdf<MicrofacetBeckmannRefl, MicrofacetParams>(cw, *(const MicrofacetParams*) comp->data()); break;
                   case MICROFACET_BECKMANN_REFR_ID: ok = result.bsdf.add_bsdf<MicrofacetBeckmannRefr, MicrofacetParams>(cw, *(const MicrofacetParams*) comp->data()); break;
                   case REFLECTION_ID:
                   case FRESNEL_REFLECTION_ID: ok = result.bsdf.add_bsdf<Reflection, ReflectionParams>(cw, *(const ReflectionParams*) comp->data()); break;
                   case REFRACTION_ID:         ok = result.bsdf.add_bsdf<Refraction, RefractionParams>(cw, *(const RefractionParams*) comp->data()); break;
                   case TRANSPARENT_ID:        ok = result.bsdf.add_bsdf<Transparent, int            >(cw, 0); break;
               }
               ASSERT(ok && "Invalid closure invoked in surface shader");
           }
           break;
       }
   }
}

} // anonymous namespace

OSL_NAMESPACE_ENTER

void process_closure(ShadingResult& result, const ClosureColor* Ci, bool light_only) {
    ::process_closure(result, Ci, Color3(1, 1, 1), light_only);
}

Vec3 process_background_closure(const ClosureColor* closure) {
    if (!closure) return Vec3(0, 0, 0);
    switch (closure->type) {
           case ClosureColor::MUL: {
               Color3 cw = ((const ClosureMul*) closure)->weight;
               return cw * process_background_closure(((const ClosureMul*) closure)->closure);
           }
           case ClosureColor::ADD: {
               return process_background_closure(((const ClosureAdd*) closure)->closureA) +
                      process_background_closure(((const ClosureAdd*) closure)->closureB);
           }
           case ClosureColor::COMPONENT: {
               const ClosureComponent* comp = (const ClosureComponent*) closure;
               if (comp->id == BACKGROUND_ID)
                   return comp->w;
           }
    }
    // should never happen
    ASSERT(false && "Invalid closure invoked in background shader");
    return Vec3(0, 0, 0);
}

OSL_NAMESPACE_EXIT


Get to know the Freeletics God workouts and discover how they earned their names. Add knowledge to your strength and beat them all.
You want to do the Spartan Race Trifecta weekend? Follow the Freeletics guide to quick and dirty recovery.
How can the Freeletics Coach get to know you through an app? Discover how to give feedback and the important information your Coach needs to know.


The NextBigWhat team is happy to announce the next edition of mobile conference, bigMobility [Sep 13th/Bangalore]. We continue to build on amazing content and actionable insights.
We announced an IoT (Internet of Things) meetup with IBM. This is part of #BigConnect wherein we will connect corporates/enterprises and startups. The #IBM BigConnect is on July 22nd (Bangalore) and July 24th (Mumbai) and is invite-only (free to attend). Apply for your invite here.
Weekly Recap : Editorially Curated.
In case if you missed out on catching up with great pieces that were published on NextBigWhat, here goes the curated version.
You Know You Are A Brand When.
These 35+ Aged Entrepreneurs Don't Get this!
Twitter App Install Ads : Does It Deliver?
Nokia's End of Hope : Asha And Nokia X Will Be Discontinued.
Jolla is launching in India.
You Know You Are A Brand When..


text:
Value of note sharing website questioned
Cord ImportOctober 15, 20093 mins read
With classes back in full swing at Laurier, most students are starting to feel overwhelmed by their heavy workloads.
For many, juggling classes, readings and essay-writing can be a near-impossible feat.
Laurier student Tim Siad is no different. He too has to deal with the stress of a rigorous academic schedule that can make coursework and midterms daunting.
It is for this very reason that Siad has decided to act as the Laurier representative for University Junction, a new endeavor that hopes to change the academic environment.
He describes the website, which was launched at the beginning of September, as "a free online academic activity tool that helps students learn more efficiently."
University Junction will feature online forums for student discussion on a number of classes; offering notes, online study groups, old assignments and practice tests. "On one hand, I think it has added value to the classroom," said assistant professor of communications Judith Nicholson. "But it makes me wonder what is lost from classroom discussion," Nicholson said of note sharing websites.
While it may seem similar to Laurier's own online student forum, WebCT, the website hopes to connect university students from across North America.
Laurier is among the 119 post-secondary institutions in Canada and the United States that are represented on the website.
The site, which is based solely on student participation, hopes to create resources for a wide variety of courses in a range of faculties.
Siad explains that University Junction will allow a student at Laurier who is taking the same class as a student in Texas to share notes.
Nicholson agrees that sharing ideas is a good idea; however, she is unsure of the value these discussions would have without the full context of the course available.
"I always found the most productive conversations were in reading groups, face-to-face. I don't really get it," said Nicholson about the concept of online discussions groups.
In order to register with the website one must visit www.universityjunction.com and create an account with a university e-mail address.
"A lot of people are intrigued [thus far]," said Siad about the website.
Still, he hopes that more students will soon become a part of the University Junction online community.
Since these websites seem to be showing up year after year, Nicholson added that they may not provide any real benefits, questioning how they are any different than Facebook or something less academic based.
"They might fill the need for the person who starts them, whether it's commercial or personal, but they fall apart after that. They are not really a forum for continued discussion then."
Siad will be in the Concourse and around campus for the next eight weeks to increase awareness about the website and answer any questions that students may have about University Junction.
–With files from Lauren Millet
Come chill with dogs on Laurier's Waterloo campus

redpajama_set_name: RedPajamaCommonCrawl


Unlike public colleges and universities, CCMH is not subsidized by the government. We are therefore supported entirely by fees. Students may apply for Federal and Provincial Student Loans to see if they qualify. Tuition is not subject to HST. The total tuition (including a compulsory student services support fee of $1,400) for the massage therapy diploma program is $21,995. International Student tuition is $25,900.
Student Services Support Fee ($1,400) funds the following: Additional student tutorials, AODA training, special accommodations requirements, unpaid community outreach program, cadaver lab visits, expert guest lectures, team building events, lunch and learn sessions, seasonal events, student lunch events.


Freestyle Founder LA hip-hop artist Aceyalone is set to take the stage at Garfinkels.
When: Friday, March 7. Doors open at 9:30 p.m.
A legend in the world of hip-hop, LA-based rapper Aceyalone is set to take the stage with Juno-nominated artist, Arabesque, and Anonymous Twist at Garf's on Friday night, as part of their West Coast tour.
Aceyalone emerged on the forefront of the underground Los Angeles hip-hop scene in the early '90s as a founding member of the renowned Freestyle Fellowship, a group that helped to shape West Coast hip-hop with albums like, To Whom It May Concern and Inner City Griots . Through his involvement with the Fellowship, Aceyalone developed a reputation as a strong, outgoing emcee.
Piggybacking on the popularity and reputation of the Fellowship, Aceyalone teamed up with Abstract Rude in 1994 to launch a new generation of hip-hop with Project Blowed, an open mic night that Aceyalone eventually turned into a record label. The progressive hip-hop movement caught on, and 14 years later, Project Blowed is still uniting lyricists of all backgrounds.
In the late '90s, he joined forces with Mikah 9 and Abstract Rude to form Haiku D'Etat, and with Abstract Rude, again, to create The A-Team.
By 1995, Acey was ready to step out on his own. He signed with Capitol Records and released his solo debut album, All Balls Don't Bounce. The first album was a hit, and since then he has gained widespread respect as a rapper, and accumulated an impressive discography, with albums like A Book of Human Language, and Lightning Strikes .
More recently, Aceyalone teamed up with producer RJD2 for two new projects: Magnificent City and Grand Imperial. These two veterans of the hip-hop scene meld well, creating a unified voice, with a slick overall sound.
Offering street cred and some sick rhymes, along with an extensive vocabulary, Aceyalone's music is known to be seriously thought provoking and inspiring, with deep lyrics that require exploration. While it's still the kind of hip-hop you can enjoy at the club, it's almost the kind of music you need to sit back and listen to with your eyes closed.


The C603 chair by a Great Japanese Designer – Yuzuru Yamakawa, designed in the 60's but still totally in tune with today's design and comfort requirements. Classic stacking chair. Suitable for public and private use. Also available as a stool and outdoor version.


Finally a Husband's point of view.
At last a Husband has taken the time to write down this all finally.
We always hear "the rules" from the Wife's side.
These are our rules! Please note..
1. Husbands ARE not mind readers.
1. U r in shape..... Round IS a shape!
Pass this to as many men as you can - to give them a laugh..


text:
The Great Prepper Movie List
June 8, 2018 By BugMN 0 Comments Bug Movie Channel
You can also see the full version of Earth2100 on youtube here:
Doomsday Bunkers:Discovery Channel Series focusing on a company that builds bunkers for those who prepare.
I would add Falling Skies to the TV list of Prepper / Post-TEOTWAWKI shows.
Little House on the Prairie:An American pioneer drama series about a family living on a farm in Walnut Grove, MI. Based on Laura Ingalls WildersLittle House Books.The family appropriate show ran for nine seasons from 1974-1982, all seasons have been released to DVD.
One of the largest preparedness communities on the web.
5 Reasons Why Pure Silver Will be the Currency of the Collapse
Earth 2100:Docudrama, a future look at our planet and society through the life of Lucy, and the input of experts. Good quality and chilling reality.
Man, I remember watching Threads through the banister on the stairs when I was like 8, because my dad was watching it and we were allowed to. I cried for WEEKS after watching it. That movie scared me really scared me. Unrelated- this is a great list!!
Its surprising how some movies stick with you. I saw Panic in the Year Zero back in the 60s when it came out and never forgot what that family had to go thru to survive. Having to buy food, firearms and toilet paper AFTER the SHTF always stuck with me. My wife and I drag out our copy every so often just to remind us of what it could be like.
Grizzly AdamsSeason OneandTwo)
Katzcradul, The Producers of BACK TO EDEN and PAUL GAUTSCHI!
excellent list of movies,,they are great,,,i have most lol
Prepardness Spotlight on American Blackout
Aftermath: World Without Oil:A docudrama that poses the question what if the world ran out of oil? and theorizes about what would happen. There is a you tube link here as I have not found an available DVD.
Post TEOTWAWKI Movies(why we stock more than three days of food movies)
Alaska: The Last Frontier Season 3
Meet the Preppers:APNs own Phil Burns goes into depth on prepping with his family in this Animal Planet special.
Posted in:APN CornerFamily PreparednessPreparednessTV and MovieAbout the Author:Stephanie DayleStephanie is a writer for the American Preppers Network, a small local paper and for her blog, The Home Front and was featured in Marie Claire UK in the October 2012 issue that featured women preppers. She is also the credited writer of Emergency Bag Essentials (Swatchbook): Everything You Need to Bug Out released in August 2014 and available on . I write articles based on my own experience with emergency preparedness, self-sufficiency, homesteading, food preservation and life around the farmstead. I grew up in a very rural area where I learned to garden, the art of canning, to hunt and fish, and to raise my own animals for food. I also spent 6 years volunteering for the local county Search and Rescue group where I learned a variety of survival skills and a little bit about law enforcement protocol. As a general rule of principle I do not write articles about information that I have only read – if I am writing about something its because I have done it myself and gone to great lengths to provide you with the facts meshed with personal experience. My alter egos are as an full time mom, amateur photographer, and backpacker. Stephanies past APN articles are featured below on several pages. To connect with her — click on one of the many little square social media buttons below!Subscribe
Alone in the Wild:A three-part series featuring extreme photographer, Ed Wardle, as he is dropped off in the middle of the wilderness and attempts to survive three solo months. Link to you tube provided as I could find no available DVD.
missing idiocracy. the dumbing down of this nations citizens is extremely dangerous and should be considered a national security issue.
Marjory Wildcraft, the Martha Stewart of Prepping is a guest Host! Her grow your own groceries stuff is just fantastic ? even for us non-gardeners
Monumental: In Search of Americas National Treasure:Highly acclaimed documentary about Americas beginnings and how that relates to where we are headed now.
Apocalypse Man:History Channel special hosted by former U.S. Marine and martial-artist Rudy Reyes on how to survive the aftermath of TEOTWAWKI in an urban setting. This is a you tube link, as there was no available DVD.
Little House on the PrairiePilot Movie
Inspire Those Around you to Start Prepping
American Experience: Surviving the Dust Bowl:Highly acclaimeddocumentary about the American Dust Bowl and how they survived it.
Click here to visit me at The Home Front.
20 Real Survival Lessons from World War Z (the movie)
For your entertainment but also motivation and good old Hollywood optimism and maybe a bit of hero worship thrown in for good measure
Collapse (Michael Ruppert):Documentary about a former Los Angeles police officer, author, investigative reporter and radical thinker. He is interviewed about his beliefs that unsustainable energy and financial policies have led to an ongoing collapse of modern industrial civilization.
Me too, but there is never a Preparedness, Survival, or Reasons to Prepare category in the movie sections so finding new movies that peak my interest can be difficult. Therefore I present to you,The Great Prepper Movie List,right here only on theAmerican Preppers Network!There is a section for family appropriate movies but please consult the ratings and reviews of a movie before turning it on with the kids.
The first time prepping ever crossed my mind was when I watched Red Dawn (the original). Navy vet here, and want to thank all the other vets in here.
Survivors:A British sci-fi drama about a plague of global proportions. Anarchy in the streets. The collapse of government and the rule of lawperhaps even the end of civilization itself, followed by the rise of tyranny and vigilantism.
Dual Survival:CurrentDiscovery Channel TV series featuring survivalist instructor Cody Lundin and his partner as place themselves in various locations to demonstrate how to get home alive.
Free ebooks, preparedness expo listings, webinars and more
A lot of the older movies and documentaries on this list can be found on Netflix and/or YouTube, those are good places to look as well.Please note due the nature of what we prepare for, outside of the family category, some of the movies on these lists are exceedingly violent in nature. I have linked the movies to Amazon or Wikipedia where ever possible, please read about the movie before you get it. Check the synopsis, ratings and reviews prior to viewing or purchasing especially if you are sensitive to certain types of violent situations.
I am working on it as we speak feel free to leave any of your book recommendations, I will include them if I havent already!
Hollywood and modern fiction doesnt know how things are going to work out, it only knows what sells and what makes money.Instead of Prepping for a This is it! event as Hollywood and modern literature would have you believe. Its best to prep purely to be as independent as you can for whatever may come your way. In a way, dont prep for a SHTF someday, Prep instead for the SHTF thats outside your door EVERYDAY.
Preparing for an Emergency When You Have a Chronic Illness
Join APN and well share great content and videos with you each week!
Dawn of the Deadnew movieoriginal movie)
yes, there are a lot of documentaries that should be includedsome are very entertaining too like the colony
I Shouldnt Be Alive:An extremely well made and highly acclaimed series by the Animal Planet of harrowing reenacted survival stories from around the world. This is linked to one season, but there are 5 others available.
For anyone that is still following this thread I would like to recommend the youtube video under documentaries called There is No Tomorrow its a very eye opening perspective. Out of the Movies on of my favorites is Trigger Effect, came out in the late 90s but you is still completely if not more valid today.
Click here to follow me on facebook for more preparedness and homesteading tips!
Aftermath: Population Zero:A docudrama that poses the question what if all humans disappeared and follows what would happen to the planet, our homes, structures, and pets
There is No Tomorrow:A fantastic 34 minute animated you tube documentary on how our growth based society is unsustainable even with green energy and the future we will face. Full of facts; author unknown.
Patriotsby James Wesly, Rawles
A docudrama about what would happen if a nuclear bomb exploded in the heart of Washington, D.C.
American Experience: The Crash of 1929:A documentary about the start of the Great Depression and what it meant to America.
The family movies are not R rated nor are the documentaries, and most of the TV shows (with the exception of a few) are fairly family friendly. Combined they make up nearly half the list?
Survivorman:Discovery Channel series,survival expert Les Stroud strands himself in the wilderness for days on end in order to demonstrate how to survive and get home.
Prepper Minded Documentaries / Docudramas
Click on the listed Movies below to read more about them. Each one is linked to a purchasing source and/or more information.
Out of the Wild:Nine ordinary people are given a three-day crash course in survival, then are dropped off in the depths of the rugged Alaska wilderness with minimal equipment and map to make it back to civilization.
The History Channel documentary AFTER ARMAGEDDON is also very good. My parents live in the LA Basin and I cant seem to get them to watch it. A real eye opener.
After entering in your email, youll become a free member of the APN community and will receive ebooks, event listings and webinars in our weekly newsletter. Dont worry, we hate spam too! Youll only receive relevant information and can unsubscribe at any time.Our Privacy Policy
Super-Volcano:A highly acclaimeddocudrama on what would happen if the Yellowstone super-volcano erupted.
Children of Men as a Environ-Anthropologist, this strikes me as a more sensible/realistic depiction to the Climate change issue.
American Experience: Influenza 1918:Documentary about how America was ravaged by the flu epidemic of 1918 that killed 675,000 peoplemore than died in all the wars of this century combinedbefore disappearing as mysteriously as it began.
Do you know of a good movie that folks may enjoy, but its not on the list? Add it to the comments section below to share it with everyone else.
After Armageddon:Highly acclaimed docudrama about a runaway flu pandemic has swept the nation and killed a large part of the population, one family must learn to survive to make it to a safe haven. A couple of doomsday preppers are featured in this special.
hey, and if you like DOOMSDAY PREPPERS, then check out the season finale eating bugs! ?
First time I thought of prepping was The Omega Man. Not so much the scenario but Nevilles setup, tool choices, etc., and the contrast between his setup and that of the young exiles. I was only 8 or so when it came out, but it planted a lot of thoughts. Followed closely by Day the World Ended and Panic in the Year Zero.
Life After People:A History Channel series spin-off from their Aftermath: Population Zero docudrama. See what happens to the cities and the structures we built after humans are not around to maintain them any longer. As a side note this series does cover some interesting information on the fate of un-maintained nuclear facilities and dams.
Collapse (Nat GEO):Docudrama on how societies succeed or fail and how our own society may fail.
The Colony:A Discovery Channel series that is a reality hybrid show that challenges 24 very different people, to rebuild their own civilization in a post-apocalyptic world created for them.
Training for the Apocalypse:A History Channel special about the personal stories of two men and what prompted them to prepare.
Evacuate Earth:A fascinating docudrama that theorizes how we would evacuate the earth in the face of impending doom, and how society would react. There is a you tube link here as I have not found an available DVD.
Shelter, Fire, Water and the Survival Gear that Makes the Difference
How to Start a Food Stockpile on the Cheap
As preppers, its important to remember that movies and TV shows are for entertainment purposes ONLY. Just because a hollywood director thinks modern society is going to end up like a scene from The Road after any given prolonged disaster doesnt mean its really going to happen that way. Please dont base your urgency, plans, or preps on movies or TV shows, instead base them on careful research and common sense.
Alaska the Last Frontier:A fantastic Discovery Channel series about the Kilcher family and their homesteading off-grid way of life in Alaska.
This navy vet agrees, but it does give info for the absolute newbs!
Have you ever wanted to sit down and enjoy a good movie that has a little to do with prepping or surviving?
The Best Defense:An excellent current Outdoor Channel educational series teaching self-defense through knowledge, skill, practice, and emergency preparedness.
Man, Woman, Wild:CurrentDiscover Channel series featuring special forces survival expert, Mykle Hawke, and his wife Ruth as they strand themselves in random locations to demonstrate how to get along, survive, and get home alive.
Yukon Passage:Older documentary of four young men retracing the foot steps of gold stampedes through the Yukon Territory surviving off of minimal supplies and the natural world around them.
The Alaska Experiment:Discovery Channel reality series, four teams of urbanites attempt to survive the wilds of Alaska for 3 months.
You might wish to add TV shows Jeremiah, The Last Train (U.K), and the miniseries Amerika. Falling Skies too.
Perfect Disaster: Anatomy of a Solar Storm:Docudrama that theorizes what might happen to our civilization and technology if we are hit by a massive solar storm. This is part 1 of 5 all parts featured on you tube as I could not find an available DVD.
Far From Home: The Adventures of Yellow Dog
Jericho:A CBS fictional series about a small towns efforts to survive following a national terrorist attack and the collapse of the United States.
Question???? Good movies listed here, but what about some good prepper books???
Forgot Shaun of the Dead! Good one Alex.
The Adventures of the Wilderness Family
Prepper Minded Family Movies(Ratings Range from G to PG 13)
Even those with a disability or chronic illness should be prepared for an emergency situation should one arise. Prepping isnt just for the able-bodied. The task may just be a bit trickier, as there would be more equipment and necessities to have on standby than usual. A different exit strategy could also be required, depending []
When Aliens Attack:Well done docudrama on the theory of a future alien attack and what human society could actually do about it.
Just got the new Red Dawn last night hope its as good as the first
Take it from a U.S. ARMY vet with 10 years of service. These moves are only FYE.
Red Dawnnew movieoriginal movie)
Revolution:NBCs current post apocalyptic science fiction drama series that follows a group of people who are trying figure out how to turn the power back on, after losing planet wide electricity 15 years earlier.
The Walking Dead:A current AMC original fiction horror series about azombie virus has infected most of the human population, those left fighting to survive battle the zombies and themselves.
2012: Countdown to Armageddon:A five-part History Channel series which covers many different views of how the world will end. It features several different preppers in the series including APNs own CEO, Hugh Vail.
Tags: Bug Movie Channel


The VOOPOO Vmate is tiptoeing with its elegant design. Inspired by a danseuse, the Vmate is a delicate device with lightweight and swiftness. It works perfectly with 2 external 18650 cells, firing up to a max output power of 200W. The Vmate is made of reinforced zinc alloy, making it more lighter than regular MODs. It also adopts 32-digit GENE.FAN Chip to bring a instant firing, stable and safe vaping experience to vapers.
VOOPOO MOJO R Starter Kit includes the MOJO TC Mod and the Conjure RDA. MOJO TC Mod powered by long-lating 2600mAh battery still supports 88W max output wattages, and it continues to use the 32 bites GENE. Fan Chip to ensure high-performance and 10-milliseconds firing speed. While the 2.5ml Conjure RDA could be refilled through both top and bottom feeding, and the cellular airflow design brings you more delicate and denser flavor.
The VOOPOO RimFire RTA is the first RTA of VOOPOO with user-friendly and highly-detachable structure. The VOOPOO RimFire utilizes dual full-wrapping airflow system. Air goes down directly from top to coils and travels through two side cavities before getting up into the build deck which can avoid leakage and bring pure flavor.
VOOPOO Pericles RDA Tank Atomizer is an exquisite vape RDA for beginners, which represents dual coil that bring massive clouds to you. The VOOPOO Pericles RDA measures at 24.2mm in diameter with a resin drip tip that features sleek and smart design elements that combine for a universally appealing design. Pericles RDA utilizes top filling and bottom airflow system for smoothly air delivery, while air can be transported by coils thoroughly in the quadri bottom-side airflows.
The VooPoo VMate mod is the newest innovation from VooPoo to introduce a sleek rounded and extremely lightweight design. It features a sleek rounded zinc-alloy chassis accented by polished resin side panels which house individual 18650 batteries. Directly above each battery compartment stands the dual firing buttons, accenting the device as each upper corner becomes the fire button without negatively affecting the overall aesthetics.


Yes, I had the app set to expire some time around mid-May.
I've made some general refinements on my code, but the fact is, the earlier problems still persist. I need to find a good Android video screen capturing app--or dig out the tripod from the back of my closet--in order to record for parasti, rlk, or others, what the problem I'm experiencing is (framerate drops, e.t.c.).
As crazy as it sounds I think the latest commits by parasti have improved the gameplay somewhat for certain levels.
If you had shadow turned off in options, that option now actually has effect. That about sums up my changes.
Are there any status updates on the Android version ?
Most likely you saw it already, but there is progress with the Nokia N900 port, which ran into similar problems, and they found (kind of) a solution.
Is the situation similar on Android devices (newb question) and could the same solution be applicable to the Android version?
Did you already have any luck profiling?
No updates. I've been busy updating my other Android app, Shelves, and stopped playing with the port.
I will most definitely take a look at what's going on with the N900 and try to see if anything can be applied to the Android version!
Well, I set the UPS to 30 as the other thread suggested. While the level did play better, I got much more "blurriness," as shown in the attachment.
Is your version based on the latest trunk?
"Robert: The solution to the sky is to simply clear the color buffer."
Just in case anyone is wondering, I am still working on.
I completely broke my entire app build trying to do something "efficient." In short: I used to cheat and have the data folder copied to the SD card. This resulted in about a two minute wait the first time the app was run. Decided that this completely sucked, I instead tried to read the game data directly from the packaged Android app itself (which is essentially just a zip, so PhysicsFS can handle it).
Long story short, that doesn't appear to be as easy as I thought. While I can see all the game data, I apparently can't read any of it.
I'm torn between distributing a 50 MB app on a mobile device, or making a 25 MB app work. I am struggling to complete the latter. I'll toss all the code on GitHub if it ends up working out.
Put the contents of the data directory into a data-x.y.z.zip and install it as neverball/data/data-x.y.z.zip?
I'll toss all the code on GitHub if it ends up working out.
This is kinda exciting. Out of curiosity, is there a reason you wouldn't be committing directly to the SVN repository?
Cheese mentioned this on IRC, too. I'd actually prefer it be on Github as that makes it easier for me to work with, but a branch in SVN is fine, too.
Oh, there's an IRC channel? I wouldn't mind joining that and discussing this further.
Here's basically how I've handled this spin-off/port: every so often, I'll synch to the SVN. Whatever works for me, I keep. Whatever doesn't work, I have to wrap around a preprocessor instruction, like #define ANDROID, and redo. I know that there are some general coding guidelines, but I did not know if this was the appropriate way to handle the situation. My life would be much easier if the preprocessing work could be submitted directly to the trunk code, since I wouldn't have to diff so many times with so many false positives (i.e., diffing against actual new content, and diffing only to discover that my preprocessor instructions caused a mismatch). Edit: also, none of the Wii configuration works either. No idea how hard it would be--I know you can pair Android to a Wiimote, but I've never tested it myself.
As well, I have my own GitHub account, I know how to use git better, so I feel more comfortable putting it there. But in a better world it would be added as its own "flavor."
That's more or less how I've done it. Reading the Android data files is tricky, since it's a zip within a zip--so I'm trying to modify the PhysicsFS code as gently as possible. Previously, it was just a simple matter of making the data directory the sd card--no muss, no fuss. Now, I'm thinking I have to prepend the path to the data zip before any fs_open() call. That doesn't sound very efficient, though.
I imagine that it'd be worthwhile to eventually incorporate all your work into the trunk.
But in a better world it would be added as its own "flavor."
I'm not sure what you mean by "flavour".
I am so much looking forward to this. Just out of curiosity, will the GLES code be compatible with 1.1 spec?
Yeah, it's #neverball on Freenode. I don't idle there much though (IRC becomes a major distraction for me), but I may join randomly sometimes.
Here's basically how I've handled this spin-off/port: every so often, I'll synch to the SVN. Whatever works for me, I keep. Whatever doesn't work, I have to wrap around a preprocessor instruction, like #define ANDROID, and redo. I know that there are some general coding guidelines, but I did not know if this was the appropriate way to handle the situation. My life would be much easier if the preprocessing work could be submitted directly to the trunk code.
I wouldn't mind that at all, but it depends on what the changes are. I'd need to look at it first.
I meant for when you copy it over (or is that bad practice under Android). The installation is not going to be lightning fast, but it won't be uncompressed 50 MB and two minutes of copying.
Reading a ZIP from within a ZIP sounds like a major PITA, I wouldn't want to go there.
Well, here's my update du jour: I suspect something in trunk is broken, for at least my mobile device.
After hours of debugging on my end, I decided to try synching to the last update to branch/gles, and lo!, the game worked on my phone! To be clear: it's not that the phone isn't finding the data files (as I originally thought) but that the game isn't running at all. No crash, no error logs. Just a black screen, and absolutely no sound.
I checked out #3660 from the trunk; no luck in a fix. Right now, I just tried #3624, also to no success. I find it difficult to belief that something so adverse occurred in the weeks between the merging of the branches, but who knows.
Edit: I couldn't even get #3608 (the commit after the merge) to work. That scares me. Can anyone else with a mobile build (N900?) confirm? I would prefer that I am doing something wrong.
You and mardy (Maemo porter) have previously both confirmed that the trunk code works, in the OpenGL ES thread.
I'm not sure what is "proven" by the fact that the last branch commit works and the trunk commits don't, but there's clearly some nefarious entity blocking me at this moment. I'm investigating #3 and #4, since experience has shown that for every update Google makes, they've invariable broken something else.
NINJA EDIT #4: Recompiling the data folder makes the magic come back, at least for rev 3648.
Hopefully a mod can close this topic?


Modern Round Dining Table For 8 Tags : Flawlessglass Dining Setthat Will Make You Take A Deep Breath Charmingtrestle Dining Tablethat Will Leave You Inspired Prettykitchen Decoration Tipsthat Will Save You Some Time. Terrifickitchen Decor Inspiration.
Zoie Henry Dining Room Furniture, 2018-07-12 17:40:47. Of all the furniture you purchase, the dinning room furniture needs to be paid special attention to. The reason is clear- Dining room is a place that host most of the family gatherings for lunch or dinner, and if the furniture selected is not good then even the best food can taste very mediocre. Moreover just like any other choice, the dining furniture is also a reflection of you and your taste. Many factors need to be kept in mind while selecting the right kind of dining furniture.
Anya Klein Dining Room Furniture, 2018-07-15 14:54:15. Dining tables are meant to last for years and years, so choose wisely before settling on one. As versatile as they are a standout, dining tables appear in a variety of sizes, shapes and finishes. A contemporary dining room set, however, features clean lines, modern construction and a geometric outline that lends a quiet sophistication. Look for chairs that match, or that at least match the style of the table. They also usually come in a dark hue like espresso or black. While dark colors can overwhelm a room, in a dining room they are perfectly suited. You want your dining table to stand out, and dark hues, particularly against a lighter backdrop, will do exactly that.


You may upload a scanned copy of your completed (and signed) form below. We will email you back confirming we received your submission. Please note that many forms require a check payment to be mailed or delivered to the township hall. Alternatively you may just mail or drop off a copy of your form.


(LAKEWOOD RANCH, FL)- Prom can be a pricey event but also a once in a lifetime experience for many LRHS students.
It all adds up with the attire, dinner, tickets, and transportation, so Mustangs are bound to blow a hole in their budgets.
The attire can vary in price depending upon how much people are willing to spend. Tuxedos cost around $200, while dresses are anywhere from $100 to $500.
The dinner cost all depends upon what you order. Depending upon the restaurants students go to, they are looking at around $15 to $30 per meal.
Tickets depend upon a student's grade level and the time of purchase. Currently for juniors' tickets are $70 and for seniors they are $60.
The prices only go up the longer student wait to purchase them. Tickets will be on sale through March 14.
Transportation is another factor in prom cost. Many students book limos or party buses to transport them while others opt to drive their own vehicles.
A limo costs around $75 to $200 an hour. Within prom starting at 7 p.m. and ending at 11 p.m. students are looking at needing to rent it for about 6 hours. This being another expensive aspect of prom. Though within a big group, student could split this cost.
Prom expenses can average anywhere from $260 to $800 per person.
The LRHS prom is scheduled for April 5. School officials remind Mustangs the prom dress code will be enforced.


text:
Posts Tagged 'Official International ABBA Fan Club'
Happy 25th anniversary, ABBA fan club!
This year marks the 25th anniversary for the Official International ABBA Fan Club.
The weekend before last the fan club hosted its annual International ABBA Day in Roosendaal, The Netherlands. Hundreds of fans came together from all over the world to celebrate the club's anniversary, spread over the entire weekend from Friday night to Sunday afternoon.
A common question these days is "do I really need to join a fan club?" Even in these days of instant news and social networking the answer is "yes". Being a member of the fan club makes one feel like a member of an exclusive community.
The ABBA Fan Club provides a quarterly magazine to members, with the latest news (often exclusive news first announced in the pages of the magazine), a mix of historical features and new articles, rare photos and more.
Members also receive special gifts, and offers for tickets to ABBA-related events, which can sometimes lead to encounters with ABBA members.
I'm proud to have been a member and contributor to the ABBA Fan Club for over ten years. Congratulations to Helga and Anita and the whole fan club team on this momentous anniversary!
Tags:ABBA, Official International ABBA Fan Club
Posted in ABBA, History | Leave a Comment »
Ten ABBA websites I visit regularly
Ten years ago I started writing the ABBA on the Web column for the Official International ABBA Fan Club Magazine (then known as the Agnetha, Benny, Björn, Frida Fan Club). The first column appeared in the Fan Club Magazine # 65 in December 2000. This article appears in Magazine #105 December 2010 to commemorate the tenth anniversary of that first column. We are going to take a look at ten ABBA sites that I visit regularly for news, information, history, connecting with other fans or just for fun.
ABBA Omnibus My own website, described in Elisabeth Vincentelli's new book ABBA Treasures as "comprehensive" and on Carl Magnus Palm.com as "one of the best ABBA sites around". ABBA Omnibus makes a good starting point as the Links section includes every single known ABBA and related site on the internet, categorised and ranked for easy access. It also includes an extensive discography, videography and bibliography, and a Songs section which includes every known ABBA song or working title, so you can follow the development of a song's history from start to finish. Until recently it was known as ABBA World, but the name has been changed so that it is not confused with the touring exhibition.
Worth regular visits for: links to every other ABBA site, and "everything ABBA".
The Official International ABBA Fan Club The fan club's website is frequently updated with the latest and exclusive ABBA news and pictures. Of course it also includes lots of news and information about the fan club, its history, the fan club's services, biographies of the ABBA members and other related projects. It also includes all the information you need about the annual ABBA Day, and wonderful reports and photos about previous years' ABBA Days, so you can see how much fun we fans have every year.
Worth regular visits for: ABBA and fan club news updates.
abba4ever forum calls itself "The World-Spanning ABBA Fan Online Community". It is a very active and friendly forum with members from all over the world discussing all aspects of our favourite group. abba4ever was started up after the forum on the official ABBA site was closed down a few years ago, but has since forged its own identity.
Worth regular visits for: contact with other fans
icethesite is the unofficial "Benny Andersson and Bjorn Ulvaeus news site". It is primarily dedicated to Benny and Bjorn's careers including their musicals Chess and Kristina från Duvemåla, and of course Benny Anderssons Orkester, but will also include news about ABBA, Mamma Mia!, Agnetha or Frida. icethesite is often the source for breaking news and also includes exclusive content including occasional interviews with people involved in the boys' projects.
Worth regular visits for: Benny, Björn and news, news, news.
ABBA for the record calls itself "the ABBA collectors web reference". The site includes ABBA albums, singles, CDs, cassettes, videos, DVDs and other collectibles from Argentina to Zimbabwe, showing covers, inner sleeves, labels, booklets and other details. ABBA for the record contains over 2,600 items with more items added weekly, thanks to many fans who supply scans. Here you will find images of many rare ABBA records that you have probably only read about. The site also includes occasional special features on particular formats, records or years.
Worth regular visits for: weekly updates with new ABBA records.
ABBA on TV contains every (known) appearance by ABBA or the members on television, film and video. It is regularly updated with contributions from fans as more information becomes available. The site is a labour of love for webmaster Sara Russell, who professes her love for watching ABBA on television. Sara is also the author of the book The ABBA Guide to Stockholm.
Worth regular visits for: checking out ABBA television appearances.
ABBA Plaza is one of the longest running and most comprehensive fan sites on the internet, with detailed information about ABBA's career and also personal touches from webmaster Robert, including his personal collection of rare ABBA items, and his encounters with ABBA members over the years. ABBA Plaza is worth visiting regularly for its "Fun" section, with many ABBA games including several different quizzes with various skill levels, a "weakest link" elimination game, a photo puzzle and much more. It also includes an International ABBA News section with links to various news sources.
Worth regular visits for: regularly updated polls, games and quizzes.
Mikory's ABBA Blog is updated daily with historical newspaper and magazine articles and images including the "ABBA Pic of the day", and also includes all the latest ABBA news direct from Sweden, often with the first English translations of articles from the Swedish newspapers.
Worth regular visits for: news and historical articles from Sweden
Carl Magnus Palm.com is the website of the author of many acclaimed ABBA books including ABBA – The Complete Recording Sessions and Bright Lights Dark Shadows – The Real Story of ABBA, among others. Carl Magnus has also worked a consultant for Universal Music Sweden for most ABBA projects for the past decade. His website includes fascinating additional information about those many ABBA projects, plus other book and CD projects he has worked on.
Worth regular visits for: behind the scenes on latest releases.
ABBAsite.com is, of course, the official ABBA website. It includes biographies on ABBA and the individual members, plus many of their artistic collaborators. It also includes a discography of available CDs and DVDs and a store to buy those CDs, DVDs, downloads, and other exclusive merchandise including t-shirts, caps and more. ABBAsite is also the first source for news on the latest official ABBA releases from Universal Music. You can sign up for a newsletter to receive the news as soon as it is announced.
Worth regular visits for: official ABBA news and latest releases.
Do you agree or disagree with any of these choices? Are there other ABBA sites that you would recommend to other fans? Let's discuss here.
Tags:ABBA, ABBA on the Web, Official International ABBA Fan Club
Posted in ABBA, Site | 6 Comments »
ABBA Treasures


Your wedding is going to be one of the most meaningful experiences of your life. With all the planning that goes along with it, we know you'll have a lot on your mind. At Embassy Suites, we'll take the guesswork out of your preparation by providing you with the perfect backdrop and expertise for your special day.
From event rooms to catering to setting up accommodations for your out-of-town guests, our staff will be here to assist you in planning your event. We'll help you plan the details of your time with us and help you select and book event spaces that fit your needs.
Our tasteful and elegant Majestic Ballroom is perfectly suited and customizable to your wedding of 75 to 500. Imagine you and your guests at the heart of the city with views of the Riverwalk and downtown. Your style and dreams, together with our experience and passion will create a wedding full of memories, and uniquely yours.
The per person price includes all of the above items and is determined by your main course selection from the entrées or buffets on the following pages. Your estimate will be determined based on the number of guests attending your reception. A 24% service fee and appropriate taxes (current and subject to change), currently 8.25%, will be added to your per person price for all food and beverage.
*With a minimum of 100 wedding guests.
Please call our wedding department at (210) 424-6203 for details.


text:
10/04/2018: Purple Rain by Prince
Prince was one of the most eclectic and colourful artists ever. There's just no denying that his originality and creativity made him something of a music genius.
Although he has made many other fantastic songs that may or may not make an appearance further down the line (Follow Twitter or Facebook and you'll be first to know!), Purple Rain gets the honour of being the first song to be featured on Music365.
Released in 1984, this 8 minute epic is a rock song that builds from a sultry organ verse to a thunderous rocking chorus, and is one of those songs that really can justify its greater than usual length. There is a shorter single version (the long version is from the album of the same name) but to be honest the song is at its most enduring as a grand piece than an easy pop song.
It reached number 2 in the U.S, where it remained for two weeks, and was certified gold the year of its release. In 2016, when Prince tragically died of an overdose, the song re-entered the charts and reached number four, such was Prince's staying power and influence on our culture.
CategoriesRock, Uncategorized TagsEpic, Pop, Prince, Purple, Rain
Previous PostPrevious Isn't it nice to learn a new song everyday?
Next PostNext 11/04/2018: Dance Wiv Me by Dizzee Rascal feat. Calvin Harris


Reprinted from Island Times, February 9, 1999.
The man who would be king of Orcas Island's largest marina has a long and well-documented history of financial failures and questionable business dealings.
Developer Randy Previs, conducting business under at least 22 separate corporate and partnership names since 1979, has left behind him a twenty-year-long trail of bankruptcies, foreclosures, defaulted loans, broken promises, unpaid bills, unfinished projects and abandoned obligations. More than one Previs project has collapsed into a rubble of insolvency and acrimonious litigation, leaving hapless investors holding the bag.
The Island Times has taken a detailed look at Previs' track record over the past two decades. What we found raises a disturbing question: Will Orcas Island be the site of Previs' next spectacular failure?
The plan is ambitious; a $20 million-dollar, 94-slip marina, the largest on Orcas Island and by far the most expensive development of any kind ever undertaken on the island. Randy Previs acknowledges that he's never built a marina, or anything else as elaborate as the Orcas Bay proposal, but he says Bill Anderson — his business partner in Seavestco Inc. — has.
Previs says he and Anderson have hired the best engineers, designers and researchers in the business to advise them on the project, and he promises to build a beautiful marina that the island will take pride in.
But considering how he's performed in other places around the state, Previs' assurances may not be enough to calm the fears of local residents who are nervously eyeing his plans to radically change the look of Orcas Island's front door.
The paper trail starts with Previs' first bankruptcy, filed on Feb. 25, 1980. Faced with a mountain of debt, including court judgements and unpaid bank loans, Previs claimed $1.16 million in assets against $731,000 in liabilities. He sought Chapter 11 protection, he said in an April 18 court affidavit, to reorganize and pay off his creditors.
But Previs apparently got off on the wrong foot early in the proceedings. Just a few days before filing for Chapter 11, Previs transferred ownership of some waterfront real estate on Hood Canal to his father. The court later ruled the transfer — which listed the price of the transaction as "love and affection" — a fraudulent attempt by Previs to put assets out of the reach of his creditors.
About this time, Previs also sold a 53-foot Hatteras yacht named "The Brute" for $273,000. He spent most of the money before it could be applied to his bankruptcy. Some went to pay off debts; some went toward living expenses. A $13,000 chunk was given to his girlfriend, Katie Propst, whom he described as a "caretaker." Katie later became Randy's wife and business partner.
These incidents, along with his finding that Previs initially filed papers that valued his assets at $335,000 less than they were actually worth, alarmed Judge Samuel J. Steiner, who presided over the bankruptcy case.
Just six weeks into the Chapter 11 filing, Judge Steiner decided Previs couldn't be trusted to conduct his own affairs during the bankruptcy and appointed a trustee to take over.
In 1983, after several prospective deals had fallen through, Judge Steiner concluded Previs wasn't going to be able to make good on his reorganization plans. Over Previs' vehement protests, the judge converted the Chapter 11 reorganization into a Chapter 7 liquidation.
During the entire case, Previs battled with his court-appointed trustee, routinely filing challenges to trustee decisions. In 1985, he sued the trustee, alleging malfeasance that he says cost him over $1 million in lost value to his estate. That claim was later dismissed when Previs failed to show up for a pre-trial conference. His appeal of the dismissal was denied.
When the protracted case finally ground to an end in 1988, Previs had already set in motion the chain of events that would culminate in another Chapter 7 bankruptcy just two years later.
Previs has spent a lot of time in court over the past two decades. According to court records in eight Washington counties, he's known to have been a party to at least 41 civil lawsuits — not including his two federal bankruptcy filings — since 1979. In those suits, Previs has been the defendant 30 times. He's been the plaintiff eight times, and in three cases his status is unclear.
Typically, those cases have been brought by companies, banks or individuals who had lent money to or performed services for Previs or one of his many corporations and weren't paid. Some are the sort of small-change disputes that often arise between business people in the normal course of commerce.
But others reveal a pattern of failing to honor financial obligations on a sizeable scale.
Previs borrowed $60,000 from Rainier National Bank in May, 1979. According to an affidavit submitted by Rainier assistant vice president Tedd Reamer, Previs didn't apply the funds to the investment the loan was supposed to be for. (In bankruptcy proceedings, Previs later acknowledged he had diverted the money, but said he told Reamer about it and the bank officer didn't object.) Instead, Previs spent the money paying other creditors, then gave the collateral that guaranteed the loan to his father. A King County Superior Court granted summary judgement to the bank, but by that time Previs had filed Chapter 11 bankruptcy. After nearly eight years of notably contentious bankruptcy proceedings, Rainier Bank had to settle for less than $20,000, about 30 cents on the dollar.
Over an eight-month period in 1990-91, Seattle-First National Bank loaned $226,000 to Previs, A&P Machinery, PEC Investments and William Anderson (his partner in A&P, as well as in Orcas marina proponent Seavestco Inc.). When they defaulted on the Promissory notes in 1993, Previs and Anderson signed a "forbearance agreement," in which the bank agreed to give them more time to get caught up on the loans. They made a few more payments, but a year later a King County court commissioner found they had defaulted on the new agreement as well, and ordered a sheriff's sale of A&P's heavy equipment, including a D-9 cat, grader, backhoe, excavator and more.
Asked about the bankruptcies, lawsuits and charges of unscupulous dealings, Previs says islanders have no need to worry about the financial stability of the marina project.
Previs says his current financial position is strong, and that of his Seavestco partner Bill Anderson is even stronger.
All businesses have their ups and downs, and developers are particularly vulnerable to the vagaries of the real estate market and the volatility of large-scale cash flows.
But, taken as a whole, Randy Previs' documented history can be fairly said to raise legitimate red flags for anyone affected by his business deals.
Previs' 1980 bankruptcy was extraordinarily long, contentious and expensive. It covered nearly eight years and the official file is a brick of paper that stands more than two feet high. Eleven years after it ended, lawyers involved in the case remember it as The Bankruptcy from Hell.
And in a Sept. 1983 hearing, Judge Samuel Steiner placed the lion's share of the blame for the legal nightmare on Randy Previs.
Between 1980 and 1985, with his financial affairs supposedly under the supervision of a court-appointed bankruptcy trustee, Previs legally obligated himself for hundreds of thousands of dollars in loans and professional services in an effort to salvage his investment in a property on the shores of Lake Washington in Kirkland. His efforts to build Marina East, a 22-unit luxury condominium complex and marina, collapsed in a tangle of liens, foreclosures and lawsuits that led directly to another bankruptcy in 1990, in which creditors were left holding the bag for $1.25 million.
More lawsuits, the Anacortes story and a curious land deal or two.


Yesterday, the Islamic Revolutionary Guards Corp (IRGC) of Iran announced that it had shot down an Israeli UAV.
Today it released photos of what it says are the remains of the alleged Israeli UAV. However it did not show any proof that the UAV belonged to Israel.
There was additional news today from Iran where the IRGC stated that the UAV was not launched directly from Israel.
What is interesting is that the government of Israel has refused to comment on this issue.
The UAV had nothing to do with Israel. But by staying silent the government of Israel wants to create the perception in Iran that Israel is closely watching the Iranian nuclear program. As senior Haaretz correspondent Amir Oren stated on the i24 news channel last night, "as long as the Iranians believe they are being watched and whatever they do is transparent, this is good for Israel". This theory is helped by the fact that the UAV news was headlines news in numerous Iranian news outlets today.
The UAV belonged to another country and its not Israel's place or business to comment on the military activities of other countries.
Lets see if any new evidence or news emerges over the next few days.


If you can spare the cash this is a good mouse offering from Microsoft.
Optical is so last year darling - well that's what Microsoft and Logitech want us to hear when we start talking about mouse technology. Both have launched laser guided systems that promise to be the bees knees. We look at Microsoft's offering - the Microsoft Wireless Laser Mouse 6000.
The silvery grey right handed mouse has like previous models been designed with ergonomics at the forefront. The Sculptured mouse features space for your thumb and index finger while offering 5 buttons all at your fingertips.
All the buttons can be programmed to what you want such as web browsing and the tilt-scroll-wheel which allows you to scroll vertically and horizontally is very smooth indeed.
In a vein attempt to offer something that Logitech doesn't, Microsoft has introduced a magnifying feature that allows PC users to magnify any area of the screen in real-time. It's a useful feature for all of two minutes although it does save you from leaning into the screen to get a closer look. For Mac users however the Magnifier enlarges text and images on the entire screen.
To achieve the wireless connectivity, Microsoft has shipped a wireless transmitter in the box that is roughly the size of the mouse itself and this plugs into a spare USB slot. Connecting the two devices was easy and almost instant. The range isn't the best in the world - a mere 6-8 feet before we started losing control of the pointer on the screen, but then at this range we had to enlist the help of a colleague to make sure the pointer was still moving as we could no longer see ourselves.
Going wireless does have its disadvantages - mainly that you will need to replace the batteries. Microsoft is promising 6 months from two AA batteries.
As for the performance of the laser (don't worry you can't replicate the scene from Goldfinger or take your mates eye out with it) it is very good.
Microsoft say that the quality is down to a Definition Laser with Intelligent Tracking System. That translates to 1,000 dpi resolution that's hard to beat for use in tight spaces, plus a capture rate of 6,000 frames per second to improve a laser mouse's already impressive ability to work on different surfaces.
In our tests we were able to use the mouse on pretty much every surface - mouse mat, shiny desk, head, colleagues face and still get a response on screen.
The Microsoft Wireless Laser Mouse 6000 is a very good mouse that certainly allows you to get the job done. The use of batteries over a rechargeable system as with Logitech will be something to bear in mind, but with one set lasting you 6 months this isn't going to be a high cost factor. What is, is the £40 price point and the fact that it's right handed.


Well, we just had dinner and will go for an evening walk soon.
Stockholm impression – passing this house each day on the way to the yoga studio. Just having a little crush. . .
Todays words of wisdom right from yogaschool in Stockholm. ..


text:
Palo Alto: Mid-century Loral buildings sell for…
Mega deal: Investors buy big Palo Alto research buildings next to Google properties
Alexandria Real Estate pulls off $291 million deal for Loral buildings in Palo Alto near Google parcels
A research and office building at 3825 Fabian Way in Palo Alto that has been bought by Alexandria Real Estate from satellite maker SSL. A Southern California developer and realty investor has dramatically widened its shopping spree for Palo Alto properties in choice sites with the purchase of a huge lot containing multiple buildings next to parcels Google owns.
A Palo Alto research and office building at 3825 Fabian Way that has been bought by Alexandria Real Estate. A Southern California developer and realty investor has dramatically widened its shopping spree for Palo Alto properties in choice sites with the purchase of a huge lot containing multiple buildings next to parcels Google owns.
Exterior of an office building on Fabian Way in Palo Alto that has been bought by developer Alexandria Real Estate. A Southern California developer and realty investor has dramatically widened its shopping spree for Palo Alto properties in choice sites with the purchase of a huge lot containing multiple buildings next to parcels Google owns.
Palo Alto properties on Fabian Way near East Meadow Drive that have been bought by Alexandria Real Estate from satellites maker SSL, outlined in red. Adjacent properties previously bought by Google are outlined in green. A Southern California developer and realty investor has dramatically widened its shopping spree for Palo Alto properties in choice sites with the purchase of a huge lot containing multiple buildings next to parcels Google owns.
PUBLISHED: December 11, 2019 at 5:45 am | UPDATED: December 12, 2019 at 3:09 pm
PALO ALTO — A Southern California developer and realty investor has dramatically widened its shopping spree for Palo Alto properties in choice sites with the purchase of a huge lot containing multiple buildings next to parcels Google owns.
Alexandria Real Estate, which owns and is developing multiple office buildings along San Francisco's eastern shoreline near the gleaming Chase Center, has lately turned its attention to sites in Palo Alto, one of Silicon Valley's hubs for tech and life sciences.
Pasadena-based Alexandria, acting through affiliate ARE San Francisco No. 80, has gobbled up research and office buildings in Palo Alto that were sold by satellite maker SSL, according to Santa Clara County property records that were filed on Dec. 10.
The Alexandria affiliate paid $291 million — in cash — for the buildings that had been owned by SSL, county documents show.
The buildings are at least a half-century old and have addresses of 3825 and 3875 Fabian Way. They have been used for decades by SSL and its predecessor Space Systems Loral, a famed defense contractor that manufactures satellites. SSL is now a unit of Maxar Technologies.
Property databases show that one building involved in the deal was constructed in 1956 and another was built in 1967, relics of the heyday of the defense industry that blossomed in Silicon Valley during the Cold War.
Yet for Alexandria, the real value of the properties might be the nearly 24 acres of land beneath the buildings. The properties could potentially be redeveloped and replaced with modern office buildings.
Alexandria's expertise includes the development of office and laboratory space for life sciences and technology companies. That's the sort of space Alexandria has developed along the San Francisco waterfront near Chase Center and the Oracle baseball park, replacing aging structures with sleek new buildings.
The push into Palo Alto real estate by Alexandria includes a string of purchases in 2018 and 2019.
In January 2018, Alexandria Real Estate paid $136 million for Embarcadero Place, a four-building office complex on Geng Road near Embarcadero Road in Palo Alto.
About a year after that, in January 2019, the developer paid $100 million for an office building at 3170 Porter Drive in Palo Alto. Then in August of this year, Alexandria paid $97 million for an adjacent office building at 3160 Porter Drive. The seller in both of these deals was a high-profile organization: Stanford University. The university continues to own the land beneath the two Porter Drive buildings.
Alexandria Real Estate's most recent Palo Alto purchase of the SSL buildings on Fabian Way leaves the developer with Google as perhaps its most high-profile neighbor.
Google has launched a jaw-dropping buying binge for land, office buildings, industrial sites, and commercial properties throughout Silicon Valley, primarily in San Jose, Sunnyvale, Palo Alto, Redwood City, and Mountain View. The search giant has spent billions of dollars in recent years obtaining the properties.
In December 2018, Google paid $70 million for a long and narrow building at 3850 Fabian Way. And a property database shows that Google also bought a triangle-shaped lot at the corner of Fabian Way and East Meadow Drive in 2013.
The interest by Google, Alexandria Real Estate, and other investors in the South Bay city suggests that Palo Alto remains a hotbed of realty investment and commercial development activity despite pricey values.
More in Real Estate
Apartments for rent in Oakland: What will $3,800 get you?
Curious just how far your dollar goes in Oakland real estate? Here's what you can get locally for $3,800 per month.
Renting in Sunnyvale: What's the cheapest apartment available right now?
Finding a bargain can be a challenge if you're apartment hunting on a budget. So what does the low-end pricing on a rental in Sunnyvale look like these days?
Oakland may ban tenant criminal background checks
Oakland City Council may prohibit landlords from rejecting a prospective tenant because of a criminal record.


text:
Current: Game of Thrones – Season One PS4 Review
Game of Thrones – Season One PS4 Review
Neil Bolt / November 22, 2015
Over the past year I've reviewed each episode of Telltale's Game of Thrones and it has been an interesting journey to say the least. So I thought I'd provide a basic recap of each episode with a link to that review and follow that with my overall thoughts on a season that didn't reach the heights it should have .
Nearly a year ago, the first episode of Telltale's Game of Thrones nailed the devious, deplorable land of Westeros and beyond perfectly and seemed sure to set up another potentially fantastic series for the makers of The Walking Dead and The Wolf Among Us.
GoT Ep 1: Iron From Ice
Then the second episode fumbled with the concept, and saw the cast of playable characters at its weakest as good ones either died or deteriorated while the bad were still just plain bad. Also featured a horrid accent that plagued the rest of my time with the season.
GoT Ep 2: The Lost Lords
From the third episode on though, things improved as the plot threads all began to pull in the right direction, but those initial heights were not reached.
GoT Ep 3: The Sword In The Darkness
In episode four we saw Mira and Beshka grow into their personalities, with Mira managing it without much in the way of screentime. All the while the story trundled menacingly towards grim conclusions. We also got to see a different side to Daenerys Targaryen (not her best side either).
GoT Ep 4 Sons of Winter
The penultimate episode of any season is often the most shockingly brutal in the Game of Thrones TV show, and in the game it was just as true as desperate plans to save Ironrath and the Forrester legacy began to unravel.
GoT Ep 5: A Nest of Vipers
The season finale saw Mira become my favourite character and produced some rousing scenes, but in the end, it just didn't satisfy as it should have.
GoT Ep 6: The Ice Dragon
Did the story succeed? And were the loose ends tied up? Well, despite the authentic levels of relentless grim brutality, it's almost all a bit of a washout by the time the finale rolls around. Very little is resolved and new threads are tied to the remnants of the ones since sliced off. I still want to see where some of these threads will go, but not enough that I'm eagerly awaiting a second season. This series has been at its best when the decision-making comes into play simply because there are no guarantees of an agreeable outcome in Game of Thrones, but in the finale, too many 'choices' blatantly ignore your decision and plow on with whatever they had planned. The ones that truly impact what happens have already been and gone in the previous episodes, everything here feels like two ways of getting the same outcome, a common criticism of Telltale games in recent years, but with The Ice Dragon it rings especially true.
I can't say too much about all my favourite characters without spoiling some of the early parts of the game for newcomers, but there are at least three, maybe four, memorable new additions to the Game of Thrones universe within these episodes. They sit among the best that Telltale have produced. I can say that Mira Forrester manages to impress the most, even if the story never focuses on her plight for long. She meets the interesting people, dallies in the war of words that poisons King's Landing and shows ingenuity to overcome obstacle after obstacle. Hers is a journey I thoroughly enjoyed from start to finish. Beshka starts off as a fairly one-note rough and tough heroine, yet as the season progressed, more about her past arises and you get to see the vulnerable side of an otherwise strong warrior as well as her reasons for the code of honour she maintains. Then on the villainous side you have Lord Whitehill, a repellant, odious barrel of a man who rubs his connections and superior numbers in the face of the Forrester family from the first episode and is highly unlikeable for the right reasons (unlike his whingebag son).
His brash, northern bluster is a key component in motivating you to do everything you can to save the Forrester family name. You just want to reach through the screen and give him a kick, he antagonises that much. On the other end of the antagonisation spectrum is Gared Tuttle and his slow descent into a Jon Snow wannabe. He began the season as my favourite new character, by the end of it I wanted nothing more than for his story to just end. He gets all the fun of the Wall, interacting with Jon Snow himself, fights with White Walkers and discovers long lost secrets, yet this becomes more and more boring by season's end. The most common problem in Game of Thrones is that it features some of the worst—no, the actual worst—voice acting choices Telltale has ever done, from inexplicable Australian accents to twins that warble on like the Swedish Chef from the muppets. It's a blessing for the series that they never cross with any established cast members because the difference in quality would drive you mad. It's a rare misstep for Telltale, not helped by a universe that already gives us a clear idea of what the people in it should sound like.
It wouldn't be a Telltale review without mentioning those persistent technical issues, that seemed to be rife in the Telltale Tool until Tales from the Borderlands. They are heavily present here and take you out of key moments on too many occasions, what's more shocking, a character's death or a frame rate that defies logic by hitting minus figures? It gets harder and harder to accept these 'quirks' the longer they keep appearing in Telltale's games. You have to hope that Tales from the Borderlands more stable offering is indicative of the future, otherwise this engine will need replacing a lot sooner.
These gripes take nothing away from the overall enjoyability of Game of Thrones. Now the season is over, my criticisms of the second episode are now rendered meaningless by virtue of their connection to the narrative that has taken place since, and viewed as a whole, it's a pretty solid season filled with all the harsh, political butchery of the books and TV show and fans of either can glean a lot more mileage out of this than those who just enjoy Telltale's games. In fact, it still stands out as the least accessible series for non-fans of a source yet. It implores you to know every machination of the TV show's first four seasons to get anywhere with it. A shame, as it makes it harder to recommend than any TT series before it.
A season that began with much promise doesn't quite deliver by the time the sixth and final episode's credits roll. Some fine characters and a real sense of what makes the Game of Thrones universe tick mean this is worth checking out if you crave more stories from Westeros and beyond in the wait for more books and TV episodes.
Call Of Duty Developer Raven Software's QA Team Have Voted To Unionize
After Raven Software saw a slew of layoffs in their QA department, 34 employees from that department are unionizing as the Game Workers Alliance.
Game of Thrones – Season One
Warner Bros. Interactive Entertainment
US Release Date
UK Release Date
M [Mature]


Best way to incorporate a FAQ blog: support system, theme or?
I checked some threads, but I am not sure if this plugin is merely Admin (back-end) or is it able to show all FAQ's on the front end as well (for visitors)?
I am looking for a way to make a FAQ blog, one dedicated blog in a multiste installation, just for FAQs: faq.url.com, faq.url.com/category1 etc.
Does this plugin do this? If not do you you have any tips on how to accomplish it?
I think there was a Theme that did something similar (?), but I rather use my own theme, with a working front-end FAQ plugin.
Hello Patagonia and welcome to WPMU DEV!
The Support System is designed for back-end use, I'm afraid. If you'd like to alter it to work in the front-end as well, you could take a look at incsub-support.php. Though you might consider getting this done as custom work via the job board.


text:
Chuvashia Republic
Republic of Chuvashia, Russia
Location of republic of Chuvashia within Russia
Chuvashia is a republic found in the nation of Russia. Home to 1,313,754 people, it is the 41st largest division in Russia in terms of population.
Chuvashia gained its current status as a republic in the year 1920. The government of Chuvashia is lead by Mikhail Ignatyevand is based in the republic capital of Cheboksary (Population: 446,781).
The most populous cities in Chuvashia are: Cheboksary (Population: 446,781), Novocheboksarsk (Population: 128,468).
Chuvashia Republic - Quick Facts
Region Type Republic
ISO Code RU_CU
Time Zone MSK
Capital Cheboksary (Population: 446,781)
Head of Government Mikhail Ignatyev
Total Population 1,313,754
Total Area 18,300 sq km (7,066 sq miles)
Population Density 71.8 sq km (185.9 sq miles)
This page was last updated on July 24, 2015.
Most Populated Republics in Russia
Moscow Oblast
Krasnoyarsk Krai
Sverdlovsk Oblast
Rostov Oblast
Chelyabinsk Oblast
Popular On WorldAtlas
The Top 10 Coal Producers Worldwide
South Asia: Constituent Countries And Their Populations And Economies
Countries That Start With The Letter G