"The first time I saw the accident was on Tuesday afternoon." So begins MY DEJA VU LOVER, a fascinating blend of paranormal, psychological suspense, and romance.
This story drew me in slowly as hints of darkness provided an enticing foil for the innocent spirit of the heroine, April, and her three closest friends.
Were April's visions of a woman named Silver and a mysterious man named Lawrence buried memories, or the kind of seductive delusion that led to madness? When April's present-day life began to echo her waking dreams of Silver and Lawrence, my suspense grew to page-turning compulsion.
In MY DEJA VU LOVER, Phoebe Matthews has created a fascinating multifaceted story in which a hint of Maeve Binchy's gentleness pulses with a touch of the psychologically dark obsession of a Barbara Vine novel.
All that, and a great ending! I'm thrilled to have discovered Phoebe Matthews, and I'll definitely be reading more of this talented author.


text:
import numpy as np
import numpy.random as npr
from collections import OrderedDict

# theano business
import theano
import theano.tensor as T
#from theano.tensor.shared_randomstreams import RandomStreams as RandStream
from theano.sandbox.cuda.rng_curand import CURAND_RandomStreams as RandStream

# phil's sweetness
from NetLayers import HiddenLayer, DiscLayer, relu_actfun, softplus_actfun, \
                      apply_mask
from HelperFuncs import get_param_updates
from LogPDFs import log_prob_bernoulli, log_prob_gaussian2, gaussian_kld

#
# Important symbolic variables:
#   Xd: Xd represents input at the "data variables" of the inferencer
#

class MultiStageModel(object):
    """
    Controller for training a multi-step iterative refinement model.

    Parameters:
        rng: numpy.random.RandomState (for reproducibility)
        x_in: symbolic "data" input to this MultiStageModel
        p_s0_obs_given_z_obs: InfNet for s0 given z_obs
        p_hi_given_si: InfNet for hi given si
        p_sip1_given_si_hi: InfNet for sip1 given si and hi
        p_x_given_si_hi: InfNet for x given si and hi
        q_z_given_x: InfNet for z given x
        q_hi_given_x_si: InfNet for hi given x and si
        model_init_obs: whether to use a model-based initial obs state
        model_init_rnn: whether to use a model-based initial rnn state
        obs_dim: dimension of the observations to generate
        z_rnn_dim: dimension of the latent "RNN state"
        z_obs_dim: dimension of the "initial" latent space for observations
        h_dim: dimension of the "primary" latent space
        ir_steps: number of "iterative refinement" steps to perform
        params: REQUIRED PARAMS SHOWN BELOW
                x_type: can be "bernoulli" or "gaussian"
                obs_transform: can be 'none' or 'sigmoid'
    """
    def __init__(self, rng=None, x_in=None, \
            p_s0_obs_given_z_obs=None, p_hi_given_si=None, p_sip1_given_si_hi=None, \
            p_x_given_si_hi=None, q_z_given_x=None, q_hi_given_x_si=None, \
            obs_dim=None, z_rnn_dim=None, z_obs_dim=None, h_dim=None, \
            model_init_obs=True, model_init_rnn=True, ir_steps=2, \
            params=None):
        # setup a rng for this GIPair
        self.rng = RandStream(rng.randint(100000))

        # TODO: implement functionality for working with "latent" si
        assert(p_x_given_si_hi is None)

        # decide whether to initialize from a model or from a "constant"
        self.model_init_obs = model_init_obs
        self.model_init_rnn = model_init_rnn

        # grab the user-provided parameters
        self.params = params
        self.x_type = self.params['x_type']
        assert((self.x_type == 'bernoulli') or (self.x_type == 'gaussian'))
        if 'obs_transform' in self.params:
            assert((self.params['obs_transform'] == 'sigmoid') or \
                    (self.params['obs_transform'] == 'none'))
            if self.params['obs_transform'] == 'sigmoid':
                self.obs_transform = lambda x: T.nnet.sigmoid(x)
            else:
                self.obs_transform = lambda x: x
        else:
            self.obs_transform = lambda x: T.nnet.sigmoid(x)
        if self.x_type == 'bernoulli':
            self.obs_transform = lambda x: T.nnet.sigmoid(x)

        # record the dimensions of various spaces relevant to this model
        self.obs_dim = obs_dim
        self.rnn_dim = z_rnn_dim
        self.z_dim = z_rnn_dim + z_obs_dim
        self.z_rnn_dim = z_rnn_dim
        self.z_obs_dim = z_obs_dim
        self.h_dim = h_dim
        self.ir_steps = ir_steps

        # record the symbolic variables that will provide inputs to the
        # computation graph created to describe this MultiStageModel
        self.x = x_in
        self.batch_reps = T.lscalar()

        # setup switching variable for changing between sampling/training
        zero_ary = np.zeros((1,)).astype(theano.config.floatX)
        self.train_switch = theano.shared(value=zero_ary, name='msm_train_switch')
        self.set_train_switch(1.0)
        # setup a weight for pulling priors over hi given si towards a
        # shared global prior -- e.g. zero mean and unit variance.
        self.kzg_weight = theano.shared(value=zero_ary, name='msm_kzg_weight')
        self.set_kzg_weight(0.1)
        # this weight balances l1 vs. l2 penalty on posterior KLds
        self.l1l2_weight = theano.shared(value=zero_ary, name='msm_l1l2_weight')
        self.set_l1l2_weight(1.0)

        #############################
        # Setup self.z and self.s0. #
        #############################
        print("Building MSM step 0...")
        obs_scale = 0.0
        rnn_scale = 0.0
        if self.model_init_obs: # initialize obs state from generative model
            obs_scale = 1.0
        if self.model_init_rnn: # initialize rnn state from generative model
            rnn_scale = 1.0
        self.q_z_given_x = q_z_given_x.shared_param_clone(rng=rng, Xd=self.x)
        self.z = self.q_z_given_x.output
        self.z_rnn = self.z[:,:self.z_rnn_dim]
        self.z_obs = self.z[:,self.z_rnn_dim:]
        self.p_s0_obs_given_z_obs = p_s0_obs_given_z_obs.shared_param_clone( \
                rng=rng, Xd=self.z_obs)
        _s0_obs_model = self.p_s0_obs_given_z_obs.output_mean
        _s0_obs_const = self.p_s0_obs_given_z_obs.mu_layers[-1].b
        self.s0_obs = (obs_scale * _s0_obs_model) + \
                ((1.0 - obs_scale) * _s0_obs_const)
        _s0_rnn_model = self.z_rnn
        _s0_rnn_const = self.q_z_given_x.mu_layers[-1].b[:self.z_rnn_dim]
        self.s0_rnn = (rnn_scale * _s0_rnn_model) + \
                ((1.0 - rnn_scale) * _s0_rnn_const)
        self.s0_jnt = T.horizontal_stack(self.s0_obs, self.s0_rnn)
        self.output_logvar = self.p_s0_obs_given_z_obs.sigma_layers[-1].b
        self.bounded_logvar = 8.0 * T.tanh((1.0/8.0) * self.output_logvar)

        ###############################################################
        # Setup the iterative refinement loop, starting from self.s0. #
        ###############################################################
        self.p_hi_given_si = []       # holds p_hi_given_si for each i
        self.p_sip1_given_si_hi = []  # holds p_sip1_given_si_hi for each i
        self.q_hi_given_x_si = []     # holds q_hi_given_x_si for each i
        self.si = [self.s0_jnt]       # holds si for each i
        self.hi = []                  # holds hi for each i
        for i in range(self.ir_steps):
            print("Building MSM step {0:d}...".format(i+1))
            _si = self.si[i]
            si_obs = _si[:,:self.obs_dim]
            si_rnn = _si[:,self.obs_dim:]
            # get samples of next hi, conditioned on current si
            self.p_hi_given_si.append( \
                    p_hi_given_si.shared_param_clone(rng=rng, \
                    Xd=T.horizontal_stack( \
                    self.obs_transform(si_obs), si_rnn)))
            hi_p = self.p_hi_given_si[i].output
            # now we build the model for variational hi given si
            grad_ll = self.x - self.obs_transform(si_obs)
            self.q_hi_given_x_si.append(\
                    q_hi_given_x_si.shared_param_clone(rng=rng, \
                    Xd=T.horizontal_stack( \
                    grad_ll, self.obs_transform(si_obs), si_rnn)))
            hi_q = self.q_hi_given_x_si[i].output
            # make hi samples that can be switched between hi_p and hi_q
            self.hi.append( ((self.train_switch[0] * hi_q) + \
                    ((1.0 - self.train_switch[0]) * hi_p)) )
            # p_sip1_given_si_hi is conditioned on hi and the "rnn" part of si.
            self.p_sip1_given_si_hi.append( \
                    p_sip1_given_si_hi.shared_param_clone(rng=rng, \
                    Xd=T.horizontal_stack(self.hi[i], si_rnn)))
            # construct the update from si_obs/si_rnn to sip1_obs/sip1_rnn
            sip1_obs = si_obs + self.p_sip1_given_si_hi[i].output_mean
            sip1_rnn = si_rnn
            sip1_jnt = T.horizontal_stack(sip1_obs, sip1_rnn)
            # record the updated state of the generative process
            self.si.append(sip1_jnt)
        # check that input/output dimensions of our models agree
        self._check_model_shapes()

        ######################################################################
        # ALL SYMBOLIC VARS NEEDED FOR THE OBJECTIVE SHOULD NOW BE AVAILABLE #
        ######################################################################

        # shared var learning rate for generator and inferencer
        zero_ary = np.zeros((1,)).astype(theano.config.floatX)
        self.lr_1 = theano.shared(value=zero_ary, name='msm_lr_1')
        self.lr_2 = theano.shared(value=zero_ary, name='msm_lr_2')
        # shared var momentum parameters for generator and inferencer
        self.mom_1 = theano.shared(value=zero_ary, name='msm_mom_1')
        self.mom_2 = theano.shared(value=zero_ary, name='msm_mom_2')
        self.it_count = theano.shared(value=zero_ary, name='msm_it_count')
        # init parameters for controlling learning dynamics
        self.set_sgd_params()
        # init shared var for weighting nll of data given posterior sample
        self.lam_nll = theano.shared(value=zero_ary, name='msm_lam_nll')
        self.set_lam_nll(lam_nll=1.0)
        # init shared var for weighting prior kld against reconstruction
        self.lam_kld_1 = theano.shared(value=zero_ary, name='msm_lam_kld_1')
        self.lam_kld_2 = theano.shared(value=zero_ary, name='msm_lam_kld_2')
        self.set_lam_kld(lam_kld_1=1.0, lam_kld_2=1.0)
        # init shared var for controlling l2 regularization on params
        self.lam_l2w = theano.shared(value=zero_ary, name='msm_lam_l2w')
        self.set_lam_l2w(1e-5)

        # Grab all of the "optimizable" parameters in "group 1"
        self.group_1_params = []
        self.group_1_params.extend(self.q_z_given_x.mlp_params)
        self.group_1_params.extend(self.p_s0_obs_given_z_obs.mlp_params)
        # Grab all of the "optimizable" parameters in "group 2"
        self.group_2_params = []
        for i in range(self.ir_steps):
            self.group_2_params.extend(self.q_hi_given_x_si[i].mlp_params)
            self.group_2_params.extend(self.p_hi_given_si[i].mlp_params)
            self.group_2_params.extend(self.p_sip1_given_si_hi[i].mlp_params)
        # Make a joint list of parameters group 1/2
        self.joint_params = self.group_1_params + self.group_2_params

        #################################
        # CONSTRUCT THE KLD-BASED COSTS #
        #################################
        self.kld_z, self.kld_hi_cond, self.kld_hi_glob = \
                self._construct_kld_costs()
        self.kld_cost = (self.lam_kld_1[0] * T.mean(self.kld_z)) + \
                (self.lam_kld_2[0] * (T.mean(self.kld_hi_cond) + \
                (self.kzg_weight[0] * T.mean(self.kld_hi_glob))))
        #################################
        # CONSTRUCT THE NLL-BASED COSTS #
        #################################
        self.nll_costs = self._construct_nll_costs()
        self.nll_cost = self.lam_nll[0] * T.mean(self.nll_costs)
        ########################################
        # CONSTRUCT THE REST OF THE JOINT COST #
        ########################################
        param_reg_cost = self._construct_reg_costs()
        self.reg_cost = self.lam_l2w[0] * param_reg_cost
        self.joint_cost = self.nll_cost + self.kld_cost + self.reg_cost

        # Get the gradient of the joint cost for all optimizable parameters
        self.joint_grads = OrderedDict()
        for p in self.joint_params:
            self.joint_grads[p] = T.grad(self.joint_cost, p)

        # Construct the updates for the generator and inferencer networks
        self.group_1_updates = get_param_updates(params=self.group_1_params, \
                grads=self.joint_grads, alpha=self.lr_1, \
                beta1=self.mom_1, beta2=self.mom_2, it_count=self.it_count, \
                mom2_init=1e-3, smoothing=1e-8, max_grad_norm=10.0)
        self.group_2_updates = get_param_updates(params=self.group_2_params, \
                grads=self.joint_grads, alpha=self.lr_2, \
                beta1=self.mom_1, beta2=self.mom_2, it_count=self.it_count, \
                mom2_init=1e-3, smoothing=1e-8, max_grad_norm=10.0)
        self.joint_updates = OrderedDict()
        for k in self.group_1_updates:
            self.joint_updates[k] = self.group_1_updates[k]
        for k in self.group_2_updates:
            self.joint_updates[k] = self.group_2_updates[k]

        # Construct a function for jointly training the generator/inferencer
        print("Compiling training function...")
        self.train_joint = self._construct_train_joint()
        self.compute_post_klds = self._construct_compute_post_klds()
        self.compute_fe_terms = self._construct_compute_fe_terms()
        self.sample_from_prior = self._construct_sample_from_prior()
        # make easy access points for some interesting parameters
        self.inf_1_weights = self.q_z_given_x.shared_layers[0].W
        self.gen_1_weights = self.p_s0_obs_given_z_obs.mu_layers[-1].W
        self.inf_2_weights = self.q_hi_given_x_si[0].shared_layers[0].W
        self.gen_2_weights = self.p_sip1_given_si_hi[0].mu_layers[-1].W
        self.gen_inf_weights = self.p_hi_given_si[0].shared_layers[0].W
        return

    def set_sgd_params(self, lr_1=0.01, lr_2=0.01, \
                mom_1=0.9, mom_2=0.999):
        """
        Set learning rate and momentum parameter for all updates.
        """
        zero_ary = np.zeros((1,))
        # set learning rates
        new_lr_1 = zero_ary + lr_1
        self.lr_1.set_value(new_lr_1.astype(theano.config.floatX))
        new_lr_2 = zero_ary + lr_2
        self.lr_2.set_value(new_lr_2.astype(theano.config.floatX))
        # set momentums
        new_mom_1 = zero_ary + mom_1
        self.mom_1.set_value(new_mom_1.astype(theano.config.floatX))
        new_mom_2 = zero_ary + mom_2
        self.mom_2.set_value(new_mom_2.astype(theano.config.floatX))
        return

    def set_lam_nll(self, lam_nll=1.0):
        """
        Set weight for controlling the influence of the data likelihood.
        """
        zero_ary = np.zeros((1,))
        new_lam = zero_ary + lam_nll
        self.lam_nll.set_value(new_lam.astype(theano.config.floatX))
        return

    def set_lam_kld(self, lam_kld_1=1.0, lam_kld_2=1.0):
        """
        Set the relative weight of prior KL-divergence vs. data likelihood.
        """
        zero_ary = np.zeros((1,))
        new_lam = zero_ary + lam_kld_1
        self.lam_kld_1.set_value(new_lam.astype(theano.config.floatX))
        new_lam = zero_ary + lam_kld_2
        self.lam_kld_2.set_value(new_lam.astype(theano.config.floatX))
        return

    def set_lam_l2w(self, lam_l2w=1e-3):
        """
        Set the relative strength of l2 regularization on network params.
        """
        zero_ary = np.zeros((1,))
        new_lam = zero_ary + lam_l2w
        self.lam_l2w.set_value(new_lam.astype(theano.config.floatX))
        return

    def set_train_switch(self, switch_val=0.0):
        """
        Set the switch for changing between training and sampling behavior.
        """
        if (switch_val < 0.5):
            switch_val = 0.0
        else:
            switch_val = 1.0
        zero_ary = np.zeros((1,))
        new_val = zero_ary + switch_val
        new_val = new_val.astype(theano.config.floatX)
        self.train_switch.set_value(new_val)
        return

    def set_kzg_weight(self, kzg_weight=0.2):
        """
        Set the weight for shaping penalty on conditional priors over zt.
        """
        assert(kzg_weight >= 0.0)
        zero_ary = np.zeros((1,))
        new_val = zero_ary + kzg_weight
        new_val = new_val.astype(theano.config.floatX)
        self.kzg_weight.set_value(new_val)
        return

    def set_l1l2_weight(self, l1l2_weight=1.0):
        """
        Set the weight for shaping penalty on posterior KLds.
        """
        assert((l1l2_weight >= 0.0) and (l1l2_weight <= 1.0))
        zero_ary = np.zeros((1,))
        new_val = zero_ary + l1l2_weight
        new_val = new_val.astype(theano.config.floatX)
        self.l1l2_weight.set_value(new_val)
        return

    def set_input_bias(self, new_bias=None):
        """
        Set the output layer bias.
        """
        new_bias = new_bias.astype(theano.config.floatX)
        self.q_z_given_x.shared_layers[0].b_in.set_value(new_bias)
        return

    def set_obs_bias(self, new_obs_bias=None):
        """
        Set initial bias on the obs part of state, but not the rnn part.
        """
        assert(new_obs_bias.shape[0] == self.obs_dim)
        new_bias = np.zeros((self.obs_dim,)) + new_obs_bias
        new_bias = new_bias.astype(theano.config.floatX)
        self.p_s0_obs_given_z_obs.mu_layers[-1].b.set_value(new_bias)
        return

    def _check_model_shapes(self):
        """
        Check that inputs/outputs of the various models will pipe together.
        """
        obs_dim = self.obs_dim
        rnn_dim = self.z_rnn_dim
        jnt_dim = obs_dim + rnn_dim
        z_obs_dim = self.z_obs_dim
        z_rnn_dim = self.z_rnn_dim
        h_dim = self.h_dim
        # check shape of initialization model
        assert(self.p_s0_obs_given_z_obs.mu_layers[-1].out_dim == obs_dim)
        assert(self.p_s0_obs_given_z_obs.shared_layers[0].in_dim == z_obs_dim)
        assert(self.q_z_given_x.mu_layers[-1].out_dim == (z_rnn_dim + z_obs_dim))
        assert(self.q_z_given_x.shared_layers[0].in_dim == obs_dim)
        # check shape of the forward conditionals over h_i
        assert(self.p_hi_given_si[0].mu_layers[-1].out_dim == h_dim)
        assert(self.p_hi_given_si[0].shared_layers[0].in_dim == jnt_dim)
        assert(self.q_hi_given_x_si[0].mu_layers[-1].out_dim == h_dim)
        assert(self.q_hi_given_x_si[0].shared_layers[0].in_dim == (obs_dim + jnt_dim))
        # check shape of the forward conditionals over s_{i+1}
        assert(self.p_sip1_given_si_hi[0].mu_layers[-1].out_dim == obs_dim)
        assert(self.p_sip1_given_si_hi[0].shared_layers[0].in_dim == (h_dim + rnn_dim))
        #
        # p_x_given_si_hi: InfNet for x given si and hi (NOT IN USE YET)
        #
        return

    def _construct_nll_costs(self):
        """
        Construct the negative log-likelihood part of free energy.
        """
        # average log-likelihood over the refinement sequence
        sn = self.si[-1]
        xh = self.obs_transform(sn[:,:self.obs_dim])
        if self.x_type == 'bernoulli':
            ll_costs = log_prob_bernoulli(self.x, xh)
        else:
            ll_costs = log_prob_gaussian2(self.x, xh, \
                    log_vars=self.bounded_logvar)
        nll_costs = -ll_costs
        return nll_costs

    def _construct_kld_costs(self):
        """
        Construct the posterior KL-divergence part of cost to minimize.
        """
        # construct a penalty that is L2-like near 0 and L1-like away from 0.
        huber_pen = lambda x, d: \
                ((1.0 / (2.0 * d)) * ((T.abs_(x) < d) * (x**2.0))) + \
                ((T.abs_(x) >= d) * (T.abs_(x) - (d / 2.0)))
        # construct KLd cost for the distributions over hi. the prior over
        # hi is given by a distribution conditioned on si, which we estimate
        # using self.p_hi_given_si[i]. the conditionals produced by each
        # self.p_hi_given_si[i] will also be regularized towards a shared
        # prior, e.g. a Gaussian with zero mean and unit variance.
        kld_hi_conds = []
        kld_hi_globs = []
        for i in range(self.ir_steps):
            kld_hi_cond = gaussian_kld( \
                    self.q_hi_given_x_si[i].output_mean, \
                    self.q_hi_given_x_si[i].output_logvar, \
                    self.p_hi_given_si[i].output_mean, \
                    self.p_hi_given_si[i].output_logvar)
            kld_hi_glob = gaussian_kld( \
                    self.p_hi_given_si[i].output_mean, \
                    self.p_hi_given_si[i].output_logvar, \
                    0.0, 0.0)
            kld_hi_cond_l1l2 = (self.l1l2_weight[0] * kld_hi_cond) + \
                    ((1.0 - self.l1l2_weight[0]) * kld_hi_cond**2.0)
            kld_hi_conds.append(T.sum(kld_hi_cond_l1l2, \
                    axis=1, keepdims=True))
            kld_hi_globs.append(T.sum(kld_hi_glob**2.0, \
                    axis=1, keepdims=True))
        # compute the batch-wise costs
        kld_hi_cond = sum(kld_hi_conds)
        kld_hi_glob = sum(kld_hi_globs)
        # construct KLd cost for the distributions over z
        kld_z_all = gaussian_kld(self.q_z_given_x.output_mean, \
                self.q_z_given_x.output_logvar, \
                0.0, 0.0)
        kld_z_l1l2 = (self.l1l2_weight[0] * kld_z_all) + \
                ((1.0 - self.l1l2_weight[0]) * kld_z_all**2.0)
        kld_z = T.sum(kld_z_l1l2, \
                axis=1, keepdims=True)
        return [kld_z, kld_hi_cond, kld_hi_glob]

    def _construct_reg_costs(self):
        """
        Construct the cost for low-level basic regularization. E.g. for
        applying l2 regularization to the network activations and parameters.
        """
        param_reg_cost = sum([T.sum(p**2.0) for p in self.joint_params])
        return param_reg_cost

    def _construct_train_joint(self):
        """
        Construct theano function to train all networks jointly.
        """
        # setup some symbolic variables for theano to deal with
        x = T.matrix()
        # collect the outputs to return from this function
        outputs = [self.joint_cost, self.nll_cost, self.kld_cost, \
                self.reg_cost]
        # compile the theano function
        func = theano.function(inputs=[ x, self.batch_reps ], \
                outputs=outputs, \
                givens={ self.x: x.repeat(self.batch_reps, axis=0) }, \
                updates=self.joint_updates)
        return func

    def _construct_compute_fe_terms(self):
        """
        Construct a function for computing terms in variational free energy.
        """
        # setup some symbolic variables for theano to deal with
        x_in = T.matrix()
        # construct values to output
        nll = self._construct_nll_costs()
        kld = self.kld_z + self.kld_hi_cond
        # compile theano function for a one-sample free-energy estimate
        fe_term_sample = theano.function(inputs=[x_in], \
                outputs=[nll, kld], givens={self.x: x_in})
        # construct a wrapper function for multi-sample free-energy estimate
        def fe_term_estimator(X, sample_count):
            nll_sum = np.zeros((X.shape[0],))
            kld_sum = np.zeros((X.shape[0],))
            for i in range(sample_count):
                result = fe_term_sample(X)
                nll_sum += result[0].ravel()
                kld_sum += result[1].ravel()
            mean_nll = nll_sum / float(sample_count)
            mean_kld = kld_sum / float(sample_count)
            return [mean_nll, mean_kld]
        return fe_term_estimator

    def _construct_compute_post_klds(self):
        """
        Construct theano function to compute the info about the variational
        approximate posteriors for some inputs.
        """
        # setup some symbolic variables for theano to deal with
        x = T.matrix()
        # construct symbolic expressions for the desired KLds
        cond_klds = []
        glob_klds = []
        for i in range(self.ir_steps):
            kld_hi_cond = gaussian_kld(self.q_hi_given_x_si[i].output_mean, \
                    self.q_hi_given_x_si[i].output_logvar, \
                    self.p_hi_given_si[i].output_mean, \
                    self.p_hi_given_si[i].output_logvar)
            kld_hi_glob = gaussian_kld(self.p_hi_given_si[i].output_mean, \
                    self.p_hi_given_si[i].output_logvar, 0.0, 0.0)
            cond_klds.append(kld_hi_cond)
            glob_klds.append(kld_hi_glob)
        # gather conditional and global klds for all IR steps
        all_klds = cond_klds + glob_klds
        # gather kld for the initialization step
        kld_z_all = gaussian_kld(self.q_z_given_x.output_mean, \
                self.q_z_given_x.output_logvar, \
                0.0, 0.0)
        all_klds.append(kld_z_all)
        # compile theano function for a one-sample free-energy estimate
        kld_func = theano.function(inputs=[x], outputs=all_klds, \
                givens={ self.x: x })
        def post_kld_computer(X):
            f_all_klds = kld_func(X)
            f_kld_z = f_all_klds[-1]
            f_kld_hi_cond = np.zeros(f_all_klds[0].shape)
            f_kld_hi_glob = np.zeros(f_all_klds[0].shape)
            for j in range(self.ir_steps):
                f_kld_hi_cond += f_all_klds[j]
                f_kld_hi_glob += f_all_klds[j + self.ir_steps]
            return [f_kld_z, f_kld_hi_cond, f_kld_hi_glob]
        return post_kld_computer

    def _construct_sample_from_prior(self):
        """
        Construct a function for drawing independent samples from the
        distribution generated by this MultiStageModel. This function returns
        the full sequence of "partially completed" examples.
        """
        z_sym = T.matrix()
        x_sym = T.matrix()
        oputs = [self.obs_transform(s[:,:self.obs_dim]) for s in self.si]
        sample_func = theano.function(inputs=[z_sym, x_sym], outputs=oputs, \
                givens={ self.z: z_sym, \
                        self.x: T.zeros_like(x_sym) })
        def prior_sampler(samp_count):
            x_samps = np.zeros((samp_count, self.obs_dim))
            x_samps = x_samps.astype(theano.config.floatX)
            old_switch = self.train_switch.get_value(borrow=False)
            # set model to generation mode
            self.set_train_switch(switch_val=0.0)
            z_samps = npr.randn(samp_count, self.z_dim)
            z_samps = z_samps.astype(theano.config.floatX)
            model_samps = sample_func(z_samps, x_samps)
            # set model back to either training or generation mode
            self.set_train_switch(switch_val=old_switch)
            return model_samps
        return prior_sampler

if __name__=="__main__":
    print("Hello world!")

##############
# EYE BUFFER #
##############

redpajama_set_name: RedPajamaGithub


Grinding mill is widely used in metallurgy, building materials, mineral products, chemical materials, mining and other fields. Grinding machine components by the host, analysis machine, blower, finished cyclone separator, plumbing, motor . The host is composed of a frame, inlet volute, blade, roller, grinding ring, cover and motor. Auxiliary equipment are jaw crusher, bucket elevator, electromagnetic vibration feeder, electric control cabinet, the user can choose flexibly according to the scene.
There are many types of grinding equipments in the market and the small raymond mill is often used as a small scale stone grinding equipment in the powder production. It is mainly applied to the processing Mohs hardness of 9.3 or less, the processing of various mineral materials humidity below 6%. It is widely used in metallurgy, building materials, chemical industry, highway construction, water conservancy and hydropower industry. Small raymond mill is ideal for processing quartz, feldspar, limestone, calcite, granite, dolomite, bauxite, iron ore, barite,coal and other materials. Product fineness of materials can be adjusted between 0.613 mm to 0.033 mm.
In addition to a wide range of applications, there are also many advantages of raymond mill.
Unique design. Under the same dynamic conditions compared with other mills to improve the yield of 20-30%, the material of the grinding roller pressure to improve the 800-1200KG under the action of high pressure spring.
A wide range of product size. The most coarse particle size of up to 0.95 mm (20 mesh). Fine particle size generally up to 0.033 mm (425 mesh). A small part of the finest materials can reach 0.013 mm (1000 mesh).
Adopts the electromagnetic vibration feeder feeding evenly, easy adjustment, small volume, light weight, low in energy consumption, convenient maintenance.
The roller device adopts the processing technology of high quality and efficient, overlapping multi-stage seal to ensure a good seal effect.
Last but not least, we all know that grinding plant will pollute the environment and we should attach great importance to energy saving and environmental protection. When we choose the small scale stone grinding equipment, those machines which is has high efficient and very durable, at the same time,the noise is very small are our first choice.


So you've decided that its time to bite the bullet and get started with Atkins. But where do you start? Well, before we start with the practical steps and the how-to part of it, it's worth taking a step back to take a look at what you are trying to achieve. I'll assume if you are reading this article that you want to lose weight and improve your health. And its probably safe to assume you want those extra few pounds/stone to stay lost? You may not know it yet but you should definitely expect that your health markers (cholesterol, triglycerides, blood pressure etc.) should show improvements and that you maintain these new healthy ranges.
So if these are your goals – to lose weight and maintain that weight loss and the health improvements then your attitude towards making the changes we are going to talk about are of paramount importance. Firstly, it is vital to understand that doing the Atkins diet is really about changing your eating habits for life. It is a way-of-eating for life rather than 'a diet' that you just follow for a few weeks or months. If you are just going on Atkins to lose a few pounds and are planning on celebrating your success in a few weeks with a chocolate cake or a large pizza and going back to your 'regular' diet you're wasting your time and setting yourself up for disappointment when you regain the weight. You need to be approaching it from the point of view of making permanent changes to the way you eat on a daily basis. This is how you will lose the weight and this time make sure it stays lost for good! So your attitude is key.
Our page on Phase One – Induction will tell you everything you need to know to do Phase One successfully. It includes tips and advice and lets you know which foods are off-limits.
The Food List page shows you all of the food you can eat on Phase One – meat, fish, poultry, cheese, healthy fats and lots of veg.
Read the first few chapters of New Atkins for a New You. This will definitely prove why Atkins works not only in terms of weight loss but also in terms of health.
Register on the UK Atkins site to use the meal planner there to plan your meals for week one. This will help you write your shopping list.
Check out our Pinterest board for more inspiration for meals – its so important to find recipes you will enjoy. Its also a good idea to experiment with trying different recipes and cooking food in different ways, for example, try roasting or stir-frying vegetables instead of always boiling them.
Don't buy anything that is not on the Acceptable Food List!
Have a look at our Products page and pick the ones you fancy or try a Starter box which has a selection of most of the bars. These will help you when you feel tempted to eat junk food – be sure to carry them with you when you are out and about especially.
So this is one approach to starting Atkins – just biting the bullet and doing it! However, I know from speaking to some of our customers and from my own experience that this approach can be a bit overwhelming for some people. It really is such a big change to all of your meals at once. So I'm going to offer another approach – it does have its advantages but also some disadvantages so you need to weigh up (no pun intended!) which works best for you!
Approach number two is the more gradual approach. It still involves the step above on getting informed. However, instead of changing all of your meals at once, you can do it meal by meal. So for instance, you would start by just changing your breakfasts in the first two to three weeks and continue to eat lunch and dinner as you do now. Then after a few weeks you make your lunches Atkins-friendly and then your dinners. So by the end of two months or so you are following the Atkins way of eating.
The advantages of this approach are that it gives you more time to implement the changes and might make it more manageable for you especially if you are very busy. The goal of this approach is to have implemented these changes to your eating habits at the end of the 6- 8 week period. It is not to have lost weight. If you are expecting that you will change what you eat for breakfasts and that you will see changes in terms of weight loss even though you are not following Atkins for your other meals yet, this is not the approach for you. You will just become demotivated and disappointed. If you need to be able to see the results quickly, follow approach number one and implement all the changes together. That way you will see results much sooner. This approach is a slower way of getting there but a good idea if the idea of changing all of it together overwhelms you.
Approach One – Just Do It! Approach Two – Slow & Steady..
You will see much results much sooner – this varies for everyone but you could lose up to a stone in 2 weeks. You should not expect to see any real results until you have made all of your meals Atkins friendly so this would start after 6 – 8 weeks.
You will start to see the health benefits sooner – our customers have reported everything from acid reflux and migraines disappearing, acne clearing up to PMS symptoms abating and energy levels and sleep improving. It will take longer to see health benefits, although just changing breakfast will probably do wonders for your energy levels and eliminate mid morn sugar crashes.
Sugar cravings should disappear within a week or two – you will no longer crave bread, sweets etc. As you are still eating these foods for a longer time the cravings will not disappear yet.
It may be harder to implement all of the changes and take more time and effort to do it at first. It is much easier to concentrate on changing just one meal at a time.
It will become second nature much sooner. As you change each meal and form your new eating habits, they will be second nature but will take longer before you get there for all of your meals.
Great strategy if you want to get started and see results soon. Excellent strategy if you look at approach one and think its all too much to take on at once or that you can't do it if you need to make all of those changes together.
So if you have read the pro's and con's of the two approaches above you probably know which one is for you depending on your approach to making life changes and your personality. If you have been looking at doing the Atkins diet and thought any of the following: "It's just all too much change at once" or "I don't have time to do all of this" or "The meals are so different to what I'm used to" then I would suggest Approach Two. Its an excellent approach, once you keep in mind it will take longer before you see results.
The important thing, whichever approach you choose, is that you achieve the results you want – becoming a slimmer healthier new you and staying that way!
This entry was posted in The diet and tagged Atkins, carbohydrates, Cholesterol, diet, eating habits, food, Induction, Meal planning, plan, shop, triglycerides by Roseanne Dolan. Bookmark the permalink.


Why volunteer your time for a role within SIU?
Be part and work together with other young academics and professionals across the globe!
The rolesare on a volunteer basis and require high flexibility!
We are a highly social organisation, so a classy dinner and few drinks are always on the cards!
The application process for all of these positions will involve submitting a brief manifesto (following questions) including your academic background. Successful candidates will get invited for an introductory interview (online).
We'll get back to you swiftly!
We hope that you're excited and motivated by our 2017 forecast! Remember, we are in a unique situation - located in the centre of the Golden Triangle, in the heart of a biotech mega-cluster and we've caught the attention of investors, decision makers and the leaders of our Universities. Let's piece this puzzle together and see what we can create!


text:
CEA Salutes 2012 CE Hall Of Fame Class At Gala Event In S.F.
Steve Smith ⋅ Published: November 19, 2012
SAN FRANCISCO — A grandson and a great-grandson, longtime colleagues and some honorees themselves accepted the accolades of the Consumer Electronics Association (CEA) as it inducted the 2012 CE Hall of Fame class at its recent Industry Forum, held at the Westin St. Francis Hotel.
The CE Hall of Fame, created in 2000, honors the leaders in the consumer technology industry who have shaped and advanced innovation.
Following are the 2012 members of the CE Hall of Fame in alphabetical order:
• Willard Boyle and George Smith: inventors of the charge-coupled device (CCD) at Bell Labs
• Robert Briskman: inventor of satellite radio
• Richard Citta: creator of the VSB digital TV transmission standard
• Bjorn Dybdahl: founder of consumer electronics retailer Bjorn's
• Douglas Engelbart: inventor of the computer mouse and HTML
• Charlie Ergen: founder of satellite companies Echostar and Dish Network
• Larry Finley: founder of the International Tape Association (now the International Recording Media Association)
• Fansy and Henry Harold Gregg: founders of consumer electronics retailer h.h.gregg
• In Hwoi Koo: founder of LG Corporation
• Byung-Chull Lee: founder of Samsung Electronics
Many of the comments from the award winners, colleagues and family members were heartfelt.
Briskman, the co-founder of SiriusXM Radio, said in his acceptance speech: "When you come up with an idea, you need teams of people to accomplish that. I am here representing members of that team."
Citta, a digital TV pioneer who worked at Zenith, acknowledged the contributions of his colleagues at the company's R&D department, and discussed the challenges of the "Grand Alliance" to come up with the HDTV standard of today.
Dybdahl started by acknowledging that he has attended every International CES since 1971 and finally "met Jack Wayman [founder of CES] tonight." Dybdahl thanked pioneers like "Kloss, John Banner of B&W Loudspeakers, Paul Klipsch, Tweeten of Magnolia Hi Fi, who I called saying 'I don't know anything,' and they called me back and gave me advice."
Bob English, lead engineer for Doug Englebart, inventor of the computer mouse and father of hypermedia, said many of these developments "happened in the early 1960s" but the biggest thanks he has to give was "my wife Roberta, who was [Englebart's] secretary back then."
K.M. Koo, the great-grandson of LG founder In Hwoi Koo and a current LG employee, said the company has a "long legacy of greatness," creating up to 60 companies under the LG umbrella. He added that he is happy that his "innovative leadership" has been honored by CEA.
Guy Finley is the executive director of the Media & Entertainment Services Alliance, grandson of honoree Larry Finley, and head of the same organization. He said, "Entertainment matters … It is the driving force for all new technology." He described his grandfather as the "Zelig of the CE industry" by matching entertainment with CE technology.
Accepting for Charlie Ergen, cofounder of Dish/Echostar, was president/ CEO of Dish, Joe Clayton. Clayton, a former RCA executive who introduced what is now DirecTV, said, "Charlie was an RCA satellite distributor [back in the mid-1990s] … so I am happy to accept on his behalf."
He said that with Ergen becoming a CE Hall of Fame member, he joins "Eddy Hartenstein and Stan Hubbard, so now the trio of the developers of satellite TV is complete."
Latest posts by Steve Smith (see all)
DEG Honors Dolby, Sony And Warner At Annual CES Awards Event - January 11, 2019
LG's CES Keynote: AI Is 'Opportunity Of Our Lifetime' - January 9, 2019
Memories Of Our Friend John - April 12, 2018
Hip Hop Legend, iTunes And DSP Developers Inducted Into CTA Hall Of Fame
CEDIA Names 2022 Best New Products and Hall of Fame Inductees
CES 2023: Scenes from CES Unveiled
CTA Inducts 2020, 2021 Hall Of Fame Classes
Screen Research Is First Screen Manufacturer to Receive Certification from Professional Video Alliance
Rain Unveils E-Privacy Technology at CES 2023 – A Cybersecurity Solution that Starts at the Display
Brazil's Jasmin Studio Trailblazes the Creative Potential of Immersive Audio Production with Brand New, WSDG-Designed World-Class Residential Facility
Knowles Releases New TWS Reference Design with Best-In-Class Music Experience and Advanced Features

redpajama_set_name: RedPajamaCommonCrawl


Why do I even need gutter cleaning?
The purpose of gutters are to collect and redirect water runoff from your roof, to limit and avoid damage to your home. If you have trees within 50 feet of your home, you have leaves falling in the gutters. It only takes a couple of handfuls of leaves to fall throughout a system and be carried by water to the downspouts to create a clog. These clogs will prevent water from flowing through the system, working like a dam. Water, with no where to go, will pool, fill, and overflow the system. This will cause oxidation to aluminum gutters (aka Zebra Stripes), rusting in galvanized gutters, rotting of soffit and fascia boards, as well as water damage in basements and ceilings. Decaying debris sitting in the gutter releases acid that eats at seams, as well as attracts pests by both providing nutrition and nesting for ants, yellow jackets and the like. Cleaning gutters on a regular basis prevents all of these issues.
How is the gutter cleaning performed?
A two-man certified roofing-trained crew using safety equipment blow off the roof of all leaves, pine straw, and foliage debris. They fully inspect the current condition of your roof during their 10-point signature inspection, making notes of any issues. Upon your request, our crew can take photos of any necessary repairs.
They completely clear the debris out of the gutters and downspout systems using their high-powered blowers. Any large accumulations of debris that won't blow out of the gutters, our crew will grab and pick up the debris out by hand (this means large, heavy accumilations of debris, not the lining of film on the gutter). They test the downspouts for clogs that were missed during the cleaning. On a rare occasion where gutter cleaning has been neglected, an over-abundance of debris can cause a major downspout clog in a downspout that requires the downspout to be dismantled and cleared by hand, which is not part of our basic service and requires and additional fee, but this needed service is very rare unless the gutters have been neglected or there is an inordinately large amount of trees and leaves over the gutters. Finally, they clear the fallen gutter trash off the flat areas surrounding the home and blow it away from the house and into the natural landscape of the property. Once completed, the inside of the gutters should be clear and free flowing, though the lining and walls of the gutter may still have some dirt, grime, and sediment on them, which is natural. This remaining dirt doesn't impede the flow of water, and the purpose of the gutter cleaning is to clear the system, not beautifying the inside.
It should be noted that there are certain unprofessional or uncommon practices that we do not perform, including using water to clean gutters, clearing underground corrugated pipes, and install plastic covers and screens.
There is a bagging option at $10 per bag. With this, the crew will blow the debris into piles and neatly bag it by hand. Once done, the bags are tied and left at curbside or wherever it is natural for waste disposal to retrieve it.
On rare occasions, we come to a home where a downspout is so full and compacted with debris that the blowers cannot blow out the downspouts. In this instance, we must dismantle the downspouts and clear the debris out manually by hand, and reassemble the spouts back to the house. NEW This service used to be extra, but now it is included with our basic gutter cleaning. Luckily, it's rare that we actually have to do this to the downspouts, but if necessary, we take care of it as part of the service.


I hope you will not be wearied out with my impertinancies, but as the Geddes for the sake of pleasing her mother has removed her habitation from Strafford to Haverhill as I am told it will be a good place for me, and Strafford was no place at all. Mrs. Wrifford did not own a house in that place as I expected. I have stayed with Mother by paying my own expenses the same as to any one and have not been able to get employ so you will see it has been a disadvantage to me in one sense. But I have had an opportunity to repair and make my own Clothes which was very nescessary [sic]. Mother has moved to this Place with me and hopes that I shall find business so good as to make me contented to stay with her for the present. She thinks I can be a help her [sic], and so I can, but it will never do for me to stay to my own injury. I therefore beg you to take some interest in my behalf and I will assure you if it is ever in my power to repay, you shall never lose anything by it. If I do not find employ here I shall not be contented long.
1 Although the writer has written "Haverill" the postmark is clearly "Haverhill." The date is also curious. The writer has dated the letter as February 8 but the postmark is dated April 8. The postmark is stamped on the envelope/wrapper, which is actually the letter folded into the shape of an envelope and then addressed on the back of the last page. Perhaps the writer delayed in mailing the letter.


Welcome to the Madison Project. We are glad you stopped by and look forward to having you on the team. In today's troubled times it's increasingly important for like-minded conservatives to join together.
We are a political action committee committed to wholesale, conservative change of the Washington political scene. We accomplish this through our aggressive search for conservative candidates, our dedication to getting those candidates elected through effective grassroots campaigning and a commitment to arming voters with intellectual firepower.
Check out the Madison Performance Index to see how conservative your Members of Congress are and how they match up with the districts they are from. You can also stay up to date on current issues by subscribing to the Madison Project weekly bulletin, the Madisonian, on our front page (lower left).
By joining the Madison Project team you will have access to valuable content posted several times each week. This includes in-depth articles on current issues, analysis of Congressional activities, and cutting edge tools to help you impact your government. Our goal is to equip conservative activists to effectively restore our country's founding principles of limited government.
If you share our beliefs please join the team! Together, we can make a difference.
To contact us please email info@madisonproject.com or send us mail at: PO Box 655 Aledo, Tx.
Concerned about our country? Fill out this brief survey and tell us what YOU think should be done!
The Madison Project is not interested in merely complaining about the political class and the broken system in Washington.
We are one of the few organizations that actually seeks to replace the failed leadership of both parties with 21st century conservatives – ordinary citizens who have learned from the failure of big government over the past century, and believe in limited government and citizen-centric policies.


text:
A campaigner for the unconventional, Kia Tasbihgou discusses his latest typefaces
Last year, we were gripped by Kia's type designs. Gracing our screens for the second time, he returns with a bunch of new projects and a fresh perspective infused by a heavy dose of travelling.
Last year we were instantly gripped by Kia Tasbihgou's type designs – drawn in by his distinctive personality and contemporary style that shone throughout his portfolio. Gracing our screens for the second time, Kia returns with a bunch of new projects and a fresh new perspective infused by a heavy dose of travelling.
Not only has Kia been moving around a fair bit – from Taipei to a two-month stint in London to his current residence in Portugal – but the designer has also just finished up working with art director Alex McCullough from Whities on, his own words, a "handful of really fun sleeves." He's also been grafting on new type design projects, with plans to launch his own independent type foundry next year, and has even drawn some bespoke type for Warehouse Project, Salomon and Mana Contemporary, plus logotypes and lettering for Trix magazine and various other publications.
Clearly flourishing in his discipline today, Kia hails from a less-creative upbringing. He decided to pursue his studies at art school, a move inspired by his sister who is also an illustrator and a key force in his practice. What's more, his brother, graphic designer, served as a gateway for the young Kia to explore the realms of art and design. Both siblings informed his development as a designer, their influence leading to his first piece of album artwork produced at the tender age of 16.
Having spent just over a year away from London, the move has enabled Kia to breathe a little – giving him time to work on developing his style and method of practice without any immediate impressions. Admittedly, what he perceives to be as "good" design has changed quite a bit. "My biggest takeaway from living in the far East for a decent amount of time is just how interesting and engaging visual culture is there, and how little of that value depends on information I can't read." Attempting to explain his new-found process without sounding "preachy" or like a tale of, in his words, an "English dude speaking about his time in Asia wilfully positively", he goes on to explain how "there's a lot that Western designers, institutions and publishers (et al.) can learn from the East without co-opting their motifs, scripts and culture – American and Euro-centrism can be really toxic."
Kia Tasbihgou
A keen traveller, Kia hasn't tied himself down by renting a studio. Working either from libraries or cafes for the time being, he tends to begin his day with a "massive" to-do list and spends about 90% of his time developing his own typefaces. "I do all of the image-making myself and I try to source content as little as possible," he explains. "I'm always worried that my inspirations are imbedded pretty deep, so the less sourcing I do, the less I feel like I need to worry about subconsciously doing something that somebody else has already done." But when he does look for a little inspiration, he turns to artists Stefan and Franciszka Themerson, or the comedian, writer, director and producer Chris Morris. In particular, the designer is fond of "how [Chris] uses language and subverts the British vernacular in his sketches and radio bits." Kia continues, "I think a lot of what I'm trying to do lately is the equivalent of that – trying to make unconventional things work conventionally in useable type."
Consciously attempting to avoid common design tropes, Kia has applied his critical vision towards a new typeface, titled Corso. Originally inspired by birdhouses and developed as a concept for a piece of masthead lettering for a new publication, Kia explains how the project naturally evolved even further. "The idea was to fit a perfect circle into arbitrary forms where possible, and to let this concept lead the decision making for the letterforms where this approach would no longer make sense," he says. Much of this typeface's evolution comprises of inspiration taken from an early 1960s sketch by designer Max Bill, "some 'pootjesglas' lettering from the 1940s" as well as Joseph Churchward's Design 70.
We're not too sure where Kia will end up next geographically, but we're certain that he will be making more moves to broaden his career in design. But for now, here's a quick glimpse into what's coming next – a hoodie for Party Chat, a "fun book", some identities for jewellery designers, photographers and musicians, and, of course, his own typefaces.
GalleryKia Tasbihgou
View more from
Creation Project provides a blank canvas for creativity in Japan
Everyday Practice designs an honourable identity for the Achille Castiglioni exhibition
Gucci gives its logo a handwritten overhaul for Fall/Winter 2020
Graphic designer Thomas Kurppa plays with the dualism between control and chaos
www.kiatas.me
Ayla was an editorial assistant back in June 2017 and continued to work with us on a freelance basis. In November 2019 she joined the team again, working with us as a Staff Writer on Mondays and Tuesdays. She's contactable on aa@itsnicethat.com.
Data-Orbit delves into "task-specific peculiarities" to influence its crisp work
Studio Feixen finally launches its very own "superfamily" of fonts
Bureau for Visual Affairs talks us through the new and improved It's Nice That website


I tried to download Solarus today for my Ubuntu 18.04 but there is an build error on the download page. Is there another easy way to install Solarus on Ubuntu? Thank you!
Re: Solarus Ubuntu 18.04 build fail?
Explanations how to do it are here (explanations are for v1.5.X).


text:
Q: Op-amp bias issue to to charging of DC blocking capacitor
We're using the above circuit to drive a sinusoid with constant current into a custom sensor which is best modeled as a series capacitance & resistance (~100ohm, 1uF). The op-amp is single supply, and biased to 2.5V. A 1kHz signal with fixed 500mV DC offset is driven into the circuit. We measure the voltage over the sensor in order to determine changes in its resistance. An additional sense resistor (precision 100ohm) is included in the feedback loop to better estimate the current through the sensor (voltage measurement circuitry omitted). A 5Mohm resistor is placed in parallel with the sensor to provide a DC path.
The problem we have is that a DC potential is developed across the sensor each time the circuit is powered up to take a measurement. This happens because the sensor sources the charge required to bias up the DC blocking capacitor. This potential eventually decays through the DC resistor in parallel with the sensor, but not quickly enough to avoid long term damage to the sensor (which is very sensitive to DC voltages).
We do not wish to reduce the size of the DC resistor because it will affect the accuracy of the measurements. At the moment we implement a clumsy solution whereby we temporarily short out the sensor with a digital multiplexer whilst the op-amp is powered on, and the circuit stabilizes to 2.5V. Does there exist a neater solution to quickly bias up the circuit to 2.5V whilst not developing any DC voltage across the sensor?

A:
Does there exist a neater solution to quickly bias up the circuit to 2.5V whilst not developing any DC voltage across the sensor?

There will always be a power-on pulse.
You can also replace C_DC with another opamp wired as an adder, which would add the required DC offset. However, it would need to be accurate, and since you mention the signal already has a DC offset on it, this would have to be known and compensated exactly, which is tricky.
In the end, shorting out the sensor might be the safest solution.
If the power-on pulse is a problem (you should measure it) then you could use a normally-closed relay or opto-MOS to short your sensor, and only open it when DC bias is fully stabilized.

redpajama_set_name: RedPajamaStackExchange


text:
Where have all the good jobs gone? From corporate governance to globalization, the Institute examines the structural changes and trends that have eroded stable, secure employment opportunities in America and around the world, engaging economic theory and policy prescriptions to find solutions.
Content type Article (90) Conference Session (54) Event (5) Grant (3) News (2) Paper (43) Research Program (1) Video (33) Region Africa (1) Asia (4) China (3) Europe (6) Greece (1) Hong Kong (1) Italy (2) Middle East (2) North America (15) South America (3) South Asia (3) Ukraine (1) United States (15) JEL code A1 General Economics (2) A11 Role of Economics • Role of Economists • Market for Economists (1) A13 Relation of Economics to Social Values (1) A14 Sociology of Economics (2) B2 History of Economic Thought since 1925 (1) B22 Macroeconomics (1) B31 Individuals (1) D2 Production and Organizations (1) D22 Firm Behavior: Empirical Analysis (1) D3 Distribution (1) D31 Personal Income, Wealth, and Their Distributions (1) D9 Intertemporal Choice (1) D91 Intertemporal Household Choice • Life Cycle Models and Saving (1) E6 Macroeconomic Policy, Macroeconomic Aspects of Public Finance, and General Outlook (1) E62 Fiscal Policy (1) F62 Macroeconomic Impacts (1) G3 Corporate Finance and Governance (1) G35 Payout Policy (1) G38 Government Policy and Regulation (1) H2 Taxation, Subsidies, and Revenue (1) H3 Fiscal Policies and Behavior of Economic Agents (1) J2 Demand and Supply of Labor (1) J22 Time Allocation and Labor Supply (1) J5 Labor Management Relations, Trade Unions, and Collective Bargaining (2) J53 Labor–Management Relations Industrial Jurisprudence (1) J7 Labor Discrimination (1) L21 Business Objectives of the Firm (1) M1 Business Administration (1) M12 Personnel Management - Executives; Executive Compensation (1) M21 Business Economics (1) N82 U.S. Canada: 1913 (1) O3 Innovation • Research and Development • Technological Change • Intellectual Property Rights (2) O30 General (1) O31 Innovation and Invention: Processes and Incentives (1) Tag #INET2017 (4) CGET (1) Race & Economics (5)
Better Labor Standards Must Underpin the Future of Work
By Richard Samans
As technology and deregulation continue to shape the labor market, maintaining strong worker protections is as important as ever
The Future of Work Is Going to Be More Human
Featuring Richard Baldwin and Rob Johnson
As automation takes on more routine tasks, work will become more about creativity, ethics, and empathy
Economic Consequences of the U.S. Convict Labor System
By Michael Poyker
US counties with prison labor often have lower wage and employment growth
Prisoners employed in manufacturing constitute 4.2% of total U.S. manufacturing employment in 2005; they produce cheap goods, creating labor demand shock.
The Black Woman Economist Who Pioneered a Federal Jobs Guarantee
By Nina Banks
Decades before it caught on with other economists, Sadie Alexander was the first economist to recommend a government jobs guarantee in the US
By Servaas Storm
For years, governments in India and much of the developing world have followed the advice of a paper arguing that labor regulations actually hurt workers. The problem? The research was wrong.
Why Wages Are Stagnating in Latin America
By Juan M. Graña
William Lazonick has shown how the doctrine of "shareholder value" has hurt wages in the United States. But in Latin America, where family corporations dominate, the story is more complicated.
Can AI Free Humans from 'Routine' Work?
Featuring Kai-Fu Lee and Rob Johnson
Artificial intelligence (AI) is poised to replace routine jobs, says Dr. Kai-Fu Lee. But done right, that process could allow us to "pursue dreams, spend time with our loved ones and find out why we exist as humans"
The Rise of China and the Future of Work
Featuring Kai-Fu Lee
The Rise of China and the Future of WorkArtificial intelligence could replace routine jobs but allow us to "pursue dreams"
The Tyranny of the Top Five Journals
By James Heckman and Sidharth Moktan
Getting published in a top five economics journal is a near-requirement for tenure. But it's a poor measure of research quality within a system that punishes creativity.
Inequality Represents a Wasted Opportunity for Poverty Reduction
By Paul Segal
Economists who dismiss inequality as a problem secondary to poverty miss the point: Inequality is part of what drives poverty
The End of American Exceptionalism
Featuring Jeffrey D. Sachs and Rob Johnson
"We don't look after each other at all," says Jeffrey Sachs on America today
Publishing and Promotion in Economics: The Tyranny of the Top Five
This paper examines the relationship between placement of publications in Top Five (T5) journals and receipt of tenure in academic economics departments.
Why We Should Worry About Monopsony
By David Weil
When a small group of companies can dominate a labor market, wages—and workers—suffer
Market Power, Low Productivity, and Lagging Wages: The Real Drivers
By Lance Taylor
To understand labor productivity—and growing inequality—you have to look at the "dual economy"


For the 2019 Alfa Romeo 4C, the coupe is no longer available, leaving just the Spider convertible as the body style. There are more standard features than before, now including a rearview camera, cruise control, and rear parking sensors. Otherwise, the 2019 4C essentially continues the trend of other first-generation model years of this vehicle. You get razor-sharp handling, good fuel economy that is actually achievable, and exotic styling.
When you drive the latest Alfa Romeo 4C around town, you are sure to turn heads. It has the price tag you expect from a sports car, but it looks like a supercar. This is the perfect combination for many drivers. The pointed noise has the signature triangular Alfa grille. It is framed by bug-like headlights that are unique. As you move towards the rear of the auto, you will notice intake scoops and exaggerated curves. The rear haunches are large and sport twin round taillights.
The interior of the 4C keeps design to a minimum. The dashboard is certainly driver-oriented. It includes a radio head unit that looks fairly average. The seats are nice and racy, thanks to the exposed portions of their carbon fiber tub. You will find digital gauges that focus on functionality instead of style. The gauges do, however, change colors based on your chosen drive mode for a bit of flair.
You should not expect much adjustability or cushioning from the seats and will not find a glove compartment. Instead, the 4C has an elastic net on the dashboard's bottom. Climate controls limit passenger legroom somewhat. In terms of storage, expect very little as the rear compartment can only hold 3.7 cubic feet.
The standard 4C delivers cloth sport seats that are manually adjustable and a leather-wrapped flat-bottomed steering wheel. It also offers a 7.0-inch instrument cluster, Alpine stereo, a USB port, and Bluetooth. New features for 2019 include an optional microfiber steering wheel plus carbon fiber mirrors.
The 2019 4C is designed with performance in mind. It delivers the most enjoyment when on a local race track or twisty backroad. Among its performance features, the 4C stands out with braking, steering, and handling. These factors are all influenced by the fact that it weighs just less than 2,500 pounds, which is a full 500-900 pounds less than the competition.
Instead of using a V8 engine like you would expect from a supercar, the 2019 Alfa Romeo 4C uses a 1.75-liter four-cylinder with a turbocharger. This engine delivers 237 horsepower plus 258 pound-feet. Combined with the light weight of the vehicle, this means it can reach 60 mph from a stop in just 4.5 seconds. The engine is small but loud. The power gets delivered via a six-speed dual-clutch automatic transmission and rear-wheel drive. The ability of the Alfa Romeo 4C to brake with ease comes from its four-piston, 12 -inch front brakes.
The Alfa Romeo 4C does not offer any active safety features. It does, however, have dual front air bags, a driver's knee air bag, side air bags, and hill-start assist. As mentioned, the rear parking sensors and backup camera are now standard instead of optional.


Get instant customer and company information next to your emails.
You just received an email from a new prospect.
Now what?! Check the Cirrus Insight side panel for contact and company information to give you context.
Plus, you have one-click access to connect with the prospect on social networks like LinkedIn. Always be prospecting.


Interested in Setting an Appointment? We'll Call You!
We Offer Heating, Cooling, Water Heating, Indoor Air Quality, Duct Cleaning, Radon Testing and Abatement, and Custom Sheet Metal and Ductwork!
Serving Rome, Utica, Clinton, Holland Patent, New Hartford, Whitesboro, Canastota, Lee Center, Marcy, Oneida, Oriskany, and surrounding areas.
Copyright © 2017 Patrick Heating, Inc - All Rights Reserved.


text:
Imran Khan's political strategy enters the final round, Parvaiz Elahi
LAHORE: Chief Minister Punjab Chaudhry Parvaizalhi has said that Punjab government is the trust of Imran Khan, if he resigns, Shahbaz Sharif's 27 km government will not be able to run for 27 hours.
The name of the conspiracy against Pakistan is Imran Khan, why did he not come to Islamabad? Fazl-ur-Rehman
Q-League central leader Chaudhry Pervez Elahi said in his video statement that he does not leave the side of whomever he walks with, Imran Khan will not be late for a minute if the assemblies ask him to leave.
He said that after the Rawalpindi rally, Imran Khan's political strategy has entered the decisive round.
The sea of applause of the people is a proof of the popularity of Imran Khan.
Chaudhry Pervaizalhi said that as soon as the resignation comes, the fake alliance of PDM will also turn into anarchy.
Imran Khan's decision to resign from all assemblies
Chief Minister Punjab Chaudhry Pervaiz Elahi said that in the election, he will have someone who will be remembered by his generations, there will be works in this country that will benefit the common man and his children.
No-confidence motion against Chief Minister Punjab will be presented or not? A meeting of the PML-N has been called
Pakistan's Hisham Hadi Khan defeated India in India, won the championship


body language dating are jenna marbles and julien dating Body language dating body language how to read body language signs and gestures male and female, for work, social, dating, body language dating and are jenna marbles and julien dating mating are jenna marbles and max dating relationships.
Dating marbles Sporting Heritage Dating marbles - How to get a good man. It is not easy for women to find a good man, and to be honest it is not easy for a man to find a good woman. Join the leader in footing services and find a date today. Join and search! Rich woman looking for older man & younger man. I'm laid back and get along with everyone. Looking for an old soul like myself. I'm a lady. My interests include staying up late and taking naps.
Who is Jenna Marbles dating? Jenna Marbles boyfriend, husband Jenna Marbles has been in relationships with Max (II) (2008 - 2013). About. Jenna Marbles is a 32 year old American Personality. Born Jenna Nicole Mourey on 15th September, 1986 in Rochester, New York, USA, she is famous for YouTube in a career that spans 2009–present. Her zodiac sign is Virgo.
Marbles - Jefferson Patterson Park and Museum Marbles By Patricia Samford. Marbles are one of the most common toys found on North American historic period archaeological sites. This essay will attempt to provide dating and identification tools for ceramic, stone and glass marbles typically found on these sites.
29 best Marble Run Building Tips images on Pinterest in. Nov 13, 2018- Create marble runs that are sturdy and exciting with these resources, tips, and ideas for your marble run toy. Building Toys Marble Run Marble Toys Playtime Kids Toys Marbles STEM Toys STEAM Toys Makerspaces Learning Through Play Hands-On Learning Marble Run Tips See more ideas about Dates, Dating and Marble.
Dating marbles – A Color Story More marbles, latticinos, youtuber kaplamino has there been up for orders over 40. Leaving dating site will also display on the 30's. How to help you can make a competitive marble run, dating and adults to help you. Sholom, pendants and fun to flirt with her pseudonym jenna marbles dating marbles dating.
Marbles knives dating - A Workcover Victims DiaryA. Dating from my marbles games, flash game or losing unmusically. Same as 5, and even ka-bar to be handled. Gun sights have a six-inch blade. Same as 5, and even ka-bar to be handled. Gun sights have a six-inch blade.


Join our team and share our passion to become part of an ever-expanding nationwide recruitment company!
Our consultants are proud to work for HR GO Recruitment and to be part of a culture where we are driven to perform at our best and celebrate our successes with one another. Work-life balance is extremely important to us and if you join our team we will do our utmost to ensure that you'll not only work hard, you'll play hard too!
and have fun along the way?
We have opportunities available now across our branches in the UK.
we could be just what you have been looking for. Have a look at what else is on offer too.
Our training programme will give you the ability to reach your earning potential quickly, providing you with the tools to build your career and become a leader within your market.
Our consultants have their own company laptops, mobiles, the latest CRM software and cloud based applications. Working smarter not harder and ensuring we are at the forefront with recruitment technology!
We encourage all of our consultants to visit and work from any of our UK branches – that way when it's time to kick back and party you can leave the small talk at the door.
That's why we take our community responsibilities very seriously. We are proud to offer everyone 2 days per year volunteering – on full pay. A great opportunity to give something back while engaging with clients and the local community.
A great achievement and we sure celebrated in style! We love a party – just thinking of an excuse for our next one!
in the antics and share our successes with us.
What are the benefits of working for HR GO Recruitment?
Contact HR GO Recruitment today!
If you're looking to progress your career or even start a new career in recruitment then I'm the person to talk to. I recruit for talented individuals across the country who have what it takes to succeed in a fast paced sales and recruitment environment. Get in touch today.
I work closely with Rebecca to find new talent for the business, along with providing Internal Training and supporting the recently launched Recruitment NVQ for all our nation wide branches.


text:
Research Article|August 01 1983
Invisible Hand or Fatherly Hand? Problems of Paternalism in the New Perspective on Health
Albert Weale
J Health Polit Policy Law (1983) 7 (4): 784-807.
https://doi.org/10.1215/03616878-7-4-784
Albert Weale; Invisible Hand or Fatherly Hand? Problems of Paternalism in the New Perspective on Health. J Health Polit Policy Law 1 August 1983; 7 (4): 784–807. doi: https://doi.org/10.1215/03616878-7-4-784
This article examines the charge that the "New Perspective" on health (as exemplified by the Lalonde Report in Canada, by Prevention and Health in the United Kingdom) represents an abandonment of liberal principles in favor of a collectivist and paternalistic role for the state. It looks first at the problems confronting modern health policy, and at the reasoning behind the New Perspective's approach. It then explores whether and how the charge of paternalism applies to that approach, and just what such a charge implies. The article concludes with a discussion of the "liberal paternalist" viewpoint towards health policy, a viewpoint that combines respect for individual liberty with an interest in taking effective public action to improve the health status of modern populations.
Copyright © 1983 by the Department of Health Administration, Duke University
A Retrospective on the "New Perspective"
"Jackie Treehorn Treats Objects Like Women!": Two Types of Fetishism in The Big Lebowski
The Leap of Faith from Disease Treatment to Lifestyle Prevention: The Genealogy of a Policy Idea
The Strategy of Flight: Problematizing the Figure of Trafficking
Paternal Prohibition
Collectivist Utopias and "The Graveyard of Development Projects"
Suspicious Affinities Loyal Subjectivity and the Paternalist Public
paternalist


An annual trail run held in Donald Park located in Mt. Horeb, WI. This year the distances will be 5km and 15km, but not missing any of the usual fun and challenging course terrain (prairie, sand, hills, and more!


text:
Diane Guerrero of Orange Is the New Black Takes on Immigration Reform
The Boston native's new memoir, In the Country We Love, covers her experiences after her parents were deported when she was 14.
By Lisa Weidenfeld·	 5/3/2016, 2:58 p.m.
Image of Diane Guerrero by Jeff Mosier
Boston native Diane Guerrero is part of one of TV's most socially conscious programs: She plays Maritza Ramos on Orange Is the New Black, the women's prison dramedy. The Netflix show is devoted to exploring the personal histories of its diverse cast of characters, many of whom are not the type of people, whether racially or economically, who are often seen on TV.
But Guerrero had her own piece of personal history to share: At age 14, while away for the day attending Boston Arts Academy, her parents were deported. They were undocumented, but as their citizen daughter, she was allowed to stay in the country. But no one from the government ever communicated with her about what happened. Instead, she was left on her own to figure out what to do. While her success today provides the sort of feel-good ending usually seen in a movie, the process of getting there was difficult, often heartbreaking, and one she hopes to see change. She wrote about the experience in an op-ed for the Los Angeles Times in 2014, and has now released a memoir about it, In the Country We Love. We talked to her about what inspired her to start talking about her experience.
You talk in the book about how you hid the story about what happened to you for a long time. What made you decide to start putting it out there in the world?
Well, first of all, nothing was settled with me. When this happened to me, I really felt so stripped, so vulnerable, so left with broken pieces. I always knew the reason why I went to school, the reason I continued with following my dreams and having goals is that I just knew one day that I wanted to make a difference. I feel funny saying it. I've always been the kind of person, who—I don't feel right. I don't wake up in the morning feeling like everything is all great in the world. And so when I saw people going out and really exposing themselves, undocumented students, undocumented mothers and fathers, exposing themselves and being true activists for immigration reform, I said to myself, how could I not participate in something that I have personally been so affected by?
Was it really weird to go through this experience where you wrote an op-ed and it took off across the internet?
Yeah, I certainly have gone through ups and downs in accepting this whole thing, and then regretting it and waking up screaming with nightmares. I go online and put in my name and the headlines are…it was very frightening. At first you don't know how to deal with a lot of people knowing your business, but that's what I risked and what I sacrificed so that I could get attention on this issue that is so important. What I hope comes out of this is that people pay attention and the people who don't understand the issue very much and don't have any experience with anybody who's gone through this get a little insight, but also that people in communities like the community I grew up in get inspired and maybe take note and say wow, I have a voice too.
Part of what people were so fascinated by in the original op-ed is that you're a successful TV actress. They don't think of you as someone who could have gone through something like this. Is that part of why you wrote this?
Even more, now that I'm part of this huge TV show that people seem to really respond to. Naturally, you get interviewed and you do press and that sort of thing and I just saw a good opportunity to use my voice in the way I really wanted to. Obviously I love being an actor and what comes with it. I love getting to play and to tell different stories and to empathize with the human experience. It's all what I'm about. And now getting to say what I really care about and having people listen is a really effective way to use my platform. At least it's letting me sleep at night now. I think that in the beginning when I wasn't saying anything about who I really was—people would ask me questions about what my interests were, what my family was like, what I was like as a real person, it became harder and harder to talk about stuff without mentioning who I really was and living my truth, and my truth is that my family was separated when I was at a young age.
There is a huge issue in this country. The immigration system is dated, the visa system is dated, and we need comprehensive immigration reform now. I don't want to see other families experience what my family did. I don't want to see any more kids left behind to navigate through this world by themselves or thinking that they don't matter or that they have no value.
How influential was Boston Arts Academy in helping you make it through those first few years after your parents left?
Oh, so influential. It's a great community. Their way of teaching, the way they care about their students, I felt really protected. I was finally in a place where I was with likeminded people, people who cared about others, who cared about the arts, who liked to tell stories. I was in a safe place and they really helped me throughout those years. I didn't talk about it much with anybody. There were only a few people that I shared my story with, but they held my story safe and they respected me and I was able to survive those years because of them.
See Guerrero tonight at 7 p.m. at Brookline Booksmith.
Lisa Weidenfeld	Senior Digital Editor at Boston Magazine @LisaWeidenfeld
lweidenfeld@bostonmagazine.com
The Ultimate Guide to Candlepin Bowling in and around Boston
Where to See a Tree Lighting Ceremony around Boston


text:
Red Dead Redemption 2 teased by Rockstar Facebook page
By Gerald Lynch
last updated 4 August 2022
Roses are red, cowboys are too...
It's perhaps the most hotly-anticipated game yet to be announced, but developer Rockstar has given perhaps its biggest tease yet that Red Dead Redemption 2 is on the way.
On Sunday it updated its Facebook page with a very familiar red color scheme Cover Photo.
That dappled red remind you of anything? Take a look at the Red Dead Redemption box art:
Awfully similar background, right?
Red Dead Return
The same image was tweeted, suggesting a co-ordinated teasing campaign for whatever comes next from Rockstar:
pic.twitter.com/BklXMlZ0UQOctober 16, 2016
The company's Newswire website saw a similar update.
Though Rockstar hasn't offered any accompanying details with the social media updates, it seems to suggest that the open-world cowboy franchise will soon be making a return.
Rockstar publishing partner Take-Two recently announced that the developer was "of course hard at work on exciting future projects," and with the recent Grand Theft Auto V biker update seemingly marking the end of major content packs for that game, attentions are likely turning to the Old West.
Indeed, earlier this year TechRadar exclusively revealed what a trusted source claimed to be a first look at the Red Dead Redemption 2 map, revealing the new game to be a prequel to 2010's Red Dead Redemption. It also suggested that there will be a link to Mafia 3, also published by Take-Two, with both Mafia 3 and the Red Dead leak sharing the location of New Bordeaux.
Not counting the PS4, Xbox One and PC remakes of GTA V, Rockstar hasn't revealed an all new game since 2011, when it first showed off Grand Theft Auto V for the PS3 and Xbox 360.
2010's Red Dead Redemption is often considered one of the finest games of the last generation, mixing the open-world action of the Grand Theft Auto series with a super-cool spaghetti western aesthetic. A current gen return to the Wild West created by Rockstar is high on many a gamer's wishlist.
See what all the fuss is about with Red Dead Redemption backwards compatibility
Or you can see all about Red Dead Redemption 2 cheats
Gerald Lynch
Gerald is Editor-in-Chief of iMore.com. Previously he was the Executive Editor for TechRadar, taking care of the site's home cinema, gaming, smart home, entertainment and audio output. He loves gaming, but don't expect him to play with you unless your console is hooked up to a 4K HDR screen and a 7.1 surround system. Before TechRadar, Gerald was Editor of Gizmodo UK. He is also the author of 'Get Technology: Upgrade Your Future', published by Aurum Press.
See more Gaming news
Huge sitewide sale knocks 75% off Lenovo Thinkpad laptops and more
Is sleeping on your back good for you?
Age of Empires 2 arriva su Cloud: ritorna un classico intramontabile


AUSTIN, Texas (AP) - Gov. Greg Abbott made expanding pre-kindergarten programs an "emergency item," fast-tracking bills on the topic through the Legislature.
Lawmakers have wasted little time filing major bills to expand early education, but there's disagreement on how best to do so.
One proposal by Georgetown Republican Rep. Marsha Farney and Dallas Democratic Rep. Eric Johnson would increase funding and offer full-day pre-kindergarten programs based on an incentive system, with school districts becoming eligible if they implement new educational standards that include teacher training and class-size caps.
A separate bill by Houston Republican Rep. Dan Huberty would provide up to $1,500 per student to school districts that meet new "high quality prekindergarten" standards, which entail fewer benchmarks than the other bill.
Huberty's plan more closely follows a model Abbott promoted while still a gubernatorial candidate - which could help its chances in the Legislature. The other proposal may also prove popular.
TAX CUT IDEA DAY: The powerful Senate Finance Committee convenes Monday to discuss 15 bills seeking to ease property taxes, as well as offering tax cuts for businesses large and small. Committee Chairwoman Jane Nelson, the Senate's chief budget writer, has already unveiled a plan that would slash property and business taxes $4.6 billion in the 2016-2017 state budget, but says she's anxious to hear other tax-targeting ideas from her colleagues in both parties. There hasn't been this much fervor about tax relief since 2006, when deep property tax cuts passed by the Legislature created a budget shortfall that ultimately led to $5.4 billion in cuts to public schools. This time, top Republicans insist there's enough money to reduce taxes without cutting key state services - but some fiscal observers are wary.
ROAD FUNDING PROPOSAL IN HIGH GEAR: A major Senate plan to funnel billions of dollars into bolstering roads and highways beginning in 2018 by using part of the tax revenue generated by car sales statewide has sailed through the Transportation Committee. Because Abbott also made improving transportation infrastructure an emergency item, the topic is on a legislative fast-track - and may even be the first major piece of legislation considered in the Senate as early as this week.
A COMMITTEE FOR TUITION-REPEAL BILL?: Tea party-backed Rep. Jonathan Stickland took to the House floor to demand why his proposal repealing a 2001 law offering in-state tuition at public universities for some students in the country illegally had "been skipped." He suggested fellow Republican and House Speaker Joe Straus was sitting on the measure, which was filed Nov. 10 but hadn't been assigned to committee, even though bills filed after it had. Proposals must pass committee before they can be debated by the full House. The complaints forced Straus to explain that it's common to refer bills to committee not based on the order they were filed. Stickland's bill still hasn't been assigned to committee, though, and it remains to be seen whether his complaints will speed that decision up.


100 Days Later, What Does America Really Want to Know About Appalachia?
In 2016, West Virginia was national and international news. And it wasn't all good. The general theme of coverage by the major media outlets was Ruin and Hopeless, manifest in the four major stories of the year – Drugs, Racism, Flooding and Trump.
The goal of 100 Days in Appalachia, a pop-up media outlet spearheaded by West Virginia University and West Virginia Public Broadcasting, was to give regional journalists and producers a vehicle to provide coverage and context about the region that, all too often, national and international reporters would miss or ignore.
But the 100 Days are up. Which begs the question, what now?
At New Story in Morgantown on June 16 and 17, we'll get into that.
You'll hear from the architects of 100 Days In Appalachia about what they learned from the project, about home-growing a media product designed for a national and international audience, and how they plan to continue the work.
Plus, you'll have the chance to talk to reporters and editors from major national news outlets about what shapes their coverage of West Virginia, and pitch them on great local stories they missed.
Pointing the finger at "parachuting" reporters, and blaming them for West Virginia's national narrative, is getting pretty boring. The time has come to engage with them, ask them, inform them, pitch them.
Only at New Story. Register now.


The new online home of The Customer Success Association is about to open, and all membership materials here are being transferred to the new Library there.
All current Research Memberships of The HotLine Magazine will automatically be transferred to Customer Success Association memberships for the rest of their subscription period. Associate Memberships are being discontinued.
You can still join the Mailing List here, and be automatically included in the continuing list for the CSA.
The HotLine Magazine will continue, of course, serving readers in 140 countries around the world. The Customer Success Management Forum on LinkedIn will also continue to provide an ongoing conversation for members.


KZ1 vet since Dec. 2004... Game was a way of life, played it until around early 2008 when I got my PS3. Was loomking forward to it coming onto the PS Store today, but it looks like we all got bamboozeled. Hopefully they do an HD remaster one day or something. This is unacceptable.
Park, Beach, Orbital, I loved all the maps really. Maybe except Slums, that map kinda blew and overheated everyone's systems on the spot lol. I missed all the Park Assaults, that was probably my favorite gamemode/map combo.
If anyone's reading, feel free to add me on PS3.
Same here! KZ was the ONLY game I religiously played online for close to 3 years! I remember when I first got it you almost never got a free spot in "US East" server, and had to go to "US East 1". I miss being able to type in the lobby (ala pc), I used to troll everyone that my mic was broke...lol. Every weapon had their high points and low points, but by far the M-66SD "Luger" was my fave. Was super excited when they brought it back for KZ3, even though its not quite as good (missing secondary fire).
If anyone actually reads this, my old KZ names were: NN-ALBIEROCK, KING-D1CKH3AD, RICHARD.CRANIUM, SeRK-Ed Gein, -I-Push, and more i cant remember. Also, i used to troll other clans by creating my own take on their names. Met some cool people that way (those thaa laughed) here are some examples: [Alcoholics clan] Lc-ArBoRMiSt, [Drugz Clan] Dz-PrILoSec.
And here is a list of names of people I remember playing a long time with. I still have a couple on my PS3 friends list, would love to find more of you! YO-TeChNiC12s, DOGSH1T, NN-COCOA -I-Pull, any KING, CLEAN, -NN-, or SeRK clan members.
SEND ME A FRIEND REQ ON PSN OR RESPOND HERE.
PLEASE LET COCOA KNOW I SAID HI, ITS SKINGIRL!!!
I can't log on to KZ 1. Don't know what's wrong. I miss the late night hours killing Min,LOSER, RIPPER,Wrath and the rest of the bunch.
Yea KZ1 was my favorite online game. Too bad the KZ2 and KZ3 were not the same. Anyone remember me? Seems like everyone died since then except like 5 guys.
i remember some of you splint and albierock for sure. i miss the southern hills, delta creek, and vetkan slums. hell i even miss snippin 203 w****s on park. those were the good old days. im hoping someone figures out what made that game so great and even if its not GG i hope someone makes a game just like it.
no one remembers me i changed my name to much but i was RESPECT, SKETCH, NEKROKNIGHT, and RUNorDIE.
I played KZ1 till the servers was shut down ;( sad day big up gunie who never logged off.
They basically took the secondary weapon attachments the weapons on kz1 had from KZ2 heard that they are bring them back (not excally sure about weapon attachments but know they will bring back flashlights, sliencers, etc) and this is what made the weapons in kz1 ROCK! of the 3 consule games in the series as an example the Helghast assault rifle was the most powerful and useful in kz1 with its shotgun attachment in kz2 it was pathetic as a weapons and to me no offensive but if in kz2 u use the Hig assault rifle then u are weak as the weapon is 100% useless and you shoud be using the m82 if nothing else! GG were lucky they improved the rifle ability in kz3 but still not as powerful as with the shotgun attachment.


The first Memmert branch in India was founded in 2012 and this was followed by formation of an independent company Memmert India Laboratory Equipment Private Limited in 2014. Pune, a city with over 5 million inhabitants which is located near the capital Mumbai is an important industrial centre and thus a perfect location for Memmert India. From here, branch manager Shailesh Bhat and his team are responsible for the local trading partners. The economy in the booming subcontinent of India is still growing and Memmert appliances are used especially in the emerging markets of pharmaceutics, biotechnology and research, but also in general industry.
Please contact us any time, if you have questions concerning the choice of appliances, preparation of an offer, application, validation (e.g. IQ/OQ/PQ), calibration, sales and product trainings, putting into operation, as well as maintenance, repairs and spare parts.


My name is Vegas and there's a story to how I got my name. I was in a shelter in Southern California and I was in bad shape because I tangled with a car and the car won.....car 1.....Vegas 0. The shelter said that I was walking on my front legs and everyone assumed that I was dragging my back legs...... but not me, I have talent and I learned how to walk on my front legs with my back legs in the air. I couldn't do this now because instead of being skinny like I was, I'm now a well rounded fella. You see, my pelvis was broken in three places and an orthopedic surgeon plated the worst break and the other two healed and I'm just fine and raring to go.
Anyhow, back to how I got my name. Silky Rescue decided to take a chance and they rescued me.....whee, if they hadn't you wouldn't be getting the wonderful opportunity to adopt me.
I'm three or four years old and I'm crate trained. I use a doggie door but could still use work on my house manners. I get along with all my silky friends and like to be part of the gang. I'm quite a handsome fella as you can see and I have a very nice personality so all you need to do is contact my foster mom who will tell you just how wonderful I am.
Vegas' new family will be expected to sign a contract agreeing to provide proper care for him. His adoption fee will be $200. Preference will be given to applicants within the surrounding area. Please note that we do not ship our rescues.
If you are interested in Vegas, please fill out an application and mention his name. The application is on-line at http://SilkyRescue.tripod.com/appform.htm. If you have already filled out an application, it is not necessary to re-do it...just email us at SilkyRescueApplications@yahoo.com and let us know you are interested in Vegas (please include your name and state so we can find your application in our files).
This is Vegas before our wonderful vet got him all fixed up!


text:
Home » Topics » Software and Applications » Hunger for open source triggers Alfresco growth
Hunger for open source triggers Alfresco growth
by Pete Swabey 14 April 2009
Open source software is enjoying a period of renewed interest as companies dealing with shrunken IT budgets weigh the cost of their proprietary software licences against 'free stuff'.
That validation is translating into commercial success for several companies at the head of the (highly vocal) open source movement: Red Hat and Novell (with their Linux implementations) and Ingres (with its venerable database system) are well-known examples, but in the market for open source enterprise content management (ECM) software, it has taken until now for one company – Alfresco – to emerge as a leader.
The numbers certainly speak to that point. Despite – or because of – the tough economy, the company's revenues grew 103% in its year to 28 February, including a 92% surge in its fourth quarter, says Alfresco CEO John Powell, the ex-COO of Business Objects, who together with John Newton, the former CTO of ECM pioneer Documentum, set up Alfresco in 2005 as a direct challenge to Microsoft SharePoint.
Since then, the company's customer base has grown to include a mix that indicates its product's horizontal market appeal: the French Air Force, MIT, Fedex, Fox Broadcasting, games companies Activision and EA, Islington and Camden Councils, accountant H&R Block and the NYPD.
More than 270 were signed up in 2008 alone, as downloads of its software crossed the 1.5 million mark.
"The downturn could have really poleaxed us, but we are [still] in a high-growth phase," Powell says.
A clear indicator of the interest in cost cutting by switching to open source comes from the growth in the number of 'lead' registrations that have been appearing on the company's website: levels have risen 30% in the last three months alone.
"Quite conservative companies, where the mantra has been 'open source is risky, we'll go proprietary', are now looking at their budgets and saying, 'we need to have a very hard look at open source'," says Powell.
But it is not just about open source. The company promotes its flagship product, the newly upgraded Alfresco Enterprise 3.1, as "five times faster and ten times cheaper than traditional closed systems". It also boasts that it can offer "the most experienced team in content management in the world", after having built an employee base from the alumni of Documentum, FileNet, OpenText, Interwoven and Vignette.
Despite being founded and headquartered in the UK, most of Alfresco's growth has come from Europe and the US.
"In the US, people tend to be more adventurous and no one vendor controls the market," Powell says. "People don't behave that way in the UK, they look for examples and won't participate until they see their neighbour doing it." France, in particular with its government backing for open source purchases, has been a strong market.
He is heartened by the UK government's announcement last month that it would finally be taking open source options seriously during public sector procurement, but explains that the systems integrators really control the purse strings on government contracts.
"Entry into a government project [used to be] beyond anything Alfresco could [justify] because of the resourcing you have to put in to get on the bid. If you don't have a systems integrator taking you in, you'll never get through the door," he says. "The government has now given the [open source] policy more teeth, although it's not as enforceable as I would like."
While it might express frustration with the UK, Alfresco has proved it doesn't necessarily need to conquer the local market to be successful abroad.
"We are seeing a lot of take up in Japan, Australia is a very good market for us and South Africa is just going nuts for open source at the moment," says Powell. "In that latter case, government has realised that it lets you build IT brain power locally: if you use a Microsoft product in South Africa and you don't like it, the only person who can change it is in Redmond. If you use Alfresco in South Africa, you can have local citizens change the code or come up with something different. Open source companies build value in the local economy in very different ways to proprietary software."
With backing by blue-chip Silicon Valley venture capitalists, Accell Partners and Mayfield Fund, as well as SAP Ventures, the investment arm of the ERP giant, Alfresco is developing a growth profile that stands in sharp contrast to the rest of the gloom in IT: while lay-offs fill the industry columns daily, it has been adding staff at an annual rate of 28%.
Pete Swabey
Pete was Editor of Information Age and head of technology research for Vitesse Media (now Bonhill Group plc) from 2005 to 2013, before moving on to be Senior Editor and then Editorial Director at The... More by Pete Swabey
Understanding e-signatures: the key differences and requirements
SuiteWorld 2022: NetSuite announces five new solutions
Key questions to ask when choosing a SaaS provider