text:
from __future__ import division
import numpy as np
import modest
import logging
import scipy
import prior
import reg
import multiprocessing as mp
from slip import steps_and_ramps
from modest import funtime

logger = logging.getLogger(__name__)

def state_parser(Nst,Ns,Ds,Nv,Nx,Dx):
  out = {}
  out['Ns'] = Ns # number of slip basis functions
  out['Ds'] = Ds # number of slip directions
  out['Nst'] = Nst # number of slip time coefficients
  out['Nv'] = Nv # number of viscous basis functions
  out['Nx'] = Nx # number of stations
  out['Dx'] = Dx # number of station displacement directions
  out['total'] = Nst*Ns*Ds + Nv + 2*Nx*Dx

  slip = np.arange(0,Nst*Ns*Ds,dtype=int)
  out['slip'] = np.reshape(slip,(Nst,Ns,Ds))

  out['fluidity'] = np.arange(Ns*Ds*Nst,Ns*Ds*Nst + Nv,dtype=int)

  secular_velocity = np.arange(Ns*Ds*Nst + Nv,Ns*Ds*Nst + Nv + Nx*Dx,dtype=int)
  out['secular_velocity'] = np.reshape(secular_velocity,(Nx,Dx))

  baseline = np.arange(Ns*Ds*Nst + Nv + Nx*Dx,Ns*Ds*Nst + Nv + 2*Nx*Dx,dtype=int)
  out['baseline_displacement'] = np.reshape(baseline,(Nx,Dx))

  return out

def flat_data(u):
  Nt,Nx,Dx = np.shape(u)
  u_flat = np.reshape(u,(Nt*Nx*Dx))
  return u_flat

def flat_cov(cov):
  Nt,Nx,Dx,Dx = np.shape(cov)
  cov = np.reshape(cov,(Nt*Nx,Dx,Dx))
  cov_flat = scipy.linalg.block_diag(*cov)
  return cov_flat

def observation_t(X,t,F,G,p,slip_func):
  '''
  X: state vector
  t: time scalar
  F: Ns,Ds,Nx,Dx
  G: Ns,Ds,Nv,Nx,Dx
  '''
  b = slip_func(X[p['slip']],t)
  b_int = slip_func(X[p['slip']],t,diff=-1)
  slip = np.einsum('ij,ijkl',b,F)
  visc = np.einsum('ij,k,ijklm',b_int,X[p['fluidity']],G)
  tect = (X[p['secular_velocity']]*t + X[p['baseline_displacement']])
  out = tect + slip + visc

  return out

@funtime
def observation(X,t_list,F,G,p,slip_func,mask):
  cnt = 0
  obs = np.sum(~mask)
  out = np.empty(obs)
  for i,t in enumerate(t_list):
    new_obs = np.sum(~mask[i])
    out_t = observation_t(X,t,F,G,p,slip_func)
    out[cnt:cnt+new_obs] = out_t[~mask[i]]
    cnt += new_obs

  return out

def observation_jacobian_t(X,t,F,G,p,slip_func,slip_jac):
  F = np.einsum('ijkl->klij',F)
  # change G from slip_patch,slip_dir,visc,disp,disp_dir to
  # disp,disp_dir,visc,slip_patch,slip_dir
  G = np.einsum('ijklm->lmkij',G)

  b_int = slip_func(X[p['slip']],t,diff=-1)

  b_jac = slip_jac(X[p['slip']],t)

  b_int_jac = slip_jac(X[p['slip']],t,diff=-1)

  jac = np.zeros((p['Nx'],p['Dx'],p['total']))
  jac_vel = t*np.eye(p['Dx']*p['Nx']).reshape(p['Nx'],p['Dx'],p['Nx'],p['Dx'])
  jac_disp = np.eye(p['Dx']*p['Nx']).reshape(p['Nx'],p['Dx'],p['Nx'],p['Dx'])
  jac[:,:,p['secular_velocity']] = jac_vel
  jac[:,:,p['baseline_displacement']] = jac_disp
  jac[:,:,p['slip']] = np.einsum('ij...,...->ij...',F,b_jac)
  jac[:,:,p['slip']] += np.einsum('ijk...,k,...->ij...',G,X[p['fluidity']],b_int_jac)
  jac[:,:,p['fluidity']] = np.einsum('ij...lm,lm->ij...',
                                     G,b_int)

  return jac

@funtime
def observation_jacobian(X,t_list,F,G,p,slip_func,slip_jac,mask):
  cnt = 0
  obs = np.sum(~mask)
  out = np.empty((obs,p['total']))
  for i,t in enumerate(t_list):
    new_obs = np.sum(~mask[i])
    out_t = observation_jacobian_t(X,t,F,G,p,slip_func,slip_jac)
    out[cnt:cnt+new_obs] = out_t[~mask[i]]
    cnt += new_obs

  return out

def regularization(X,reg_matrix):
  out = reg_matrix.dot(X)
  return out

def regularization_jacobian(X,reg_matrix):
  return np.array(reg_matrix,copy=True)

def L2(residual,covariance,mask):
  residual = residual[~mask]
  covariance = covariance[~mask]
  return np.sum(residual**2/covariance)

def setup_output_file(outfile,p,name,position,time):
  arr = np.ones((len(time),p['Nx'],p['Dx']))
  mask = np.zeros((len(time),p['Nx']),dtype=bool)
  outfile.create_dataset('data/mean',
                         data=arr)
  outfile.create_dataset('data/mask',
                         data=mask)
  outfile.create_dataset('data/covariance',
                         data=1e-10*arr)
  outfile.create_dataset('data/position',
                         data=position)
  outfile.create_dataset('data/time',
                         data=time)
  outfile.create_dataset('data/name',
                         data=name)

  outfile.create_dataset('predicted/mean',
                         data=arr)
  outfile.create_dataset('predicted/mask',
                         data=mask)
  outfile.create_dataset('predicted/covariance',
                         data=1e-10*arr)
  outfile.create_dataset('predicted/position',
                         data=position)
  outfile.create_dataset('predicted/time',
                         data=time)
  outfile.create_dataset('predicted/name',
                         data=name)

  outfile.create_dataset('tectonic/mean',
                         data=arr)
  outfile.create_dataset('tectonic/mask',
                         data=mask)
  outfile.create_dataset('tectonic/covariance',
                         data=1e-10*arr)
  outfile.create_dataset('tectonic/position',
                         data=position)
  outfile.create_dataset('tectonic/time',
                         data=time)
  outfile.create_dataset('tectonic/name',
                         data=name)

  outfile.create_dataset('elastic/mean',
                         data=arr)
  outfile.create_dataset('elastic/mask',
                         data=mask)
  outfile.create_dataset('elastic/covariance',
                         data=1e-10*arr)
  outfile.create_dataset('elastic/position',
                         data=position)
  outfile.create_dataset('elastic/time',
                         data=time)
  outfile.create_dataset('elastic/name',
                         data=name)

  outfile.create_dataset('viscous/mean',
                         data=arr)
  outfile.create_dataset('viscous/mask',
                         data=mask)
  outfile.create_dataset('viscous/covariance',
                         data=1e-10*arr)
  outfile.create_dataset('viscous/position',
                         data=position)
  outfile.create_dataset('viscous/time',
                         data=time)
  outfile.create_dataset('viscous/name',
                         data=name)

  outfile.create_dataset('state/all',
                         shape=(len(time),p['total']))
  outfile.create_dataset('state/baseline_displacement',
                         shape=(len(time),)+np.shape(p['baseline_displacement']))
  outfile.create_dataset('state/secular_velocity',
                         shape=(len(time),)+np.shape(p['secular_velocity']))
  outfile.create_dataset('state/slip',
                         shape=(len(time),)+np.shape(p['slip'])[1:])
  outfile.create_dataset('state/slip_derivative',
                         shape=(len(time),)+np.shape(p['slip'])[1:])
  outfile.create_dataset('state/fluidity',
                         shape=(len(time),)+np.shape(p['fluidity']))
  outfile.create_dataset('state/time',
                         data=time)
  return

@funtime
def main(data,gf,param,outfile):
  '''
  Nt: number of time steps
  Nx: number of positions
  Dx: spatial dimensions of coordinates and displacements
  Ns: number of slip basis functions per slip direction
  Ds: number of slip directions
  Nv: number of fluidity basis functions
  total: number of state parameters (Ns*Ds + Nv + 2*Nx*Dx)

  Parameters
  ----------
    data: \ mask : (Nt,Nx) boolean array
          \ mean : (Nt,Nx,Dx) array
          \ covariance : (Nt,Nx,Dx,Dx) array
          \ metadata \ position : (Nx,Dx) array
                       time : (Nt,) array

    prior: \ mean : (total,) array
           \ covariance : (total,total) array

    gf: \ elastic : (Ns,Ds,Nx,Dx) array
        \ viscoelastic : (Ns,Ds,Dv,Nx,Dx) array
        \ metadata \ position : (Nx,Dx) array

    reg: \ regularization : (*,total) array

    params: user parameter dictionary

  Returns
  -------
    out: \ slip_integral \ mean : (Nt,Ns,Ds) array
                         \ uncertainty :(Nt,Ns,Ds) array
         \ slip \ mean : (Nt,Ns,Ds) array
                \ uncertainty : (Nt,Ns,Ds) array
         \ slip_derivative \ mean : (Nt,Ns,Ds) array
                           \ uncertainty : (Nt,Ns,Ds) array
         \ fluidity \ mean : (Nv,) array
                    \ uncertainty : (Nv,) array
         \ secular_velocity \ mean : (Nx,Dx) array
                            \ uncertainty : (Nx,Dx) array
         \ baseline_displacement \ mean : (Nx,Dx) array
                                 \ uncertainty : (Nx,Dx) array

  '''
  F = gf['slip'][...]
  G = gf['fluidity'][...]
  coseismic_times = np.array(param['coseismic_times'])
  afterslip_start_times = param['afterslip_start_times']
  afterslip_end_times = param['afterslip_end_times']
  afterslip_times = zip(afterslip_start_times,afterslip_end_times)
  afterslip_times = np.array(afterslip_times)
  time = data['time'][:]

  slip_scale = 1.0 # meter
  relax_scale = 1.0 # year
  time_scale = np.std(time)
  time_shift = np.mean(time) # years
  disp_scale = 1.0 # meter
  # shift is different for each time series
  disp_shift = np.mean(data['mean'],0)

  # scale greens functions
  # F is originally in meters disp per meter slip
  F /= disp_scale/slip_scale
  # G is originally in meters/year disp per meter slip*fluidity
  G /= (disp_scale/time_scale)/(slip_scale/relax_scale)

  time -= time_shift
  time /= time_scale

  coseismic_times -= time_shift
  coseismic_times /= time_scale
  afterslip_times -= time_shift
  afterslip_times /= time_scale

  param['initial_slip_variance'] /= slip_scale**2
  param['fluidity_variance'] *= relax_scale**2
  param['secular_velocity_variance'] /= (disp_scale/time_scale)**2
  param['baseline_displacement_variance'] /= disp_scale**2

  # define slip functions and slip jacobian here
  slip_func,slip_jac = steps_and_ramps(coseismic_times,
                                       afterslip_times)

  Nst = len(coseismic_times) + len(afterslip_start_times)
  Ns,Ds,Nv,Nx,Dx = np.shape(G)
  Nt = len(time)

  # check for consistency between input
  assert data['mean'].shape == (Nt,Nx,Dx)
  assert data['variance'].shape == (Nt,Nx,Dx)
  assert F.shape == (Ns,Ds,Nx,Dx)
  assert G.shape == (Ns,Ds,Nv,Nx,Dx)
  p = state_parser(Nst,Ns,Ds,Nv,Nx,Dx)

  if param['solver'] == 'bvls':
    solver = modest.bvls
    upper_bound = 1e6*np.ones(p['total'])
    lower_bound = -1e6*np.ones(p['total'])

    # all inferred fluidities will be positive
    lower_bound[p['fluidity']] = 0

    # all inferred left lateral slip will be positive
    left_lateral_indices = np.array(p['slip'][:,:,0],copy=True)
    thrust_indices = np.array(p['slip'][:,:,1],copy=True)
    upper_bound[left_lateral_indices] = 0.0
    solver_args = (lower_bound,upper_bound)
    solver_kwargs = {}

  if param['solver'] == 'lstsq':
    solver = modest.lstsq
    solver_args = ()
    solver_kwargs = {}

  elif param['solver'] == 'lsmr':
    solver = modest.lsmr
    solver_args = ()
    solver_kwargs = {}

  elif param['solver'] == 'lgmres':
    solver = modest.lgmres
    solver_args = ()
    solver_kwargs = {'tol':1e-8,'maxiter':1000}

  elif param['solver'] == 'dgs':
    solver = modest.dgs
    solver_args = ()
    solver_kwargs = {}

  #fprior = prior.create_formatted_prior(param,p,slip_model='parameterized')
  Xprior,Cprior = prior.create_prior(param,p,slip_model='parameterized')
  reg_matrix = reg.create_regularization(param,p,slip_model='parameterized')
  reg_rows = len(reg_matrix)

  setup_output_file(outfile,p,
                    data['name'][...],
                    data['position'][...],
                    data['time'][...])

  Xprior,Cprior = modest.nonlin_lstsq(
                      regularization,
                      np.zeros(reg_rows),
                      Xprior,
                      data_covariance=np.eye(reg_rows),
                      prior_covariance=Cprior,
                      system_args=(reg_matrix,),
                      jacobian=regularization_jacobian,
                      jacobian_args=(reg_matrix,),
                      maxitr=param['maxitr'],
                      solver=solver,
                      solver_args=solver_args,
                      solver_kwargs=solver_kwargs,
                      LM_damping=True,
                      output=['solution','solution_covariance'])

  time_indices = range(Nt)
  block_time_indices = modest.misc.divide_list(time_indices,param['time_blocks'])
  for i in block_time_indices:
    outfile['data/mean'][i,...] = data['mean'][i,...]
    outfile['data/mask'][i,...] = data['mask'][i,...]
    outfile['data/covariance'][i,...] = data['variance'][i,...]
    di = data['mean'][i,...]
    di -= disp_shift
    di /= disp_scale

    di_mask = np.array(data['mask'][i,:],dtype=bool)
    # expand to three dimensions
    di_mask = np.repeat(di_mask[...,None],3,-1)
    di = di[~di_mask]
    Cdi = data['variance'][i,...]
    Cdi /= disp_scale**2
    Cdi = Cdi[~di_mask]

    Xprior,Cprior = modest.nonlin_lstsq(
                      observation,
                      di,
                      Xprior,
                      data_covariance=Cdi,
                      prior_covariance=Cprior,
                      system_args=(time[i],F,G,p,slip_func,di_mask),
                      jacobian=observation_jacobian,
                      jacobian_args=(time[i],F,G,p,slip_func,slip_jac,di_mask),
                      solver=solver,
                      solver_args=solver_args,
                      solver_kwargs=solver_kwargs,
                      maxitr=param['maxitr'],
                      LM_damping=True,
                      LM_param=1.0,
                      rtol=1e-2,
                      atol=1e-2,
                      output=['solution','solution_covariance'])

  post_mean_scaled,post_cov_scaled = Xprior,Cprior

  post_mean = np.copy(post_mean_scaled)
  post_mean[p['baseline_displacement']] *= disp_scale
  post_mean[p['baseline_displacement']] += disp_shift
  post_mean[p['secular_velocity']] *= (disp_scale/time_scale)
  post_mean[p['slip']] *= slip_scale
  post_mean[p['fluidity']] /= relax_scale

  for i in range(Nt):
    outfile['state/all'][i,:] = post_mean
    outfile['state/baseline_displacement'][i,...] = post_mean[p['baseline_displacement']]
    outfile['state/secular_velocity'][i,...] = post_mean[p['secular_velocity']]
    outfile['state/slip'][i,...] = slip_func(post_mean[p['slip']],time[i])
    outfile['state/slip_derivative'][i,...] = slip_func(post_mean[p['slip']],time[i],diff=1)
    outfile['state/fluidity'][i,...] = post_mean[p['fluidity']]

  # compute predicted data
  logger.info('computing predicted data')
  error = 0.0
  count = 0
  for i in range(Nt):
    predicted = observation_t(post_mean_scaled,
                              time[i],
                              F,G,p,slip_func)
    # change back to meters
    predicted *= disp_scale
    predicted += disp_shift
    residual = outfile['data/mean'][i,...] - predicted
    covariance = outfile['data/covariance'][i,...]
    data_mask = np.array(outfile['data/mask'][i,...],dtype=bool)
    error += L2(residual,covariance,data_mask)
    count += np.sum(~data_mask)

    outfile['predicted/mean'][i,...] = predicted

    mask = np.zeros(p['total'])
    mask[p['secular_velocity']] = 1.0
    mask[p['baseline_displacement']] = 1.0
    mask_post_mean = post_mean_scaled*mask
    tectonic = observation_t(mask_post_mean,
                             time[i],
                             F,G,p,
                             slip_func)
    tectonic *= disp_scale
    tectonic += disp_shift
    outfile['tectonic/mean'][i,...] = tectonic

    mask = np.zeros(p['total'])
    mask[p['slip']] = 1.0
    mask_post_mean = post_mean_scaled*mask
    elastic = observation_t(mask_post_mean,
                            time[i],
                            F,G,p,
                            slip_func)

    elastic *= disp_scale
    outfile['elastic/mean'][i,...] = elastic

    visc = (outfile['predicted/mean'][i,...] -
            outfile['tectonic/mean'][i,...] -
            outfile['elastic/mean'][i,...])
    outfile['viscous/mean'][i,...] = visc

  logger.info('total RMSE: %s' % np.sqrt(error/count))

  return

redpajama_set_name: RedPajamaGithub


text:
God Help the Child, by Toni Morrison
reviewed by Amy Frykholm April 13, 2015
God Help the Child
Buy from IndieBoundBuy from Amazon
In her 11th novel Nobel Prize–winner Toni Morrison has returned to the foundation of most of her fiction: childhood and its traumatic effects. In God Help the Child, she takes her central character, a woman named Bride, back to childhood in order to move her forward.
Bride's mother, Sweetness, is at the root of her pain. Sweetness spends most of the novel trying to explain why she was never able to love her daughter. "It's not my fault," she says, that her daughter was born with black skin. "I'm light-skinned, with good hair, what we call high yellow," she protests, using a vocabulary for skin color and value that seems to come from another era. But her daughter is "midnight black, Sudanese black, . . . a throwback, but a throwback to what?" Sweetness is not able to overcome her horror at her daughter's skin color, and she spends all her energy trying to justify the unjustifiable. "It's not my fault. It's not my fault. It's not."
Amy Frykholm
The Century associate editor is the author of Rapture Culture, Julian of Norwich, and See Me Naked.
Apr 29, 2015 issue
In the absence of her mother's love and acceptance, Bride has to find a different vocabulary for color. She is a beautiful and successful woman in the cosmetics industry and is about to launch a new cosmetic line called YOU, GIRL for "girls and women of all complexions from ebony to lemonade to milk." Underneath her success, however, is a lie that she told to win her mother's affection. When she was a small child, she helped convict an innocent woman in a daycare center of sexual abuse. This lie has haunted her, and on the day the woman is released from prison, Bride goes to visit her with money and gifts.
Throughout the novel, children who have been sexually abused appear and disappear as mysterious visions. Bride sees her childhood landlord raping a small boy in an alleyway. She tells her mother, but Sweetness refuses to respond. Another child whose mother exploited her for money appears along Bride's path. Abuse shapes Bride's closest friend. Child sexual abuse touches every person of every color in this novel and is perhaps its most important marker for the utter failure of adults to feel the pain of children. Adults are perpetrators of pain or selfish hoarders of love. Again and again "the child" of the novel's title appears already wounded by their failures.
Meanwhile, Bride's lover, a man named Booker, abandons her with the mysterious words, "You not the woman I want," and with his abandonment something very strange happens to Bride's body. First her pubic hair disappears. Then her earlobes lose the piercings her mother gave her when she testified against the daycare worker. It is as if her body is returning to the one she had before the lie. Is this return death, disease, or redemption?
Along with its themes of empathy and the return to childhood, the book is about belonging. Few of the characters know how to feel it or how to claim it. The word's two meanings—ownership and connection—are frequently confused. With Booker, Bride feels "colonized somehow." She finds this sense of being owned pleasant but unsettling.
Perhaps believing that her readers will be as confounded on the subject of belonging as her characters, so locked up are we in our own perspectives, Morrison stages an incredibly corny moment in the middle of the novel when two characters break out singing "This Land Is Your Land." To whom do we belong and why? the novel wants to know. Can we belong without being enslaved?
In God Help the Child the markers of classic Toni Morrison are here: shifting narrators and perspectives that make it difficult to know who is talking to whom and how much they can be trusted, a far richer and more interesting vocabulary to talk about race and racial identity than we are used to, and something strange going on with the physical body of the main character. All of this adds up to a rich, if odd, meditation on national identity, race, and family identity—all rooted in the problem of childhood. God Help the Child made me think of a saying of Jesus: "Unless you turn and become like little children, you will not enter the kingdom of heaven." This novel is something like midrashic commentary on that saying.
John McEntyre replied on March 29, 2016 Permalink
A really fine review by Amy Frykholm; an astute observation that the book is about belonging as ownership and connection--there's much to consider in this observation alone.
What I might add to Frykhom's review is: this is a good novel for church readers insofar as it articulates the suffering to which the gospel speaks in the witness of the church, the unimaginable suffering of the human condition. Morrison's novel would be helpful to pastors to imagine the otherwise unimaginable suffering of people in the pews, "entangled feelings surging beneath cool exteriors," as John W. Stewart puts it (Envisioning the Congregation Practicing the Gospel, Eerdmans 2015). Morrison writes about the pain, terror, and tragedy of child abuse, several aspects of the brutal violence of our society, thinking about racism in a startling new way, grief and loss, miracle and mystery, confession and restoration, frankness about physical bodies. She writes with plot and poetry also about music, faith, and wisdom. A truth teller, Morrison pushes the limits of our comfort zone. I wouldn't expect less from her. Morrison convincingly represents a life that is real and, even with terrible suffering, good.
The book ends with the controlling theme which is, after all, a prayer: "God help the child." An ever-timely prayer. When we dare to think about the world we are leaving to our children and their children, we can hardly do better than to begin and continue with this prayer.
Sign up for our books editor's weekly email. SIGN UP
The holiness of Toni Morrison's fictional worlds
Faith, in Morrison's novels, is about improvising a way toward freedom.
Toni Morrison on the invention of the stranger
Morrison examines how Western authors define their culture by estranging others.
by Audrey Thompson September 27, 2017
Reading Toni Morrison in Advent
A seasonal practice: cultivate the patient gaze to describe life as we find it.
Toni Morrison and the holiness of the living, breathing flesh
by Emilie M. Townes
Spring books: Reviews
Our spring books issue's reviews include Amy Frykholm on Toni Morrison, Jason Byassee on Richard Hays, Katherine Willis Pershey on Lauren Winner, and more.

redpajama_set_name: RedPajamaCommonCrawl


The voltage converter/transformers indicated above, are step up converters. This feature enables 220-240 Volt Items (foreign single phase electricity) like: hair dryers, curling Irons, and shavers,that consume 2000 watts or less, to be used in countries with 110-120 Volts power supply.
Other equipment that could also be included to this category are desktop and laptop computers,camera and cellphone chargers, electric tooth brush, other personal care items such as Hair clippers,curling and flat irons,DVD players, TV's, DVDs, Home theater and Hifi systems, as well as some home appliances like blenders, mixers. Knowing the wattage consumption of your equipment (usually displayed in watts or amps) it's crucial for determining if a converter will be suited for your needs.Please make sure to check the power consumption or your item before start looking for a voltage converter. Our Voltage Converter Help page it's also a amazing tool that will help you to find the answers on voltage converter/transformers.


A perfect option for busy people, day training allows me to work one on one with your dog to establish well-rounded foundation skills and manners in the comfort of your own home. Board and Train programs are also available.
After the initial consultation, I will come to your house several times per week typically for an hour to build foundation behaviors, work on potty training, loose-leash walking, and to provide physical and mental enrichment for your dog. At the end of each week, I will meet with you to show you what we've been working on. You'll learn how to maintain the behaviors they were taught to keep up the great work!
Each session includes a refill of your dog's water bowl, feeding (if required), potty breaks, a email summary of what we worked on that day, and recommendations for how to continue working towards your goals with your dog in between my visits.


We do our own installations and install only on cement sub floors or Durock to ensure your protected warranty coverage. We do not install on plywood which ultimately can give way and cause cracks in your grout or tiles.
Sav-On Floors offers a broad array of products in all major product types: floor tile, wall tile, mosaics and decorative tiles. From glazed floor to porcelain tile, we have a product to suit virtually any use throughout the home.
Since color and design are so important in creating the right look for your home, we have taken special care to select products that offer the right blend of colors, sizes, textures and finishes to express your individuality.


I had this company come help me with 2 properties when I used to live in Los Angeles. I find that a lot of times, yelp reviews aren't really that accurate. Sometimes a company has 5 stars, and I use a 5 star company only to find out that the people who work there are dicks who don't care about you and just want your money. Merry Plumbers is good, and they are genuinely good people. I used this company a year ago. I spoke to, I think, the president of the company and John. They were both really great. I feel bad, actually, because John came to my house, and I was watching videos, and I didn't hear him ringing the doorbell. I called the company and said that John never showed up. But then later, I realized that he left a paper notice on the porch light saying that he came by and rang the doorbell, but no one was home. It was completely my mistake, since my videos were too loud. I called back merry plumbers and told them what happened. John came by and was very friendly, and was not bothered by the fact that he had to come by a second time. A lot of times, people are nice just because they are being "professional" and want your money, but I felt like the employees at merry plumbers are genuinely good people, and they are nice, just because that's who they are, not because they want your money.
Absolutely great!! These guys always do great work and I recommend them to anyone. We have had issues with both the kitchen line and the line to the main (this is an old house). They have provided fast, complete service and give honest answers.
I have used Merry Plumbers for the past 15 years, and each job they have done has been outstanding. This is the first time I've ever written a review for anyone, but today William at Merry Plumbers replaced a kitchen sink in my guest house, and he did a remarkable job. He replaced a bar sink with a larger sink and so there was extra cutting through a laminate counter top to enlarge the opening. The counter top looks good, the new sink is secure, and the new copper plumbing under the sink is perfect. No leaks and beautiful too! William made the extra effort to locate a Kohler sink for the space, and it's obvious he prides himself on doing a superb job. One other important thing: William was very reliable and showed up when he said he would Thank you, William and Merry Plumbers for the quality work. I highly recommend Merry Plumbers for any plumbing jobs.
Merry Plumbers was used for many years by a relative of mine and that is why I called them regarding preventive maintenance for drainage in a rental property. I found the owner of the company stands behind his work/workers. After reading some of these reviews, all I can say is those people should have contacted the owner if they had a problem. He is fantastic to do business with and stands behind his plumbers' work. The owner will win your business if you give them a call.
I have to say that if you are looking for a plumber, look no further. Merry Plumbers is fantastic!!! My mother dropped her ring in the toilet. We thought there was no way to retrieve this. We called a few plumbers and they told us that the only solution was to just remove the toilet and if the ring isn't there, then it's gone. When we called Merry Plumbers, understanding how important the ring was to us, they came within 5 minutes and told us that there would be an option without guarantee, which is to dig to the main outside pipe of the house. They spent a good 3.5 hours digging and in the hot weather, at the end of the 3rd hour, both John and Ernie's face was dripping with sweat and hands were shaking but was still fully positive with big smiles on their face. They then used a very long pipe scope with a camera to go up to the house's water drain system. No luck. They didn't give up and went the other direction and routed the camera scope down towards the streets all the way to the city sewer city. Again no luck. They equipment was fascinating but my heart was 80% sure that the ring was lost since we didn't see the ring with the camera. They told me that their next routine was to bring 5 gallons of water at a time and flush the water down. We flushed the water down at least 3 times with 5 gallons each time and again no luck. John then asked Ernie to gather a bunch of toilet paper and flush it again hoping it would catch the ring. I could not believe my eyes when John stuck his hand in all the guck and fished out my mother's ring! It was past 7p.m. and they were extremely responsible by putting the pipe together and told us they would be back tomorrow early morning because it was so dark to put the dirt back to the 6 ft tall hole they dug. Their price was very reasonable for the amount of work that was involved and most of all, their attitude and service was beyond superb. Thank you Merry Plumbers for your excellent service. Much gratitude to John and Ernie's persistence and expertise in finding my mother's ring!
I've used Merry for both plumbing, as well as for Air Conditioning. Larry is very knowledgeable, but when he was unfamiliar with my less-common system, he still provided tons of great information and got us pointed in the right direction, at no charge.
For more than 10 years I have used Merry Plumbers to resolve various issues ranging from fixing leaky faucets to installing new toilets to routine maintenance of the sewer line at my house in Pasadena and have received consistently excellent service. The front office is efficient and friendly and the plumbers are skilled, pleasant, and professional. I recently remodeled the bathroom in my house using Merry Plumbers as the plumbing contractor and as project management. The project was well planned and managed such that it finished within budget and schedule and the results are fantastic. The remodeling process itself was a minimal hassle for me since the house was left in good order at the end of each day and I was kept abreast of progress and issues. While all the plumbers I've met from Merry Plumbers have been capable and agreeable, I am especially impressed by James. He managed my bath remodel and in addition to being an expert plumber he has excellent project management skills. He is able to select qualified and reliable subcontractors and negotiate fair prices and then ensure that the work is performed adequately and per schedule. I've also had the opportunity to interact with the owner of the Merry Plumbers and he cares very much about the quality of the work his plumbers perform and his customers' satisfaction. This is a quality company and I highly recommend their services.
I recently had some work done on my kitchen sink and was very satisfied. John was great, he showed up on time (actually early) and completed the work in about 15 minutes. Also, Merry Plumbing was about 4x less expensive than the quote I received from Roto Rooter the day before!


text:
<?xml version="1.0" encoding="UTF-8"?>
<StringCodeDatabase Version="2" ItemsCount="19"><StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_cbd_sls_design_check}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>245</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_sls_checks_constr}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>269</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_uls_checks_constr}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>289</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_short_uc_rb}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1228</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_short_uc_rt}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1227</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_short_uc_sb}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1226</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_short_uc_st}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1225</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_ccd_uls_design_check}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1236</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_cbd_uls_design_check}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1232</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_shear_con_spacing}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1235</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_check_sls_shear_buckling}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1573</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_unity_chk}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>255</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_ccd_fire_utilisation}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1238</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_shear_connector_lateral}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1352</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_ccd_fire_check}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>1237</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_sls_checks_final}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>268</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_uls_checks_final}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>288</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_name_check_shearbuckling}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>134</ResourceId>
	</StringCode>
	<StringCode SourceType="DLLRC:"><StringId>@{checkmixedbeam.2eids_name_uls_check_stress}</StringId>
		<SourceDll>CheckMixedBeam.2edll</SourceDll>
		<ResourceId>101</ResourceId>
	</StringCode>
</StringCodeDatabase>


Anyone who works in commercial real estate (CRE) knows the retail landscape is undergoing a digital revolution that is changing the way business is done.
Be it investors looking to expand their portfolios, or tenant representatives on the hunt for lucrative leasing opportunities, the new era of retail has professionals of all shapes and sizes rethinking strategies. From this, technology vendors and data providers have begun to transform their products too, including those who harness tenant information — a key component in unlocking holistic property insights for a competitive edge.
Now this intel goes beyond just tenant names to encompass rich, granular information like tenant classification, property manager contact information and company logistics. The depth of this information provides holistic, new insights for not just leasing brokers, but the entire CRE community.
Whether you're an investor, a developer, a contractor or another service provider, access to this information can unlock doors to countless opportunities when navigating the world of retail, and beyond. Armed with a comprehensive understanding of a property's current occupants, you're empowered to perform better analysis and due-diligence—critical components to savvier deal-making down the line.
Regardless of your role, access to the tenant structure of any commercial property via the right CRE platform enables more proficient prospecting. Investors, developers, brokers and service providers can all leverage tenant-related intel to direct their focus faster. CRE platforms, like Reonomy, allow you to effectively search the entire landscape of commercial properties and serve up associated tenant intel in just a few clicks. So, instead of manually connecting the dots through disparate sources and property records, the prospecting process is streamlined in one fell swoop.
For example, maybe you're a local investor in Denver, Colorado looking to franchise a fast food restaurant, but aren't entirely sure of which branches to explore or how the chain might perform in that area. With a platform like Reonomy, you can search either by a specific brand name or via the industry classification system using NAICS or SIC codes. So, if you were to utilize the NAICS code "Limited-Service Restaurants," the platform would populate with similar properties, allowing you to evaluate potential competition and gauge likely return.
With access to modern data solutions, you can take back your time spent on manual sourcing strategies and easily uncover valuable information that helps narrow your focus and make smarter decisions. This expedites the preliminary discovery process tremendously to serve up the assets that matter to you, rather than wasting time and resources on noise.
Although precursory prospecting is greatly improved with tenant data, the depth of this information is what's truly invaluable, and is what will help you uncover asset nuances that might otherwise go overlooked. For commercial real estate professionals, these details can greatly influence a decision to take action and reach out to owners or property managers. Access to intricate tenant information, like the date founded, the number of employees and type of location, grants you a holistic understanding of a property, inside and out.
Especially when combined with other asset-specific information, like the size of a building, the date of its last sale and the current owner on file, this knowledge allows you to separate the wheat from the chaff and better identify lucrative opportunities worth pursuing. Maybe you work for a mutual fund and are on the hunt for high-yield--you can leverage current occupant information to gauge the stability and health of assets. This, combined with current debt records and other rich property intel helps you pinpoint profitable investments and eliminate those that might not promise such high return.
Or, maybe you own a commercial cleaning company that specializes in servicing office spaces over 50,000 square feet. Knowing exactly which tenants are occupying the space as well as how large the actual property is can help you evaluate whether or not there is a deal is in your scope. Overall, it's these elaborate, nuanced insights that allow you to formulate better-informed decisions.
Finally, access to tenant structure and classifications provides a better platform in the final stages of outreach and negotiation. The tenant details and property insights you derive during discovery can impact how you approach decision-makers. Compared to the less-sophisticated competition who might not have this level of insight, let alone the correct contact information to get in touch with the right people, you'll have a strategic leg-up in deal-making.
Be it a new investment, vacant space for a client, or even a new business partnership, leveraging insightful tenant details and property intel unlocks the edge you need to secure a new opportunity before the competition does.
As retail continues its digital transformation, one thing is certain--tenant data can help elevate your business strategy along the way, no matter your commercial real estate background or role. A platform like Reonomy enables you to understand who is occupying the property and find their respective contact information, for any building. This provides a valuable means for direct contact with the decision makers at any property. In all, access to tenant data is a necessity for today's retail market. Those who leverage it have everything they need to unlock new, advantageous opportunities.


text:
ExecuJet hails arrival of first African PC-24
posted on 25th October 2018 by Omar
ExecuJet recently celebrated the arrival of Africa's first Pilatus PC-24 Super Versatile Jet at its Cape Town FBO in South Africa.
The PC-24 touched down at Cape Town International Airport in South Africa on 15 October, where it was welcomed with a traditional water salute.
The aircraft will be based at ExecuJet's FBO facility at Cape Town International Airport, where ExecuJet will be responsible for the day-to-day management and operations on behalf of the aircraft owner.
Gavin Kiggen, Vice President Africa, ExecuJet, says: "All the staff at ExecuJet have been patiently anticipating the arrival of the PC-24 for months now and it was a significant day for everybody when the aircraft landed at its new home base.
Africa is the obvious choice for the PC-24 as it has the perfect environment, with its testing terrain and challenging runways.
"We are honoured to be the first business aviation operator to manage the aircraft in the region and we look forward to managing the aircraft over the coming years."
The PC-24 will be available for charter and offers clients the latest in in-flight entertainment and connectivity. With six passengers, departing from Cape Town, the aircraft can reach Angola, Zambia, Malawi, and Mozambique.
Flying from ExecuJet's FBO at Lanseria International Airport in Johannesburg, passengers can reach the Democratic Republic of Congo, Tanzania, Kenya and Mauritius.
Jet Aviation receives IS-BAH Stage II Certificates for The Netherlands
UTG PA sums up 2021 and announces plans for the future
Ridgewood Infrastructure announces acquisition of APP Jet Center


Sun Valley, ID AirBnB owners' and vacation guests' culinary offerings.
Please scroll down below food display pictures for available overnight casserole breakfast menus and pricing.
This Blog is for all of those here in the Sun Valley Area who wish to have Margot cater small BnB type food events. It also is for all those who own AirBnB vacation rentals as well as for their guests.
Even though Margot Van Horn has lived in the Sun Valley area for over 35 years, from 2005 to 2010 Margot was an owner/ inn-keeper at her own Victorian B&B in Paso Robles, Ca. That is when she discovered how much she loved to cook as well as being a concierge.
Listed below are some of the breakfast overnight casserole recipes her B&B guests loved. Margot thought that all of the vacation rental guests would also enjoy them. The overnight casseroles or other chosen menu option(s) will be put together by Margot in a discardable oven proof container. The dish will be placed in the Air BnB vacation rental's refrigerator the night before the guest's arrival or if they are already here, in the refrigerator any night that the guest wishes. The container will be accompanied with clearly written cooking directions (and the full recipe as well if so desired) so that it can easily be baked the next morning. Most of these dishes take less than one hour to bake and will enhance the vacation rental with a delicious aroma. Left over's are still delicious and can be easily reheated in micro.
Margot has been busy catering small B&B type culinary get-to-gathers in the Sun Valley area since 2011 so aside from what is mentioned here on this food blog, she has many other menus available for appetizers, dinners, desserts and cookies. Many menus can be altered for vegetarian and restricted dietary requirements—just ask.
For $50, Margot also will gladly shop and supply your BnB vacation rental with some staples before you arrive or even when you are here. The cost of the groceries is extra and a receipt of purchased items will be given to the client/guest. A few suggested staples might be: coffee, tea, milk, eggs, butter, fruit, bread, juice.
Finnish Pancakes—-Melt butter in pre-heated 425 oven; when melted pour re-blended mixture into pan. Bake at 425 for 25-30 minutes or till puffy and golden.
Overnight Scrambled Egg Bake with mushrooms and/or other veggies (Can be made with egg beaters) Bake in pre-heated 350 oven for 1 hour. Can be totally vegetarian or can add bits of ham, bacon,etc.
Asperagus or zucchini Prosciutto Strata-–Bake in pre-heated 350 oven for 40-50 minutes.
Huevos en Aguacate (eggs baked in avocado halves) When avocados are in season and ripe, this is a delicious easy- to- make dish—Bake in pre-heated 425 oven for 15-20 minutes.
For special occasioned breakfasts, a Panettone Bread Pudding with Ameratto Sauce, Gingerbread Pudding and a Very Berry Bread Pudding are always wonderful tasting dishes to enjoy.
Amazing and elagant breakfasts. Margot's recipes are a gift!
Thank you so very much John and Ingrid. Miss you guys!!!
Hi Nancy, Thanks so much for your comment. I just made myself the Tostada for lunch yesterday. So easy and good. I love that little pan. Do you have one like it? We can book blog some on the Read It category on my blog if you want. That would be fun–and maybe we could get some more people interested in that.
At my age, quality of must outweigh quantity! Your variety looks wonderful! Plenty of variety for the pallet! Anxious to try them out here in Palisade or in Sun Valley next Spring!
At my point in life, quality has become more important than quantity in food consumption. No doubt your fare would satisfy the quality portion of the equation, and I look forward to trying them here in Palisade or in Sun Valley next Spring!
Thanks so much for checking in. When you and Susan come visit next Spring, I will definitely do a bit of cooking for you both and hope that you'll enjoy that. However, if before then, tell me if you try something from my blog and how you like it.


text:
Soriano, David B - Aggravated Indecent Assault and 3 additional charges
On January 8, 2019 David B. Soriano m/59 of Doylestown Township was arrested and charged with Aggravated Indecent Assault and related offenses. Soriano is accused of sexually assaulting a female juvenile multiple times between June of 2016 and December of 2017 at various locations including his...
Aggravated Indecent Assault, Indecent Assault, Endangering Welfare of Children, Corruption Of Minors
Koller, Colleen F - Driving Under the Influence and 1 additional charge
On January 3, 2019 Colleen F. Koller f/43 was arrested and charged with DUI and careless driving after she was found asleep at the wheel of a 2018 Honda Odyssey while stopped at the intersection of Burpee Road and Butler Avenue in Doylestown Township. Koller failed a series of field coordination...
Driving Under the Influence, Careless Driving
Blatstein, Brian H - Possession of Marijuana and 2 additional charges
On January 2, 2019 Brian H. Blatstein m/45 of Hatboro was taken into custody for possession of Controlled Substance & possession of drug paraphernalia following a traffic stop on Easton Road in Doylestown Township. Blatstein was stopped for speeding and found to be in possession of marijuana...
Possession of Marijuana, Possession Of Drug Paraphernalia, Special Speed Limitations
Kolar, Joseph David - (18) 3921(A)Theft By Unlawful Taking (F3) and 1 additional charge
On September 19, 2018,Joseph Kolar M/48 was arrested and charged with Theft and related offenses related to property stolen during the overnight hours from a landscape company located in Doylestown Township. Kolar and a co-defendant stole in excess of $40,000 worth of landscape equipment form the...
(18) 3921(A)Theft By Unlawful Taking (F3), (18) 3925 (A) Receiving Stolen Property (F3)
Dzielinski, Richard Edward - (18) 3921(A)Theft By Unlawful Taking (F3) and 1 additional charge
On August 27, 2018,Richard E. Dziellinski was arrested and charged with Theft and related offenses related to property stolen during the overnight hours from a landscape company located in Doylestown Township. Dziellinskir and a co-defendant stole in excess of $40,000 worth of landscape equipment...
Brown, Jospeh - Retail Theft
On September 16, 2018 Joseph Brown m/62 was arrested and charged with Retail Theft after he was observed removing price tags and concealing merchandise at the Kohl's in Doylestown Township. Brown was arraigned and committed to the Bucks County Correctional Facility after failing to post bail.
Kelly, Keisha L - Possession of cotrolled substance and 3 additional charges
On September 13, 2018 Keisha L. Kelly f/37 was arrested following a disturbance in the 1200 block of Almshouse Road, Doylestown Township. She was taken into custody for disorderly conduct and harassment and found to be in possession of a controlled substance and drug paraphernalia.
Possession of cotrolled substance, Possession Of Drug Paraphernalia, Disorderly Conduct, Harassment
Marcy, Ryan Matthew - Possession Of Controlled Substance and 1 additional charge
On September 2, 2018 Ryan M. Marcy m/34 was arrested for Possession of Controlled Substance and Drug Paraphernalia following a traffic stop on Almshouse Road in Doylestown Township. Marcy was the passenger in a car being operated by John P. Iannuzzi who was charged with traffic related offenses.
Possession Of Controlled Substance, Possession Of Drug Paraphernalia
Incident Counts 9/13/2018
ASSAULT 1 ALARM CALL 0 ANIMAL COMPLAINT 3 ASSIST OTHER AGENCY 0 DOMESTIC DISPUTE 0 DEATH INVIESTIGATION 0 DISORDERLY CONDUCT 0 MEDICAL EMERGENCY 6 MISCELLANEOUS COMPLAINT 1 NARCOTICS COMPLAINT 1 POLICE INFORMATION 1 SOLICITOR COMPLAINT 0 SUSPICIOUS PERSON, OCCURRENCE, VEHICLE 0 TRAFFIC ACCIDENT 2...
ALARM CALL 3 ASSIST OTHER AGENCY 1 DOMESTIC DISPUTE 1 DEATH INVIESTIGATION 1 DISORDERLY CONDUCT 0 MEDICAL EMERGENCY 5 MISCELLANEOUS COMPLAINT 1 MISCELLANEOUS COMPLAINT 1 POLICE INFORMATION 0 SOLICITOR COMPLAINT 1 SUSPICIOUS PERSON, OCCURRENCE, VEHICLE 3 TRAFFIC ACCIDENT 0 TRAFFIC CITATION 0 TRAFFIC...
ALARM CALL 3 ASSIST OTHER AGENCY 2 DISORDERLY CONDUCT 1 MEDICAL EMERGENCY 3 MISCELLANEOUS COMPLAINT 1 MISCELLANEOUS COMPLAINT 1 POLICE INFORMATION 1 SUSPICIOUS PERSON, OCCURRENCE, VEHICLE 2 TRAFFIC ACCIDENT 2 TRAFFIC CITATION 6 TRAFFIC COMPLAINT 1 TRAFFIC WARNING 4 TOTAL 27
Update- Pebble Hill Road reopened Fire investigation in the area of the 1200 block of Pebble Hill Road. Pebble Hill Road is closed between 1099 Pebble Hill Road and Wilkshire Road. Please avoid the area as there are many emergency vehicles on scene
Doylestown Township Police are currently on scene of a three vehicle accident at the intersection of Limekiln Road and N. Shady Retreat Road. Please use caution in the area.
PATRICK THOMPSON PLEADS GUILTY TO THEFT AND RELATED CHARGES. ORDERED TO PAY $128,115.12
On August 25, 2016 the Doylestown Township Police Department arrested Patrick Thompson 42 y/o College Avenue Newtown Square, PA. After a 9 month investigation Thompson was charged with theft and related charges for absconding funds from his employer, S4Worldwide, a technology company. On May 30,...
Brad Wexler pleads Nolo Contendere to Furnishing Alcohol to Minors at Underage Drinking Party
On August 28, 2016 Doylestown Township Police responded to a residence on Windsor Way Doylestown Township for a report of large underage drinking party. Upon arrival officers found a male juvenile passed out on a lounge chair in the back yard with no one around. An ambulance was dispatched to treat...
Ryan McClintic pleads guilty for string of Theft From Vehicle cases
Between August 11 and September 9, 2016 approximately 15 Doylestown Township residents were victims of Theft, Theft from Motor Vehicles, and related crimes. Through a thorough investigation from Doylestown Township Police, Ryan McClintic age 36 Furlong, PA, was developed as a suspect. On October 4...
NEW RED LIGHT LAW
2017 Bucks County Hazardous Waste Collection
Bucks County has released its 2017 hazardous waste collection dates and site locations throughout the county. The collection date for Central Bucks area will occur on July 22, 2017 from 9:00 AM to 3:00 PM and will be held at Central Bucks South High School, 1100 Folly Road, Warrington Township...