text:
package transport

import (
	"bytes"
	"fmt"
	"runtime"
	"sync"
	"sync/atomic"

	"golang.org/x/net/http2"
	"golang.org/x/net/http2/hpack"
)

var updateHeaderTblSize = func(e *hpack.Encoder, v uint32) {
	e.SetMaxDynamicTableSizeLimit(v)
}

type itemNode struct {
	it   interface{}
	next *itemNode
}

type itemList struct {
	head *itemNode
	tail *itemNode
}

func (il *itemList) enqueue(i interface{}) {
	n := &itemNode{it: i}
	if il.tail == nil {
		il.head, il.tail = n, n
		return
	}
	il.tail.next = n
	il.tail = n
}

// peek returns the first item in the list without removing it from the
// list.
func (il *itemList) peek() interface{} {
	return il.head.it
}

func (il *itemList) dequeue() interface{} {
	if il.head == nil {
		return nil
	}
	i := il.head.it
	il.head = il.head.next
	if il.head == nil {
		il.tail = nil
	}
	return i
}

func (il *itemList) dequeueAll() *itemNode {
	h := il.head
	il.head, il.tail = nil, nil
	return h
}

func (il *itemList) isEmpty() bool {
	return il.head == nil
}

// The following defines various control items which could flow through
// the control buffer of transport. They represent different aspects of
// control tasks, e.g., flow control, settings, streaming resetting, etc.

// maxQueuedTransportResponseFrames is the most queued "transport response"
// frames we will buffer before preventing new reads from occurring on the
// transport.  These are control frames sent in response to client requests,
// such as RST_STREAM due to bad headers or settings acks.
const maxQueuedTransportResponseFrames = 50

type cbItem interface {
	isTransportResponseFrame() bool
}

// registerStream is used to register an incoming stream with loopy writer.
type registerStream struct {
	streamID uint32
	wq       *writeQuota
}

func (*registerStream) isTransportResponseFrame() bool { return false }

// headerFrame is also used to register stream on the client-side.
type headerFrame struct {
	streamID   uint32
	hf         []hpack.HeaderField
	endStream  bool                       // Valid on server side.
	initStream func(uint32) (bool, error) // Used only on the client side.
	onWrite    func()
	wq         *writeQuota    // write quota for the stream created.
	cleanup    *cleanupStream // Valid on the server side.
	onOrphaned func(error)    // Valid on client-side
}

func (h *headerFrame) isTransportResponseFrame() bool {
	return h.cleanup != nil && h.cleanup.rst // Results in a RST_STREAM
}

type cleanupStream struct {
	streamID uint32
	rst      bool
	rstCode  http2.ErrCode
	onWrite  func()
}

func (c *cleanupStream) isTransportResponseFrame() bool { return c.rst } // Results in a RST_STREAM

type dataFrame struct {
	streamID  uint32
	endStream bool
	h         []byte
	d         []byte
	// onEachWrite is called every time
	// a part of d is written out.
	onEachWrite func()
}

func (*dataFrame) isTransportResponseFrame() bool { return false }

type incomingWindowUpdate struct {
	streamID  uint32
	increment uint32
}

func (*incomingWindowUpdate) isTransportResponseFrame() bool { return false }

type outgoingWindowUpdate struct {
	streamID  uint32
	increment uint32
}

func (*outgoingWindowUpdate) isTransportResponseFrame() bool {
	return false // window updates are throttled by thresholds
}

type incomingSettings struct {
	ss []http2.Setting
}

func (*incomingSettings) isTransportResponseFrame() bool { return true } // Results in a settings ACK

type outgoingSettings struct {
	ss []http2.Setting
}

func (*outgoingSettings) isTransportResponseFrame() bool { return false }

type incomingGoAway struct {
}

func (*incomingGoAway) isTransportResponseFrame() bool { return false }

type goAway struct {
	code      http2.ErrCode
	debugData []byte
	headsUp   bool
	closeConn bool
}

func (*goAway) isTransportResponseFrame() bool { return false }

type ping struct {
	ack  bool
	data [8]byte
}

func (*ping) isTransportResponseFrame() bool { return true }

type outFlowControlSizeRequest struct {
	resp chan uint32
}

func (*outFlowControlSizeRequest) isTransportResponseFrame() bool { return false }

type outStreamState int

const (
	active outStreamState = iota
	empty
	waitingOnStreamQuota
)

type outStream struct {
	id               uint32
	state            outStreamState
	itl              *itemList
	bytesOutStanding int
	wq               *writeQuota

	next *outStream
	prev *outStream
}

func (s *outStream) deleteSelf() {
	if s.prev != nil {
		s.prev.next = s.next
	}
	if s.next != nil {
		s.next.prev = s.prev
	}
	s.next, s.prev = nil, nil
}

type outStreamList struct {
	// Following are sentinel objects that mark the
	// beginning and end of the list. They do not
	// contain any item lists. All valid objects are
	// inserted in between them.
	// This is needed so that an outStream object can
	// deleteSelf() in O(1) time without knowing which
	// list it belongs to.
	head *outStream
	tail *outStream
}

func newOutStreamList() *outStreamList {
	head, tail := new(outStream), new(outStream)
	head.next = tail
	tail.prev = head
	return &outStreamList{
		head: head,
		tail: tail,
	}
}

func (l *outStreamList) enqueue(s *outStream) {
	e := l.tail.prev
	e.next = s
	s.prev = e
	s.next = l.tail
	l.tail.prev = s
}

// remove from the beginning of the list.
func (l *outStreamList) dequeue() *outStream {
	b := l.head.next
	if b == l.tail {
		return nil
	}
	b.deleteSelf()
	return b
}

// controlBuffer is a way to pass information to loopy.
// Information is passed as specific struct types called control frames.
// A control frame not only represents data, messages or headers to be sent out
// but can also be used to instruct loopy to update its internal state.
// It shouldn't be confused with an HTTP2 frame, although some of the control frames
// like dataFrame and headerFrame do go out on wire as HTTP2 frames.
type controlBuffer struct {
	ch              chan struct{}
	done            <-chan struct{}
	mu              sync.Mutex
	consumerWaiting bool
	list            *itemList
	err             error

	// transportResponseFrames counts the number of queued items that represent
	// the response of an action initiated by the peer.  trfChan is created
	// when transportResponseFrames >= maxQueuedTransportResponseFrames and is
	// closed and nilled when transportResponseFrames drops below the
	// threshold.  Both fields are protected by mu.
	transportResponseFrames int
	trfChan                 atomic.Value // *chan struct{}
}

func newControlBuffer(done <-chan struct{}) *controlBuffer {
	return &controlBuffer{
		ch:   make(chan struct{}, 1),
		list: &itemList{},
		done: done,
	}
}

// throttle blocks if there are too many incomingSettings/cleanupStreams in the
// controlbuf.
func (c *controlBuffer) throttle() {
	ch, _ := c.trfChan.Load().(*chan struct{})
	if ch != nil {
		select {
		case <-*ch:
		case <-c.done:
		}
	}
}

func (c *controlBuffer) put(it cbItem) error {
	_, err := c.executeAndPut(nil, it)
	return err
}

func (c *controlBuffer) executeAndPut(f func(it interface{}) bool, it cbItem) (bool, error) {
	var wakeUp bool
	c.mu.Lock()
	if c.err != nil {
		c.mu.Unlock()
		return false, c.err
	}
	if f != nil {
		if !f(it) { // f wasn't successful
			c.mu.Unlock()
			return false, nil
		}
	}
	if c.consumerWaiting {
		wakeUp = true
		c.consumerWaiting = false
	}
	c.list.enqueue(it)
	if it.isTransportResponseFrame() {
		c.transportResponseFrames++
		if c.transportResponseFrames == maxQueuedTransportResponseFrames {
			// We are adding the frame that puts us over the threshold; create
			// a throttling channel.
			ch := make(chan struct{})
			c.trfChan.Store(&ch)
		}
	}
	c.mu.Unlock()
	if wakeUp {
		select {
		case c.ch <- struct{}{}:
		default:
		}
	}
	return true, nil
}

// Note argument f should never be nil.
func (c *controlBuffer) execute(f func(it interface{}) bool, it interface{}) (bool, error) {
	c.mu.Lock()
	if c.err != nil {
		c.mu.Unlock()
		return false, c.err
	}
	if !f(it) { // f wasn't successful
		c.mu.Unlock()
		return false, nil
	}
	c.mu.Unlock()
	return true, nil
}

func (c *controlBuffer) get(block bool) (interface{}, error) {
	for {
		c.mu.Lock()
		if c.err != nil {
			c.mu.Unlock()
			return nil, c.err
		}
		if !c.list.isEmpty() {
			h := c.list.dequeue().(cbItem)
			if h.isTransportResponseFrame() {
				if c.transportResponseFrames == maxQueuedTransportResponseFrames {
					// We are removing the frame that put us over the
					// threshold; close and clear the throttling channel.
					ch := c.trfChan.Load().(*chan struct{})
					close(*ch)
					c.trfChan.Store((*chan struct{})(nil))
				}
				c.transportResponseFrames--
			}
			c.mu.Unlock()
			return h, nil
		}
		if !block {
			c.mu.Unlock()
			return nil, nil
		}
		c.consumerWaiting = true
		c.mu.Unlock()
		select {
		case <-c.ch:
		case <-c.done:
			c.finish()
			return nil, ErrConnClosing
		}
	}
}

func (c *controlBuffer) finish() {
	c.mu.Lock()
	if c.err != nil {
		c.mu.Unlock()
		return
	}
	c.err = ErrConnClosing
	// There may be headers for streams in the control buffer.
	// These streams need to be cleaned out since the transport
	// is still not aware of these yet.
	for head := c.list.dequeueAll(); head != nil; head = head.next {
		hdr, ok := head.it.(*headerFrame)
		if !ok {
			continue
		}
		if hdr.onOrphaned != nil { // It will be nil on the server-side.
			hdr.onOrphaned(ErrConnClosing)
		}
	}
	c.mu.Unlock()
}

type side int

const (
	clientSide side = iota
	serverSide
)

// Loopy receives frames from the control buffer.
// Each frame is handled individually; most of the work done by loopy goes
// into handling data frames. Loopy maintains a queue of active streams, and each
// stream maintains a queue of data frames; as loopy receives data frames
// it gets added to the queue of the relevant stream.
// Loopy goes over this list of active streams by processing one node every iteration,
// thereby closely resemebling to a round-robin scheduling over all streams. While
// processing a stream, loopy writes out data bytes from this stream capped by the min
// of http2MaxFrameLen, connection-level flow control and stream-level flow control.
type loopyWriter struct {
	side      side
	cbuf      *controlBuffer
	sendQuota uint32
	oiws      uint32 // outbound initial window size.
	// estdStreams is map of all established streams that are not cleaned-up yet.
	// On client-side, this is all streams whose headers were sent out.
	// On server-side, this is all streams whose headers were received.
	estdStreams map[uint32]*outStream // Established streams.
	// activeStreams is a linked-list of all streams that have data to send and some
	// stream-level flow control quota.
	// Each of these streams internally have a list of data items(and perhaps trailers
	// on the server-side) to be sent out.
	activeStreams *outStreamList
	framer        *framer
	hBuf          *bytes.Buffer  // The buffer for HPACK encoding.
	hEnc          *hpack.Encoder // HPACK encoder.
	bdpEst        *bdpEstimator
	draining      bool

	// Side-specific handlers
	ssGoAwayHandler func(*goAway) (bool, error)
}

func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator) *loopyWriter {
	var buf bytes.Buffer
	l := &loopyWriter{
		side:          s,
		cbuf:          cbuf,
		sendQuota:     defaultWindowSize,
		oiws:          defaultWindowSize,
		estdStreams:   make(map[uint32]*outStream),
		activeStreams: newOutStreamList(),
		framer:        fr,
		hBuf:          &buf,
		hEnc:          hpack.NewEncoder(&buf),
		bdpEst:        bdpEst,
	}
	return l
}

const minBatchSize = 1000

// run should be run in a separate goroutine.
// It reads control frames from controlBuf and processes them by:
// 1. Updating loopy's internal state, or/and
// 2. Writing out HTTP2 frames on the wire.
//
// Loopy keeps all active streams with data to send in a linked-list.
// All streams in the activeStreams linked-list must have both:
// 1. Data to send, and
// 2. Stream level flow control quota available.
//
// In each iteration of run loop, other than processing the incoming control
// frame, loopy calls processData, which processes one node from the activeStreams linked-list.
// This results in writing of HTTP2 frames into an underlying write buffer.
// When there's no more control frames to read from controlBuf, loopy flushes the write buffer.
// As an optimization, to increase the batch size for each flush, loopy yields the processor, once
// if the batch size is too low to give stream goroutines a chance to fill it up.
func (l *loopyWriter) run() (err error) {
	defer func() {
		if err == ErrConnClosing {
			// Don't log ErrConnClosing as error since it happens
			// 1. When the connection is closed by some other known issue.
			// 2. User closed the connection.
			// 3. A graceful close of connection.
			infof("transport: loopyWriter.run returning. %v", err)
			err = nil
		}
	}()
	for {
		it, err := l.cbuf.get(true)
		if err != nil {
			return err
		}
		if err = l.handle(it); err != nil {
			return err
		}
		if _, err = l.processData(); err != nil {
			return err
		}
		gosched := true
	hasdata:
		for {
			it, err := l.cbuf.get(false)
			if err != nil {
				return err
			}
			if it != nil {
				if err = l.handle(it); err != nil {
					return err
				}
				if _, err = l.processData(); err != nil {
					return err
				}
				continue hasdata
			}
			isEmpty, err := l.processData()
			if err != nil {
				return err
			}
			if !isEmpty {
				continue hasdata
			}
			if gosched {
				gosched = false
				if l.framer.writer.offset < minBatchSize {
					runtime.Gosched()
					continue hasdata
				}
			}
			l.framer.writer.Flush()
			break hasdata

		}
	}
}

func (l *loopyWriter) outgoingWindowUpdateHandler(w *outgoingWindowUpdate) error {
	return l.framer.fr.WriteWindowUpdate(w.streamID, w.increment)
}

func (l *loopyWriter) incomingWindowUpdateHandler(w *incomingWindowUpdate) error {
	// Otherwise update the quota.
	if w.streamID == 0 {
		l.sendQuota += w.increment
		return nil
	}
	// Find the stream and update it.
	if str, ok := l.estdStreams[w.streamID]; ok {
		str.bytesOutStanding -= int(w.increment)
		if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota > 0 && str.state == waitingOnStreamQuota {
			str.state = active
			l.activeStreams.enqueue(str)
			return nil
		}
	}
	return nil
}

func (l *loopyWriter) outgoingSettingsHandler(s *outgoingSettings) error {
	return l.framer.fr.WriteSettings(s.ss...)
}

func (l *loopyWriter) incomingSettingsHandler(s *incomingSettings) error {
	if err := l.applySettings(s.ss); err != nil {
		return err
	}
	return l.framer.fr.WriteSettingsAck()
}

func (l *loopyWriter) registerStreamHandler(h *registerStream) error {
	str := &outStream{
		id:    h.streamID,
		state: empty,
		itl:   &itemList{},
		wq:    h.wq,
	}
	l.estdStreams[h.streamID] = str
	return nil
}

func (l *loopyWriter) headerHandler(h *headerFrame) error {
	if l.side == serverSide {
		str, ok := l.estdStreams[h.streamID]
		if !ok {
			warningf("transport: loopy doesn't recognize the stream: %d", h.streamID)
			return nil
		}
		// Case 1.A: Server is responding back with headers.
		if !h.endStream {
			return l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite)
		}
		// else:  Case 1.B: Server wants to close stream.

		if str.state != empty { // either active or waiting on stream quota.
			// add it str's list of items.
			str.itl.enqueue(h)
			return nil
		}
		if err := l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite); err != nil {
			return err
		}
		return l.cleanupStreamHandler(h.cleanup)
	}
	// Case 2: Client wants to originate stream.
	str := &outStream{
		id:    h.streamID,
		state: empty,
		itl:   &itemList{},
		wq:    h.wq,
	}
	str.itl.enqueue(h)
	return l.originateStream(str)
}

func (l *loopyWriter) originateStream(str *outStream) error {
	hdr := str.itl.dequeue().(*headerFrame)
	sendPing, err := hdr.initStream(str.id)
	if err != nil {
		if err == ErrConnClosing {
			return err
		}
		// Other errors(errStreamDrain) need not close transport.
		return nil
	}
	if err = l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil {
		return err
	}
	l.estdStreams[str.id] = str
	if sendPing {
		return l.pingHandler(&ping{data: [8]byte{}})
	}
	return nil
}

func (l *loopyWriter) writeHeader(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func()) error {
	if onWrite != nil {
		onWrite()
	}
	l.hBuf.Reset()
	for _, f := range hf {
		if err := l.hEnc.WriteField(f); err != nil {
			warningf("transport: loopyWriter.writeHeader encountered error while encoding headers:", err)
		}
	}
	var (
		err               error
		endHeaders, first bool
	)
	first = true
	for !endHeaders {
		size := l.hBuf.Len()
		if size > http2MaxFrameLen {
			size = http2MaxFrameLen
		} else {
			endHeaders = true
		}
		if first {
			first = false
			err = l.framer.fr.WriteHeaders(http2.HeadersFrameParam{
				StreamID:      streamID,
				BlockFragment: l.hBuf.Next(size),
				EndStream:     endStream,
				EndHeaders:    endHeaders,
			})
		} else {
			err = l.framer.fr.WriteContinuation(
				streamID,
				endHeaders,
				l.hBuf.Next(size),
			)
		}
		if err != nil {
			return err
		}
	}
	return nil
}

func (l *loopyWriter) preprocessData(df *dataFrame) error {
	str, ok := l.estdStreams[df.streamID]
	if !ok {
		return nil
	}
	// If we got data for a stream it means that
	// stream was originated and the headers were sent out.
	str.itl.enqueue(df)
	if str.state == empty {
		str.state = active
		l.activeStreams.enqueue(str)
	}
	return nil
}

func (l *loopyWriter) pingHandler(p *ping) error {
	if !p.ack {
		l.bdpEst.timesnap(p.data)
	}
	return l.framer.fr.WritePing(p.ack, p.data)

}

func (l *loopyWriter) outFlowControlSizeRequestHandler(o *outFlowControlSizeRequest) error {
	o.resp <- l.sendQuota
	return nil
}

func (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error {
	c.onWrite()
	if str, ok := l.estdStreams[c.streamID]; ok {
		// On the server side it could be a trailers-only response or
		// a RST_STREAM before stream initialization thus the stream might
		// not be established yet.
		delete(l.estdStreams, c.streamID)
		str.deleteSelf()
	}
	if c.rst { // If RST_STREAM needs to be sent.
		if err := l.framer.fr.WriteRSTStream(c.streamID, c.rstCode); err != nil {
			return err
		}
	}
	if l.side == clientSide && l.draining && len(l.estdStreams) == 0 {
		return ErrConnClosing
	}
	return nil
}

func (l *loopyWriter) incomingGoAwayHandler(*incomingGoAway) error {
	if l.side == clientSide {
		l.draining = true
		if len(l.estdStreams) == 0 {
			return ErrConnClosing
		}
	}
	return nil
}

func (l *loopyWriter) goAwayHandler(g *goAway) error {
	// Handling of outgoing GoAway is very specific to side.
	if l.ssGoAwayHandler != nil {
		draining, err := l.ssGoAwayHandler(g)
		if err != nil {
			return err
		}
		l.draining = draining
	}
	return nil
}

func (l *loopyWriter) handle(i interface{}) error {
	switch i := i.(type) {
	case *incomingWindowUpdate:
		return l.incomingWindowUpdateHandler(i)
	case *outgoingWindowUpdate:
		return l.outgoingWindowUpdateHandler(i)
	case *incomingSettings:
		return l.incomingSettingsHandler(i)
	case *outgoingSettings:
		return l.outgoingSettingsHandler(i)
	case *headerFrame:
		return l.headerHandler(i)
	case *registerStream:
		return l.registerStreamHandler(i)
	case *cleanupStream:
		return l.cleanupStreamHandler(i)
	case *incomingGoAway:
		return l.incomingGoAwayHandler(i)
	case *dataFrame:
		return l.preprocessData(i)
	case *ping:
		return l.pingHandler(i)
	case *goAway:
		return l.goAwayHandler(i)
	case *outFlowControlSizeRequest:
		return l.outFlowControlSizeRequestHandler(i)
	default:
		return fmt.Errorf("transport: unknown control message type %T", i)
	}
}

func (l *loopyWriter) applySettings(ss []http2.Setting) error {
	for _, s := range ss {
		switch s.ID {
		case http2.SettingInitialWindowSize:
			o := l.oiws
			l.oiws = s.Val
			if o < l.oiws {
				// If the new limit is greater make all depleted streams active.
				for _, stream := range l.estdStreams {
					if stream.state == waitingOnStreamQuota {
						stream.state = active
						l.activeStreams.enqueue(stream)
					}
				}
			}
		case http2.SettingHeaderTableSize:
			updateHeaderTblSize(l.hEnc, s.Val)
		}
	}
	return nil
}

// processData removes the first stream from active streams, writes out at most 16KB
// of its data and then puts it at the end of activeStreams if there's still more data
// to be sent and stream has some stream-level flow control.
func (l *loopyWriter) processData() (bool, error) {
	if l.sendQuota == 0 {
		return true, nil
	}
	str := l.activeStreams.dequeue() // Remove the first stream.
	if str == nil {
		return true, nil
	}
	dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream.
	// A data item is represented by a dataFrame, since it later translates into
	// multiple HTTP2 data frames.
	// Every dataFrame has two buffers; h that keeps grpc-message header and d that is acutal data.
	// As an optimization to keep wire traffic low, data from d is copied to h to make as big as the
	// maximum possilbe HTTP2 frame size.

	if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // Empty data frame
		// Client sends out empty data frame with endStream = true
		if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil {
			return false, err
		}
		str.itl.dequeue() // remove the empty data item from stream
		if str.itl.isEmpty() {
			str.state = empty
		} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers.
			if err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil {
				return false, err
			}
			if err := l.cleanupStreamHandler(trailer.cleanup); err != nil {
				return false, nil
			}
		} else {
			l.activeStreams.enqueue(str)
		}
		return false, nil
	}
	var (
		idx int
		buf []byte
	)
	if len(dataItem.h) != 0 { // data header has not been written out yet.
		buf = dataItem.h
	} else {
		idx = 1
		buf = dataItem.d
	}
	size := http2MaxFrameLen
	if len(buf) < size {
		size = len(buf)
	}
	if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control.
		str.state = waitingOnStreamQuota
		return false, nil
	} else if strQuota < size {
		size = strQuota
	}

	if l.sendQuota < uint32(size) { // connection-level flow control.
		size = int(l.sendQuota)
	}
	// Now that outgoing flow controls are checked we can replenish str's write quota
	str.wq.replenish(size)
	var endStream bool
	// If this is the last data message on this stream and all of it can be written in this iteration.
	if dataItem.endStream && size == len(buf) {
		// buf contains either data or it contains header but data is empty.
		if idx == 1 || len(dataItem.d) == 0 {
			endStream = true
		}
	}
	if dataItem.onEachWrite != nil {
		dataItem.onEachWrite()
	}
	if err := l.framer.fr.WriteData(dataItem.streamID, endStream, buf[:size]); err != nil {
		return false, err
	}
	buf = buf[size:]
	str.bytesOutStanding += size
	l.sendQuota -= uint32(size)
	if idx == 0 {
		dataItem.h = buf
	} else {
		dataItem.d = buf
	}

	if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // All the data from that message was written out.
		str.itl.dequeue()
	}
	if str.itl.isEmpty() {
		str.state = empty
	} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // The next item is trailers.
		if err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil {
			return false, err
		}
		if err := l.cleanupStreamHandler(trailer.cleanup); err != nil {
			return false, err
		}
	} else if int(l.oiws)-str.bytesOutStanding <= 0 { // Ran out of stream quota.
		str.state = waitingOnStreamQuota
	} else { // Otherwise add it back to the list of active streams.
		l.activeStreams.enqueue(str)
	}
	return false, nil
}


2May 6, 2014Emulsion vs. Dispersion – What is the Difference?
1March 20, 2014What is Electropolishing and Why is it so Important in the Pharmaceutical Industry?
0March 4, 2014Sanitary Mag Mixers. When Should You Use One?
0February 27, 2014Sanitary Batching and Basic Automation in High Purity and Food Processing- What is it and what are your options?


text:
Q: Does the negative distribute? interpreting notation so this is sort of a silly question but I want to be clear of the meaning of this for generalization purposes. This is concerning Z scores, where $\Phi(x)$ = the (c.d.f) of a standard normal distribution.
For :
$P(Z \ge 1.05 ) = 1- \Phi(1.05) = 1-.8531 = .1469 $
The above example seems clear to be but then the book shows : $$P(-1.5 \le Z \le 1.18) = \Phi(1.18)-\Phi(-1.50)= .8810 - .0668=.8142$$
In working this out myself : $$P(-1.5 \le Z) = 1 - \Phi(-1.5)$$
Now, $\Phi(-1.5) = .0668$, so $1-.0668 = .9332$, this cannot be correct according to the above book example. So then does $1-\Phi(-1.5)$ become $1- \Phi(1.5)$? When working it out as $1-\Phi(1.5)$, the correct answer is obtained.

A: The CDF $\Phi(x)$ is all the area to the left of $x$. $P(x \leq Z \leq y)$ is the area which is to the left of $y$ and to the right of $x$. This excludes the area which is to the left of $x$. So you subtract that off, getting $\Phi(y)-\Phi(x)$. Visually this is the area to the left $y$ minus the area to the left of $x$.
Alternately, going the other way, you want all the area to the right of $x$ which is to the left of $y$. This excludes the area to the right of $y$, so you get $(1-\Phi(x))-(1-\Phi(y))$. Visually this is the area to the right of $x$ minus the area to the right of $y$.
Sometimes because of the use of tables, we don't actually have normal distribution values which go into negative arguments. In these cases we have to use the symmetry of the normal distribution. For instance $\Phi(-1)$ is the area to the left of $-1$, which by symmetry is the same as the area to the right of $1$. Hence $\Phi(-1)=1-\Phi(1)$.
All of this is a lot easier to see if you draw a picture.

A: The general principle, for an interval, is $$P(a\le Z\le b)=\Phi(b)-\Phi(a)$$
Sometimes the interval is half-infinite, e.g. $b=\infty$.  Then $$P(a\le Z)=P(a\le Z\le \infty)=\Phi(\infty)-\Phi(a)=1-\Phi(a)$$
There is no inconsistency, and $\Phi(1.5)\neq \Phi(-1.5)$.

A: Just look to the symmatry in the area of the standard normal disturbution CDF, you can see that the right area of the CDF with respect to a point of abscissa say $x$ with $x$>0 is the same area of that on the left of the point of abscissa -$x$ and hence you can say that $\psi(-x)$= $P(Z \le -x)$ = $P$($Z \ge x) \ $= $\ 1 - P(Z \le x)$ =$ 1 - \psi(x).$

redpajama_set_name: RedPajamaStackExchange


text:
The Fight Over New York's Jumbo Soda Ban Is Becoming A Civil Rights Issue
Ed Pilkington,
Jan. 24, 2013, 9:42 AM
When the mayor of New York city decided to take on as powerful a lobby as the fizzy drinks industry with a proposed ban on oversized sugary sodas, the furore that ensued was entirely predictable. Coca-Cola and McDonald's, among several other usual suspects, accused Michael Bloomberg of overriding New Yorkers' freedom of choice - as they would.
But this week some new, and highly unexpected opponents have added their voice to a lawsuit seeking to squash Bloomberg's fizzy drink restriction before it comes into effect on 12 March. The New York conference of the NAACP and the Hispanic Federation have both given support to a legal challenge that came before the courts on Wednesday by lodging a joint amicus brief in which they criticise the proposals for "stripping New Yorkers of their democratic rights".
That the NAACP, America's oldest and most august civil rights organisation, and the federation, an umbrella of about 100 Hispanic groups in the American north-east, should jump into bed with soda and fast food multinationals is deeply puzzling. Obesity and diabetes, the double scourge that the Bloomberg measure is designed to combat, hits two ethnic groups hardest: African Americans and Latinos - precisely those communities served by the NAACP and Hispanic Federation.
The health arm of New York City points out that some predominantly black or Latino New York neighbourhoods now have rates of overweight and obesity approaching 70% of adults. "Black New Yorkers are three times more likely, and Hispanics twice as likely, as whites to die from diabetes," the city's experts say.
As the city points out, obesity and diabetes are not minor issues; they are killers. About 6,000 New Yorkers die every year from obesity-related illness, and it is against that backdrop that Bloomberg has proposed limiting the size of sugary drinks sold in restaurants, delis, cinemas and sports stadiums to 16oz.
New York City points out that you would have to walk three miles from Union Square in Manhattan across the East river to Brooklyn just to burn off the calories from one Coke in the soon-to-be banned 20oz size.
So what are the NAACP and the Hispanic Federation thinking? When the Guardian called up the New York chapter of the NAACP, the reporter was told to contact a Washington phone number and ask for the association's statement.
The phone number turned out to be that of a publicist for the American Beverage Association, the trade association of the fizzy drinks industry whose members include Coca-Cola, Nestle, Pepsi and 7 Up.
The ABA released to the Guardian a joint statement drawn up between the ABA, the NAACP and the Hispanic Federation.
Hazel Dukes, president of the NAACP's New York state conference, is quoted as saying: "The decision by the board of health to restrict the sale of sugar-sweetened beverages in packages or cups larger than 16oz is neither prudent nor helpful in the overall fight against obesity. The ban will be ineffective in that it does not get to the root of the problem of obesity in New York or in the African American community."
The Coca-Cola Foundation, the philanthropic arm of the company, last month awarded the NAACP $100,000 to support "a program promoting healthy eating, physical activity and healthy lifestyles in African American communities". The New York conference of the NAACP has also received $35,000 grants from Coca-Cola for "education initiatives".
The Guardian did reach Jose Calderon, the president of the Hispanic Federation, who is also quoted in the joint ABA statement. Asked why the federation was opposing a measure designed to combat a potentially lethal epidemic within the Latino population, he said: "The diabetes rates among Hispanics are astronomical. That's why we want all parties - academics, government and the voluntary sector - to come together and work towards a solution."
Calderon said he was opposed to the Bloomberg initiative because "it is a diversion. It doesn't in any serious way tackle the issue."
The website of the Hispanic Federation lists its funders. They include Goya Foods, makers of fruit-flavoured sparkling drinks geared to the Latino market, and the Coca-Cola Company.
This article originally appeared on guardian.co.uk
More: Law and Order Soda Bloomberg NAACP

redpajama_set_name: RedPajamaCommonCrawl


Royals boss Brian McDermott was delighted to get exactly what the doctor ordered from a fleeting visit to Ireland and a friendly clash against Bray Wanderers.
"I have been really pleased with everything about today," he said after a comprehensive 8-1 win at Carlisle Grounds.
"We needed this game. By the time we play our next Premier League game, we'll have played two games and everyone else will have played four.
"So we've come here today, needing get a get a game somewhere in Europe, and I have to thank Pat Devlin, the Bray manager, who did us a real favour by accommodating us.
"The welcome we've had is fantastic. The hotel we're staying in is first class and everything about this trip has been superb. I can't thank them enough.
"A lot of players needed the ninety minutes today and everyone's come through unscathed and with a game under our belts. That was really important."
And not only the minutes mattered, but eight goals and a big win can't have done any harm for the players' confidence.
"I said to the players beforehand that what is really important is that no matter the game you play in, you should always look to maintain your reputations.
"The reputations of our players have been going up and up and up in the last three years - but it's amazing how quickly your reputation can dip a little bit if you don't do things right.
"We certainly did things right today.
"The most important thing was to come here and get the game in, get a performance and get some goals. We've done just that."
The stop-start beginning to life in the top flight meant this match was important to help us keep our momentum.
"We're eager to get going really. We had the Sunderland game called off, after we had gone to Chelsea and put in a great performance, a performance that deserved more.
"So now, we're looking forward to the game against Spurs. It's a great league - the lads are loving every minute of it."


Questions on Battle and Bounties.
I just joined MW not long ago. and currently lvl43.
I`ve been seeing people asking others to bounty them on the WorldChat.
Just wondering what is the use of bounty them.
I just KOed a guy on Battle with 10m+ bounty. and straight away, A guy Bountied me. Just wonder if thats any harm would caused on me.
Re: Questions on Battle and Bounties.
Bounties are for using against people that attack you or bothering you. Bounties you place money for someone to knock them out.
There are two achievements that are around Getting KO and losing fights. People ask for bounties so they can level those up. You get 2 skill points per level.
Mochi wrote: Bounties are for using against people that attack you or bothering you. Bounties you place money for someone to knock them out.


Get these 36 upbeat pop drum loops inspired by the hit single "Chillin' Like a Villain" from the Disney Channel movie Descendants 2! Download them now for any software like Apple Garageband, Logic Pro X, Logic Pro 9, Ableton, or Pro Tools. You can even download the drum loops kit of WAVs for software such as FL Studio, Reason, and many more! Make sure to download these rhythm-packed pop drum loops in the style of the Disney Channel and Descendants 2's song "Chillin' Like a Villain" now!


text:
Information, Records and Document Management Resources
Act Now newsletters
A free web based newsletter on Information Law issues in the public sector.
Access to Health Records Act 1990
An Act to establish a right of access to health records by the individuals to whom they relate and other persons; to provide for the correction of inaccurate health records and for the avoidance of certain contractual obligations; and for connected p
RMS' Local Government Group
Guidelines compiled by members of the Records Management Society's Local Government Group for use by records managers and other information management professionals who need to complete information audits in the course of their work.
The National Archives Standard for record repositories
This Standard is supported by TNA Framework of Standards which comprises a range of standards and best practice guidelines in all aspects of record keeping.
Case Studies from IRMT
Case studies to explore requirements for managing records and information systems in hybrid paper/electronic environments.
The Northern Ireland Records Management Standard
The Northern Ireland Records Management Standard (NIRMS) gives guidance on the do's and don'ts in creating and handling records.
The Gilbane Report
The Gilbane Report is the most widely read newsletter covering content management technologies. This is a commercial site.
Electronic Communications Act 2000
Acts of Parliament printed from this website are printed under the superintendence and authority of the Controller of HMSO being the Queen's Printer of Acts of Parliament.
Information Security: Essential Web Resources
Records Management Society section on information security.
Unesco Archives Portal
An international gateway to information for archivists and archives users. Click on Information & Communication, and then on Archives Portal section.
Computer Misuse Act (1990) c. 18
The National Archives retention schedules
Disposal scheduling is an important aspect of establishing and maintaining control of corporate information and record resources. This guidance gives pointers towards establishing how long information is required in core business scenarios.
Office of Public Sector Information
The Office of Public Sector Information is at the heart of information policy, setting standards, delivering access and encouraging re-use of public sector information. We provide online access to UK legislation, license the re-use of Crown copyright
JISC Mialings
A global mailing list to which any member can post messages and read responses. A good place to go if you want to pose a question about Records Management, or ask advice about a specific field or problem within Records Management.
The DIRKS Manual
DIRKS: A Strategic Approach to Managing Business Information (also known as the DIRKS Manual) provides government agencies with practical guidance on managing business information and records....
The KNOW Network
The KNOW Network is an international Web-based professional knowledge sharing network.
Customer Websites	(30)
Partner Sites	(7)
Information Management Professional Bodies and Institutions	(15)
Information, Records and Document Management Resources	(16)
Data Protection Act	(9)
Digital Preservation	(9)
Metadata	(11)
The Semantic Web	(3)


text:
Q: NetBeans Library Types I'm choking on a few terminologies that are either Java- or NetBeans-specific and I can't seem to get a clear answer as to what they are.
In NetBeans, if you go to File >> Project Properties there is a Category called Libraries which houses, principally, 3 different types of libs:
(1) Compile-Time Libraries
(2) Processor-Path Libraries and
(3) Runtime Libraries
Can someone explain to me the subtle differences between these libraries? Obviously compile-time and runtime libraries involve things that happen at compile- or run-time, respectively. But I'm not sure what those "things" are. But the processor path libraries is something I've never even heard of.
Also, (4) can someone clarify that by "libraries" we're talking about 3rd party JARs?
Thanks for any and all insight!

A: The UI and terminology of the Libraries properties is a bit confusing.
The Help button on the dialog does bring up a pretty good description of various 'types' of libraries, when I looked at a recent nightly build of NetBeans.
I do want to provide a bit more insight on the difference between Compile and Run libraries, though.
A Compile-time library is used at compilation time to resolve symbols and the like while your Java code is converted into classes.
A Run-time library is used to support the actual execution of your program.
The Compile-time library list can be a subset of the Run-time library list, since you may depend on a library A that depends on a library B which is not exposed to clients of A.  Your code will compile correctly if A is in the Compile-time library list, but it will trigger ClassNotFoundException's when when you try to run it without B in the Run-time library list.
In the context of the Libraries property editor a library can be:

*

*A jar file,

*A directory,

*A NetBeans
library (Open the Library Manager
dialog [Tools->Libraries] to find out
more), OR

*A NetBeans IDE project

A: (1)-(3): Compile-time vs Runtime libraries
(2): apparently, this is used for annotations:

Specifies where to find annotation processors; if this option is not given, the classpath is searched for processors

(4): yes we're talking about 3rd party JARs


In What Parish Do I Live?
Children learn by observing. Parents must exhibit leadership, sportsmanship, and character if they expect their child to develop these highly desirable traits.
Be supportive of team managers and coaches. Respect decisions.
Be an active supporter as a fan and as a parent solicit feedback of your child regarding their progress and how their team is developing.
Be cognizant that all players will not possess the same skills.
Display stewardship and assistance with your parish associations and the CYC athletic program.
Do not burden your child to perform outside his/her capabilities. A child doing his/her best IS good enough.
Respect the facilities where events are held and assist to make them better.
Attend practices and contests when time permits. Every effort should be taken to see that your child is present in advance of the start of each game and practice.
Celebrate individual as well as team improvements.
Obtain and reference the CYC Constitution.
Take the time to know your child's coach and assistants.
Notify the coach as early as possible, if your child can not attend a team event.
Know and respect the teams' practice and league schedule. Ensure your child is present and picked up accordingly.
Read and respond to informational notices supplied by the team manager.
Read and consent to all items required by the parental consent contract.
Know the rules of the game. Obtain and read the basic and supplemental rules of the sport. Attend any pre-season rule or coordination meetings offered for parents and players.
Before you attend a game or practice know that regardless of what happens you must have a calming influence and demonstrate adult behavior.
Accept winning and losing in accordance with Christian ideals and principles. Emphasize leadership, sportsmanship, effort and character. Do not over emphasize winning or results.
Respect all players, coaches, and officials at all times.
Always encourage your team and players. Never jeer or ridicule your opponents or game officials.
Make your child's experience a positive one through your adult behavior and support.
Make the trips to and from games/practices a pleasant and positive experience.
At the game keep all comments to players, coaches, fans, and officials positive. Any constructive criticism should be directed to your parish athletic association or district.
Parents are responsible for the behavior of their family members and guests.
Ensure that your child is having fun!


Dr. Rokhsar has several lasers to choose from for a patient's specific fat reduction goals. He is the first physician to use the Liposonix procedure in the United States and is a leading authority on laser surgery and non-invasive fat reduction.
Liposonix used high-intensity ultrasound therapy to target and destroy fat. This non-invasive procedure can leave stubborn fat areas found in the waist, abdomen, love handles, thighs and back progressively thinner and smoother.
UltraShape uses ultrasound waves specifically focused to target and destroy fat cells through the skin. The fat is then naturally processed through the body similar to the treatment of kidney stones. This non-invasive procedure can be used for fat found on the abdomen, love handles, hips or thighs and requires no downtime.
VelaShape is an effective technique used to contour and shape the body into a slimmer form by reducing cellulite and firming problem areas in four sessions. The laser is composed of a bi-polar radiofrequency (RF) and infrared light energy, and vacuum and mechanical massage. This combination uses the vacuum to smooth out the skin and efficient deliver heat energy. The fat cells are reduced in size, leaving a thinner and smoother appearance.
Zeltiq uses a cooling method called cryolipolysis to target, freeze and break down fat cells in the body. This laser is based on the research conducted by Harvard scientists, that fat is more susceptible to cold temperatures than other cells in the body. When affected, the fat separates and dies just below the skin and then suspends inside the body and naturally digested. Within weeks full results are achieved without the need for surgery. After the cells are crystallized through a gentle cooling process, the fat progressively decreases with gradual results appearing with three weeks to final results within four months.
Zerona is a non-invasive option for those wishing to reduce fat in places such as the thighs, hips, waist, buttocks, abdomen, neck, arms, and back. The laser liquefies fat by targeting cells and breaking them down just below the skin's surface. The body then naturally disposes them as dead cells and results are progressively seen after the non-invasive procedure. Desired results are usually seen after six to ten sessions that are ideally spaced every other day or no more than 72 hours in between them in order to prevent fat reuptake.


We present an improved variational effective index method for reduction of 2-D Bragg grating problems to 1-D and show significant improvements particularly at smaller wavelengths. The method is based on the optimal variational (Vopt) method, which we have earlier used successfully for conventional waveguides. A 1-D transverse profile along with a longitudinal index variation are reduced to a 1-D longitudinal distribution, reflection and transmission spectra of which have been studied for both the TE and TM modes by transfer matrix methods. An accurate modeling for the out of plane scattering losses has been presented which occur when a guided wave propagating in a conventional waveguide impinges on a photonic crystal waveguide. Taking these losses into account brings the results pretty close to those of a rigorous 2-D Helmholtz solver QUEP, improving them remarkably over the variational EIM (vEIM) results.
Copyright of this article belongs to 0306-8919.


There have been a dozen biographies since Richard Buckle's ground-breaking 1971 book, and while new information has from time to time emerged, by now the well has really run dry, and Lucy Moore merely goes over the well-worn ground.
Hansel and Gretel will be praised for all the reasons detailed above, and particularly for the enthusiasm of all involved, but the lack of hard editorial control is all too apparent.
The cleverness of Scarlett's update lies in its psychological truth. He's certainly done his homework (even Stockholm Syndrome is there). He also finds neat inversions.


Fast and great quotations, informed advisers to help you choose the correct product that suits all your preferences, a short manufacturing time, responsible excellent handle and distinctive services for paying and shipping affairs for Perforated Sheet Metal Mesh , Perforated Metal Mesh , Perforated Metal Wire Mesh , top quality first-class modern organization and function hard!
"We are going to make every single effort for being excellent and excellent, and accelerate our ways for standing while in the rank of international top-grade and high-tech enterprises for Perforated Sheet Metal Mesh , Perforated Metal Mesh , Perforated Metal Wire Mesh , Satisfaction and good credit to every customer is our priority. We focus on every detail of order processing for customers till they have received safe and sound products with good logistics service and economical cost. Depending on this our products are sold very well in the countries in Africa the Mid-East and Southeast Asia.


Happy Earth Day from Jupiter-Tequesta!
Today, we are looking for ways to give back to the environment make a more sustainable future for ourselves and our families. While there is a lot of work to be done, there are a few things you can do at home to make your life a little bit more eco-friendly. Not sure where to begin? Here are a few places you might want to start!
Fix Plumbing Leaks – A leaky faucet is more than a household annoyance. Those drips can add up to gallons of water waste over time. By taking a few minutes to fix those leaky faucets, you can improve the water-efficiency of your home.
Install Water-Efficient Fixtures – If the plumbing fixtures in your home are old and outdated, you might be due for an upgrade. New models of shower heads, toilets, and faucets work more efficiently, while using less water. Don't worry, although your new shower head will use less water, you'll still have the same level of comfort and convenience!
Change Your Air Filters – Every air conditioning system has an air filter inside of it that keeps dirt and dust out of your home. When these filters become clogged, the air can't flow through your ducts and into your home as efficiently. By replacing your air filter, you'll have cleaner air in your home and your air conditioning system won't have to work as hard.
Turn Off The Lights – Don't forget to turn off the lights when you leave the room! This can add up to savings overtime.
Switch to LED Bulbs – Replace your light bulbs with more efficient LED bulbs. These light bulbs are more affordable, last longer, and will make your home more eco-friendly.
If you have any questions about how to make your home plumbing, HVAC, or electrical systems work more efficiently this Earth Day and year-round, don't hesitate to give us a call. At Jupiter-Tequesta Air Conditioning, Plumbing & Electric Inc. we offer residential electrical services 24 hours, 7 days a week.


text:
home > press reports > galveston daily news > galveston daily news - 9 december 1888
Ripper Letters
Victorian London
Ripper Media
Games & Diversions
Ripper Wiki
Casebook Examiner
Ripper Podcast
About the Casebook
Pub Talk: The Great Drunkards and What They Drank - by DJA 54 minutes ago.
General Discussion: A Whip and a Prod - by DJA 1 hour ago.
Pub Talk: Monty Python Star Terry Jones Has Passed Away - by Robert 1 hour ago.
General Discussion: A Whip and a Prod - by NotBlamedForNothing 2 hours ago.
General Discussion: A Whip and a Prod - by DJA 2 hours ago.
Most Popular Threads:
Motive, Method and Madness: Practicality or madness? - (97 posts)
General Discussion: A Whip and a Prod - (36 posts)
Other Mysteries: The Murder of Julia Wallace (1931) - Full DPP case files - (24 posts)
Pub Talk: Do Some People Really Believe the Earth Is Flat? - (12 posts)
Pub Talk: Monty Python Star Terry Jones Has Passed Away - (4 posts)
Other Mysteries: Madeleine McCann - (2 posts)
Galveston Daily News
A ROTHERHITHE VENUS.
HOW A MAN CAME NEAR TO LOSING HIS LIFE IN WHITECHAPEL.
Barbarism in the East End of London - On the Thames After Dark.
London, November 25. (Special Correspondent.)
That mysterious journalistophile, known in contemporaneous romance as "the Whitechapel fiend," has recently brought into renewed popularity among sensation hunters, the district of London known somewhat indefinitely as "the East End." Whitechapel stood in peril of oblivion; the literary man had cast his reporterial eyes, apparently, once and for all upon the gilded nest, where, though it is true that many sons risen in the morning of life in the east end, have set in jeweled splendor. Whitechapel is as much a traveler's name, and nothing else, as Timbuctoo, Palmyra, or Atlantis. Now, however, the picturesque and imposing word murder and outrage have attracted the attention of the world - and of its wives and daughters - to this unsavory locality, and a complete literature of the district has been the result.
The story I am about to tell, dramatic as its incidents are, does not, I regret to say, abounding what the English newsboy calls "the 'orrid details," but it serves to show that the present series of crimes that are electrifying the world only stand out from a long calendar of such, on account of the devilish ingenuity of their perpetrator.
There may be among my readers, English and American, a few who have had the curiosity to go through experiences which have led to events such as I am about to relate, but the number will be few, for it is only one of many hundreds of Englishmen even who ever brave the dangers of the remote east end of London.
At the time of which my story speaks George R. Sims had not brought "slumming" into fashion; he had not by his intimate acquaintance with the lower forms of life in London excited the interest in the east end which was aroused a few years ago in the drawing rooms of the west - in a word, as I say, "slumming" had not "come into fashion." The fact that it had not done so was perhaps the main inducement to me to become an inveterate "slummer," and, arrayed in the oldest and most terrible of clothes and fortified with a carefully concealed revolver of somewhat heavy caliber, and about five shillings as a rule in my pockets in sixpence and coppers, I commenced a series of voyages of exploration in the east end, where the dregs of the population assemble and pickpockets congregate.
If you take the white omnibus which passes the American exchange at Charing Cross and cling to it until it reaches the end of its allotted route, it will take you along the busy Strand and literary Fleet street, up classic Ludgate hill, past St. Pauls, past the bank and by Corn hill to London bridge, and there descending, you will set your face eastwards, and passing the Monument and Tower, you will reach narrow and treacherous paths, ways that are dark and streets not always too clean, and you will find places with names like Wapping Old Stairs, Shadwell, Ratcliff Highway and Tiger Bay; places where a decent coat would be the oriflamme of attack, and where they would sell your hair if they could get a penny a pound for it.
Across the river lies Rotherhithe, pretty, fresh and smiling in the noonday sun, looking as if it had suddenly been evolved out of the inner consciousness of some seventeenth or eighteenth century artist; rows of little whitewashed houses with bright pebbled walks, leading from the rustic portico to the brilliantly green painted gate, where sweet peas straggle untidily at their own sweet will, and pots of gilly flowers mingle their heavy sensuous perfume with the tarry and fishlike smells which announce the trade of the inhabitants.
It is here that Walter Besant has laid the scene of the Captain's Room, and a more beautiful and interesting spot it would be difficult to find; but scarcely anybody ever goes there, because Rotherhithe is, or was, almost impossible to get at.
It was something of a romance that awoke in me an ambition to explore Rotherhithe. I had been in the habit of haunting Ratcliff Highway in the character of a defaulting bank clerk, and had fraternized with my companion outcasts, on the strength of a certain skill in amateur legerdemain, which enabled me to amuse the occupants of barrooms, whilst I listened to their talk, with a few simple tricks performed with some pennies, a handkerchief, and a pack of cards.
I had been thus engaged one night, and was sitting at a dirty table conversing with two of the lowest specimens of the population, when suddenly, above the roar of the market outside, there rose from the mews, at the back of the public house we had selected as a resting place, a piercing shriek - the cry of a woman - and of a young woman in mortal terror. Following the scream rang forth the cry:
"Oh, God, help!"
"Boys!" I exclaimed, jumping up, with a tightened , sickening sensation at my throat, "here's some fun. Don't let's miss it! Come and rescue the gal."
"Go an' do it yerself!" answered the apparently elder of the blackguards, and before he had finished his reply I was out in the back yard.
A scoundrel who may have been a sailor, but who was more probably a dock loafer, had evidently seized a girl, whose outline I could barely distinguish in the darkness as she passed the narrow passage that led from the street to the back of the house, had dragged her into the yard for purposes of robbery, or even worse. Such little things as this are of too ordinary occurrence in Ratcliffe highway to excite any remark from the passers by.
The assailant had flung his victim to the ground, and crouching over her was not aware of my approach from behind. I did not dare to shoot for fear of arousing the neighborhood - a pistol shot would undoubtedly summon a policeman (though little short of it would - in Ratcliffe highway), and my identity would be revealed - so I struck the cowardly ruffian a stunning blow with a Smith & Wesson butt, on the back of the head. He rolled over without a groan - I think his skull was smashed.
Without bestowing upon him another look I turned my attention to the girl. She had fainted, but was apparently at that moment recovering consciousness.
The moon that was full that night ran out from behind a bank of clouds, and shone on as fair a face as ever I saw. The hair that framed it was of a rich, ruddy gold, and had escaped from its confinement as the girl's bonnet had fallen off; the eyes that opened and looked at me were large and soft, and appeared a deep violet in the gloom; an exquisite little mouth opened as I bent over her, apparently to cry out once more, when I whispered:
"Be quiet; you are safe! Don't utter a word - I'll see you safely where you want to go. There's the man who seized you - let's get out of here."
Casting a frightened glance at the motionless figure by her side, the girl rose and coming close to me she said in a low tone: "For God's sake, don't you hurt me too. You look like a swell - don't let any of these beasts touch me."
I reassured her to the best of my ability as I led her down the passage to the street, and the next moment we were striding rapidly eastward along the highway.
"Where are we going to?" I asked after we had put a hundred yards between us and the scene of her late encounter.
"To Wapping Old Stairs," she answered. "I live across the river at Rotherhithe. I've never been over here before, but my uncle was taken ill tonight and I came over to find a doctor who saw after him when he was bad once before. I found that he'd gone away from the old address, and I was hurrying home when that brute seized me as I passed the entry to that passage."
"But, my child," said I, "you can't go back to Rotherhithe at this time of the night. How a beautiful thing like you ever got here safely at all I can't make out. Here, you're safe with me anyhow - I'll take you back to Rotherhithe."
The girl drew closer to me and looked up into my face.
"Ah!" said she. "I thought you was a swell. Thank you kindly - I shan't be afraid if you come with me."
And so, arm in arm, we reached Wapping Old Stairs, she chattering about herself all the way.
She was 17, but looked 20; she had lived all her life, she said, as long as she could remember, with her uncle.
We reached the ferry landing and found the ferryman making his last round trip for the night.
"Last trip over," shouted the ferryman. I looked from him to the girl - she laid her hands on my arm and looked up into my face.
"Won't you come and see uncle," she repeated, "you'll be able to get a ferryman to scull you across - there's always lots of 'em about, looking for corpses," she explained.
I shuddered a little, but I couldn't resist her appeal. I went with her to her uncle's cottage.
We found the old man sleeping peacefully. From her description of his illness, I concluded that he had been suffering from an unwonted combination of anno domini and alcohol. We decided that it was best not to waken him, and after remaining for a few minutes in conversation with this Rotherhithe Venus I rose to take my departure.
She accompanied me to the gate. As I held out my hand to say "goodnight" she put up her lips, saying:
"Aren't you going to kiss me?" There was not a shade of coquetry in her voice now; she was merely making a simple inquiry.
"You'll come over again and see me, won't you?" she said, as at last I announced my intention of really going away.
"Certainly I will," was my answer, as I held her hand over the garden gate, "as soon as I can; good night."
And retracing my steps along the way by which we had come, I reached the ferry stairs. It was a long while now, since the ferry had made its last trip, so after looking around disconsolately for a few minutes, I hailed what I think was the most repulsive looking specimen of humanity that I ever saw in my life, and, after some haggling, agreed that he should row me over to Wapping in his dilapidated old wherry for the sum of sixpence.
You, oh, my gentle readers, who have never crossed the Thames lower, perhaps, than Vauxhall, or the Houses of Parliament, will, perhaps, think it is nothing to make this crossing of the river from Rotherhithe to Wapping, but allow me to tell you that though I have walked the streets of Scutari and the blind alleys of Galata, the passages of remoter Paris and the deserted piazza of Rome at all hours of the night, I would infinitely rather patronize all these localities, dressed from head to foot in the gold embroidered gown of a Chinese mandarin with a sapphire button on the top of my head, than be rowed across the Thames at dead of night "below bridges."
You shoot out from the stairs where you have stepped into your boat between the black undefined masses of shipping and from beneath the overhanging attics of the lower riverside tenements, and, excepting for the dreadful, lonely "lap, lap, lap" of the water, and the greasy dip, dip, dip of the dilapidated oars, everything is in profound silence.
The greasy stream runs past the boat silently and swiftly, and brave man though you may be, you dare not trail your fingers in the water, and you shudder involuntarily as you turn your eyes from every dark mass which floats past the boat.
On the occasion of which I am speaking, we had got about three quarters of the way over, when, in the brilliant moonlight, an idea suddenly seemed to strike my wherryman; possibly the light shining on my face made it look more than ordinarily pale, and he thought I was frightened; anyhow he said:
"Here, you swell, pay me my fare."
I asked him what he meant. He replied:
"I mean that I am going to be paid before you get out of this boat."
I was wrapped up in a large and rather shabby cloak as I sat in the stern of the boat, my arms crossed upon my knees, and thus we sat looking at one another, while, concealed by the folds of my cloak, my right hand sought out the revolver which lay upon my left hip. I said to him:
"I shall pay you when I get out and not a moment before." And he said to me:
"I know this, that unless you pay me half a sovereign right this minute, you will never get out of this boat at all, and then what?"
"And then this," I said. "Now, look here, you be reasonable; I've told you that I am a broken down sport, and that I haven't got any money at all; I've only about 3 shillings in the world, and you won't be such a brute as to take it away from me."
"Won't I though?" he said. And then another thought seemed to strike him, and he added, "Is that all the money you have got on you?" And I said, "Yes."
A hideous grin displayed two broken ranks of blackened teeth, and with a chuckle more awful than anything I ever heard before or since, intensified as it was by the surroundings, he said:
"Very well, then; there is 3 shillings that you have got, and 5 that I shall get for taking your body to the river police, that will make 8."
"Good God!" I exclaimed, "what do you mean?"
"Why, this here," said he. "I am going to chuck you out of this boat, and I am going to see that you drown, and then I shall get 5 shillings for recovering your body and taking it to the [police station. Don't you see?"
I don't think I was ever in such a frightful situation in my life; but I knew perfectly well that if I were to shoot the man there and then I should probably fall into worse hands when I landed, heaven knows where, on the other side, so I said to him:
"Now, see here; supposing I lied to you, and that I have got a watch on that is worth some money, and that I would give you that, how long will it take you to reach the other side?"
By this time the moon had hidden herself behind a cloud, and the gloom was profound. He said:
"About a minute and a half."
"Very well, then, " said I, "if you throw me overboard I shall swim ashore and then you will lose me."
"Oh, no," said he, "will you? You could no more get through the barges and shipping alone than you could get to heaven without I sent you there." (Heaven was not the word he used.)
All this time, my brain was working pretty actively, and I said to him:
"Now, see, here is another scheme. Admitting that you will get 5 shillings for my dead body, you would get a sovereign for saving me alive, according to the rules of the river police; now, if you throw me overboard (as I see, by your size, you are quite capable of doing) you shall jump over also and save me, and I will give you my word of honor - stake my dying oath - that I won't say you threw me overboard, only save me and put me safely into a police station."
"That would be very well," said he, "and you speak fairly enough, but I can't swim a stroke."
"Can't you," said I, "then by God! pull to save your life."
I had my hand on my revolver all this time, and drawing it suddenly, I fired two bullets through the bottom of the boat. The water began to gush in, and the wherryman, seeing possible escape for me and certain death before him, turned the boat's nose to the shore, and in less than two minutes we were safely on dry land with nearly a foot of water in the boat.
Arrived at the other side he disappeared and as good luck would have it, at the top of the street in which I had been deposited I found a stray policeman walking his solitary round. He told me where I was and how to get back to London bridge.
I did not go to Rotherhithe again, according to my promises; in fact, I have never been there at all since, and I think I am safe in saying that I never shall.
As for the fair one with the golden locks who led me into the scrape, I have never heard of her or seen her since. I wonder what was her name.
EDWARD HERON ALLEN.
Press Reports: Bismarck Daily Tribune - 28 June 1893
Press Reports: Brandon Mail - 8 November 1888
Press Reports: City Press - 17 October 1888
Press Reports: Daily Northwestern - 27 June 1893
Press Reports: Frederick News - 27 June 1893
Press Reports: Herald and Torch Light - 29 June 1893
Press Reports: Manitoba Daily Free Press - 27 June 1893
Advertise with us | Link to us | Privacy Policy | Copyright © Stephen P. Ryder & Johnno, 1996-2020 Thomas Schachner


nated at this meeting will he!
Councilmen, M. Saxon. J. H.
l oruami w me no ccn ior u.i i fjt,ar ( rahnm: for ' ronsi:r r.
McCormick. A. T. Laws, II. J.
take t. foster, Thousn isited .
interest at five percent per annum.
Mist to the Clatsop county line.
the awatding of the prize cup.
hli.i held at Pendleton a we.k K"
a. rn. daily and returning nt 6 p.m.
v .:gh. There was corn in bulk.
..,.. v i ordinance oeio.
tliv cob. in rows ami piles, com 01. ,,,US!4nt Huccess.
French of the Oregon Agricultural & m,iv,lm,nt has been inaugurate!
County Fruit Inspector J. W.
I'omeroy of Scappoose was in St.
BACKS INTO OED DOCK AT ST.
spread out in convincing profusion., . m nttnck of grippe.
ranks of corn growing st;''1"
. . .trif ol Mi iiv.
Sunday night. spocil f''""1"'' i,r!). Jack Api-lcton, Peer is .
son who attends the entertainment.
terms at the Mist otlice.
of our District Superintendent, Dr.
2tp W. S. Francis, Deer Island.
Florence Rotger; W., Nina B.
everywhere in evidence in Mexico.
South St. Helens and the Island.
tending to Columbia City. St.
tending about one mile bejond.
Iva E. Dodd, P. M.


text:
'Marketing that is affordable should be available to all'
Husband and wife team launch firm during pandemic
Sarah Bosley
sarah.bosley@newburynews.co.uk
WHEN Emma Dunlop-Walters was made redundant during the coronavirus pandemic she used it as an opportunity to set out on a new adventure – with husband Richard by her side.
While the world went on hold, Emma pushed forward with plans to set up her own marketing company and things have been going from strength to strength ever since.
Growing up in Shaw, the 30-year-old went to Park House School and then took a business BTEC at Newbury College.
"At school I really liked English and then I went to university in Newport to do a business and law degree," Emma explains. "There was an element of marketing to it and that's where it all started.
"In 2013 I started working in business development and I realised I liked the marketing side so much that I would study for my CIM [Chartered Institute of Marketing] qualifications.
"I loved everything about it. It was all really good and learning something new.
"In my spare time I would do other small courses too and it was brilliant as I got to bring new ideas into work."
From there she moved to a law firm in Reading, where she worked her way up from marketing assistant to marketing executive.
Other roles followed as Emma continued to challenge herself, including a role focusing on ecommerce for a toy company, which she describes as a "really good time".
Last November she took on a new job as a marketing manager, but then Covid hit. Sadly, the company was forced to make Emma redundant, but rather than dwell on it, she decided to turn it into a positive.
On July 5, the husband and wife team launched ER Marketing – while Emma focuses on the marketing and business development, Richard works behind the scenes on the technical side, including building new websites for clients.
"I left my job on really good terms and it has worked out well for us," Emma says. "In a recession, marketing is always the first thing to go, so we had a couple of days where I wasn't sure what I was going to do.
"I thought I would try freelancing and see what happens. We then got our first client in a few weeks and it's just grown from there. Our work is all coming from referrals and it's been really busy these past few weeks."
Richard, aged 34, also grew up in Newbury, attending Shaw House and Trinity schools, before gaining a degree in linguistics at the University of Sussex.
After graduating he spent some time living in New York. "It was something I always wanted to do," he explains. "So I went over there and worked in customer support, but also did freelance web development and writing. I loved IT and I loved computers; I also love reading and writing, so I did some general interest writing on tech issues while I was in New York."
But for a long time, Richard has wanted to be a teacher.
He followed his dream and is currently in the third year of a BA in education at Reading University.
"I am a full-time student and I am lucky that I working from home, so I have a bit more spare time to work with Emma than I would have if I was going into university," he says. "Hopefully I will go on to work at a local college and continue to work in the business too."
So how do the couple find living and working together?
Richard believes they have very complementary skill sets, which makes it a perfect partnership.
"It isn't something that we ever thought we would be doing," Emma adds. "But we work really well together. We are doing a lot of networking and growing our expertise.
"We just want people to know that we can offer affordable marketing solutions. We believe marketing should be available to everyone.
"Starting the business was all very sudden and we had to launch overnight, but we keep growing and, who knows, the sky's the limit."


text:
The first American settlement house was established in New York City in 1886. In contrast to existing charitable organizations that dispensed material aid and advice to the needy, in settlement houses reformers lived in the neighborhoods they served with cultural programming and community amenities. College-educated men and women joined the settlement house movement around the United States to live and work among the poor. From 1890 to 1920, the American settlement movement grew rapidly. Within the context of a rise of nativism that culminated in restrictive immigration legislation, settlement house workers targeted various urban problems brought on by industrialization and increased immigration. Settlement house workers believed that it would not be possible to transform the neighborhood without first reforming urban society by working for better education and labor standards, housing improvements, and health care initiatives.
Milwaukee's early settlement houses were guided by tenets of social science research, as settlement house workers adopted investigative methods to study and ameliorate the causes of poverty, crime, and juvenile delinquency. At the turn of the century, sociologists at the University of Wisconsin identified portions of Milwaukee's Fourteenth Ward on the South Side as having the city's highest rate of infant mortality, crime, and juvenile delinquency. The ward was also one of the most congested residential areas populated by newly-arrived Polish, Russian, Lithuanian, and Slovakian immigrant families. In November of 1902, the Wisconsin University Settlement House was established to serve this community under the leadership of Reverend Herbert H. Jacobs and Mary Belle Jacobs. The fifteen-member Board of Directors of the settlement included ten members from Milwaukee and five members with "active association" with the University of Wisconsin. Although the settlement was not directly funded by the university, it received contributions from the Settlement League of the University of Wisconsin.[1]
The University of Wisconsin Settlement House occupied the "old Coleman residence" on First Avenue adjacent to Kosciuszko Park. Renting at $50 per month, the settlement consisted of a basement with a laundry, a carpentry shop, a room to conduct cooking classes, a handball court, a library, a nurse's quarters, and over sixteen bedrooms.[2] Residing in the settlement house, Reverend Jacobs and other workers offered a broad range of programs for their immigrant neighbors, including social clubs, instructional classes, and a night school for adults. Home economics students from Milwaukee-Downer College taught sewing and cooking classes, and the Outdoor Art Association taught children gardening. The Settlement Association acquired, ownership of the house located at 861 First Avenue in 1908 through a gift from Margaret W. Allis. In 1916, the Milwaukee Community Fund took over operational costs for supporting the Settlement. By 1921, the settlement reached 500 families each week as the children's department of the settlement grew to include drama, folk dancing, and music classes as well as a variety of sports clubs.[3]
By the turn of the century, established religious and ethnic groups borrowed from the national settlement movement to create their own social settlements in Milwaukee. The most well-known was established in 1896 when Lizzie Black Kander and a group of Jewish clubwomen opened a settlement house for their newly arrived Eastern European compatriots in a space contributed by Milwaukee's Temple B'ne Jeshurun and Temple Emanu-El. The Ladies Relief Sewing Society, which later evolved into the Milwaukee Jewish Mission, established basic aid services as well as added a bathhouse for immigrants in 1896. "The Keep Clean Mission," located next to the Schlitz Brewery, piped in excess water from sterilized beer bottles for an immigrant bathhouse. On March 27, 1900, the women of the Mission united with the Sisterhood of Personal Service to form, "The Settlement." Kander was named president of the settlement house located at 507 Fifth Street. She served in this position from 1900 to 1918. In 1904, the Settlement moved to 499 Fifth Street; and again moved in 1907, relocating on the Lower East Side of Milwaukee. The settlement provided classes on sewing, cooking, and English. Clubs included the Young Judaea Council, the "Buds of Zion," and the "Maccabees." In three years, the expanding services of the settlement increased the need for space. With proceeds from the sale of The Settlement Cook Book, the newly-built Abraham Lincoln House opened its doors on November 11, 1910. By 1931, the Abraham Lincoln Settlement became known as the Jewish Community Center located on Prospect Avenue on Milwaukee's East Side.[4]
Initially, Milwaukee's settlement houses drew its recruits from the upper-middle class, white men and women. But by the mid-twentieth century, increased awareness of deteriorating housing conditions, educational inequality, and urban decay led some of Milwaukee's African-American leaders to draw upon tenets of the settlement house movement to develop "neighborhood centers" with the goal of revitalizing the inner city through community organization. Neighborhood centers drew on the tradition of settlement houses without the mandate that workers live on site; staff were paid professionals rather than residential volunteers. Incorporated in April 1961 by the East Wisconsin Conference of the Women's Society of Christian Service of the United Methodist Church, the Northcott Neighborhood House was located at the southern edge of the Hillside Housing Project at 1523 North Sixth Street. Led by the Reverend Lucius Walker, the Northcott Neighborhood House was created for "religious, charitable, and education purposes" to "lessen neighborhood tensions, combat community deterioration and juvenile delinquency" as well as "perform other social work" on "behalf of persons in the Milwaukee, Wisconsin community."[5] The neighborhood center organized a range of services and programs, including a tutoring program for illiterate adults, a children's day camp, a second-hand clothing shop, a doll library, and a comprehensive health care screening service.[6] Throughout its history, Northcott partnered with the University of Wisconsin-Milwaukee for assistance in educational program development for children and adults on Milwaukee's North Side. By the mid-1960s the neighborhood center joined forced with the city's civil rights organizations to work toward programs that fostered equal opportunity and social justice through community organizing. Northcott joined forces with community organizations to establish a Planned Parenthood Clinic, to gain representation on Milwaukee's Community Relations-Social Development Commission, and to partner with other inner-city groups to write economic development grants.[7]
Of the course of the twentieth century, Milwaukee's settlement house staffs supported state labor laws, including worker's compensation and minimum wage legislation, establishing vital health care services and educational programs as well as creating the foundation for organized social work in the city. Settlements were not only a center for social reform but a focal point for political action as leaders responded to the immediate needs and concerns of Milwaukee's most underrepresented communities.
Angela Fritz
^ Ruth Harman and Charlotte Lekachman, "The Jacobs' House," Wisconsin Magazine of History 16, no. 3 (March 1933): 261-63, last accessed September 3, 2017.
^ Harman and Lekachman, "The Jacobs' House," 260-61.
^ Harman and Lekachman, "The Jacobs' House," 264-65, 267-68.
^ Angela Fritz, "Lizzie Black Kander & Culinary Reform in Milwaukee, 1880-1920," Wisconsin Magazine of History 87, no. 3 (Spring 2004), 43-45.
^ Fielding Utz, "Northcott Neighborhood House," Milwaukee History 6 (Winter 1983): 115-16.
^ Utz, "Northcott Neighborhood House," 117.
^ Utz, "Northcott Neighborhood House," 121, 123.
Fritz, Angela. "Lizzie Black Kander & Culinary Reform in Milwaukee, 1880-1920." Wisconsin Magazine of History v 87, no. 3 (Spring 2004): 36-49.
Harman, Ruth and Charlotte Lekachman. "The Jacobs' House." Wisconsin Magazine of History 16, no. 3 (March 1933): 252-84.
McBride, Genevieve. On Wisconsin Women: Working for Their Rights from Settlement to Suffrage. Madison, WI: University of Wisconsin Press, 1993.
Salisbury, Winifred. "Letters from the Settlement House." Milwaukee History 19, no. 2: 54-68.
Utz, Fielding. "Northcott Neighborhood House." Milwaukee History 6 (Winter 1983): 115-124.


Chemical herbicides are used as the pioneer approach to control weeds. Herbicides can eliminate the most of the population weeds. This approach of handling the weeds are inexpensive also the results are immediate and invigorating. Everything has two aspects of its approach that if it has the advantages it alsohas the disadvantages. Advantages of chemical herbicides includes it mode of action is very rapid, its can reduce the maximum amount of invading weeds, these are very selective in its mode of action, many types of herbicides are available (broad leaves and narrow leaves) due its specific mode of action. But the disadvantages are countless if we just go its effect on the environment than we can realize that this thing is not only destroying our habitat but also the flora and fauna of our surrounding.
The basic effect on the environment is the pollution it's causing in the surroundings. The herbicides are usually sprayed through the boom sprayer and the other approaches in the form of droplets. These droplets can travel a long distance in air thus its chemical can move to larger places.
Sterna acuticauda, Threskiornis melanocephalus, Limosa limosa, Chaetornis striata, Catreus wallichii, Aegypius monachus,Pelecanus crispus,Neophron percnopterus,Numenius arquata, Falco peregrinus peregrinus, Coracias garrulus, Aythya nyroca and many more.
Leaching of the chemical herbicides in the soil is adversely affecting the water bodies and the lakes and other water recourses. The leaching of the nutrient in the water bodies is causing the eutrophication. Eutrophication is causing the bad aesthetic value to our surrounding. This also blocks the sunlight and thus reducing the ability of the sea plants and algae to produces more oxygen and food for the water animals. The major factor which causes the aquatic life destruction. Eutrophication is mare a point of discussion but main point when chemical herbicides enter in the water body then taken up by the aquatic animals. Most of these chemicals are responsible for the destruction of the aquatic life also on the large scale it causes the species to extict under water. Fresh water fishes have disappeared in our water bodies due to much more use the herbicides. . Over 6000 amphibian's species were threatened. Atrazine affected the fishes and the frogs badly and a review also concluded that a thorough study is needed to estimate the hormonal effects of the atrazine on the aquatic life. Also the copper based herbicides are affecting the fish life badly and becoming the part of the food chain from there to onward till to human consumption..Herbicides leach down the ground water contaminates it, it proves very harmful for the aquatic life. Herbicides through leaching effects the aquatic ecosystems also causing the species extinction through the poisoning of the chemicals that are being used in it. Dicamba is toxic to mammals by ingestion or inhalation; it is also toxic to coldwater fishes when present in water bodies. Glyphosate was originally thought to have low ecological impacts, but is now known to have significant adverse impacts upon amphibians, fish, beneficial insects and nitrogen fixing bacteria.
Many aliphatics such as acrolein are strongly toxic to fish and wildlife. Amphibians are sensitive to many herbicides and their populations have experienced significant decline, and are known to have occasioned mutagenic and reproductive effects from herbicide exposure.
Habitat degradation and fragmentation are the greatest sources of amphibian population decline, but herbicides are important contributory factors to such habitat degradation. There are many mechanisms associated with herbicidal action upon amphibians including interference with enzyme activity and mutations, both of which reduce behavioral and reproductive fitness, and hence generally lead to amphibian population declines.
Herbicides may cause shift in weed population because of continuous use of certain chemical, chemicals of the same mechanism of action or family create selection pressure and development of weed races. Imbalance weeds population mainly when selective herbicides are used. Broad-leaf killers imbalance weed population toward dominance of narrow-leaved weeds and the opposite is true for narrow-leaved killers and broad-leaved proportions. Therefore, both types of herbicide groups should be occasionally complimented or alternated in the field. Herbicide residues in plant materials. Herbicides are absorbed by crop plants as well as by weeds. Certain herbicides are completely metabolized while others are not. Herbicide carry- over problem and limitation in crop rotation options. This problem may be easily observed with some long persistent herbicides. Some examples are urea and sufonyl-urea herbicides Herbicide resistant weeds. Resistance is the ability of a formerly susceptible plant population to survive herbicide doses above that were used to control the original plant population.The development of resistance become apparent only after several years of repeated application of the same herbicide and is usually characterized by plants that survive a dose several too many times viz 20 to 1000 times or even more greater than normally needed for commercially acceptable weed control. If the herbicide can no longer bind to its site of action, it no longer has an inhibitory effect. Occasionally, differential metabolism, uptake, availability or movement will be responsible for the development of resistant.
Crop injury may be due to direct or indirect exposure of crop plants to herbicide molecules. Herbicide treated crop may show signs of herbicide injuries that may or may not recover from.
This is mostly related to herbicide rate of application, form used, surfactant added, time of application relative to crop physiological or morphological stages or prevailing climatic conditions at spray time. Herbicide persistence in environment may be in relation to half life of the herbicide and its rate of degradation in the environment. Certain herbicides have long half-life and persist in the environment for a long period of time that limits agricultural land uses. These however, may be traced in the soil, air, surrounding environment, ground water and even agricultural products and may become a serious threat to public health. Therefore, these chemicals should be avoided, highly restricted and only applied in absence of other alternatives and when are extremely needed.
Chemical herbicides can minimize the invading weeds but its effects on the surrounding cannot be neglected because the effects are very harsh. Some said its effect going to take another 50 years to overcome but the developing countries by ignoring all these realities are still using them and effect going to take even more than 75 coming years to overcome.
Next Vegetable Production Using Sewage Water- A threat or Need of Time?


The FBI is investigating a deadly weekend stabbing at the University of Maryland to determine whether it was a hate crime, law enforcement officials said Sunday.
University of Maryland student Sean Christopher Urbanski, 22, of Severna Park, Md., faces charges of first- and second-degree murder as well as first-degree assault after he allegedly attacked Bowie State University student Richard Collins III.
According to charging documents, Collins was waiting for an Uber with two friends on the College Park campus at around 3 a.m. Saturday when a screaming Urbanski approached the group screaming, "Step left, step left if you know what's best for you."
According to the documents, Collins said "no" and was stabbed in the chest with a folding knife. Urbanski was arrested at the scene after several witnesses identified him. Police said the suspect had been drinking.
University of Maryland Police Chief David Mitchell told a news conference Sunday evening that he had called in the FBI after learning that Urbanski was a member of a Facebook group called "Alt-Reich: Nation," where members leave racially charged posts.
Urbanski is white and Collins was black.
"We are here to evaluate that as an ongoing concern with respect to whether or not this was a hate crime," Gordon Johnson, special agent in charge of the FBI Field Office in Baltimore, told reporters.
Mitchell also told reporters that Collins was a senior at Bowie State and was set to graduate on Tuesday. Collins was recently commissioned as a second lieutenant in the U.S. Army.
Brian Douglas, who recently became close to Collins when they took a class together, said the man was looking forward to graduation.
"He was just nice, just a good young man all around. You can't find those too often in today's society," Douglas said.
"Everyone is in disbelief," she said. "He seemed so excited to get to live his life and he doesn't have that chance anymore," she said.
University of Maryland President Wallace Loh led students and their families in a moment of silence during Sunday's graduation ceremony.
The two universities are approximately 12 miles apart.


text:
Herc Holdings to Acquire Texas-based CBS Rentals
August 17, 2021 08:00 AM Eastern Daylight Time
BONITA SPRINGS, Fla.--(BUSINESS WIRE)--Herc Holdings Inc. (NYSE: HRI), a leading North American equipment rental supplier operating as Herc Rentals Inc., announced today that it has entered a purchase agreement to acquire substantially all the assets of Texas-based CBS Rentals (CBS). The transaction, which is subject to customary closing conditions and regulatory approvals, is expected to close prior to the end of 2021. Terms were not disclosed.
CBS is a full-service general equipment rental company comprising approximately 190 employees and 12 locations serving construction and industrial customers throughout Texas, as well as locations in Carlsbad, NM, and Kingsport, TN. The addition of CBS expands Herc Rentals' presence in Texas — one of the largest equipment rental markets in North America — to 38 physical locations, which collectively provide general and specialty equipment rental solutions and related services.
"I look forward to welcoming CBS Rentals to Team Herc," said Larry Silber, president and chief executive officer. "Like Herc Rentals, CBS has more than 56 years of history, substantial equipment rental experience and a strong reputation for exceptional customer service, top-quality equipment and operational excellence."
"Our combined teams and resources position Herc Rentals to be a preeminent equipment rental partner across Texas serving a diverse mix of construction, industrial and government customers. With many of its locations in major metropolitan markets, the addition of CBS supports our long-term strategy to achieve greater density and scale in select urban markets across North America to better serve both our local and national customers."
"We expect the acquisition to be accretive to earnings in the first year. We remain well positioned to pursue growth through a variety of initiatives, including investment in key fleet categories, greenfield branches and acquired operations, while maintaining our commitment to a sound financial footing."
About Herc Holdings Inc.
Herc Holdings Inc., which operates through its Herc Rentals Inc. subsidiary, is one of the leading equipment rental suppliers with approximately 280 locations in North America. With over 55 years of experience, we are a full-line equipment rental supplier offering a broad portfolio of equipment for rent. Our classic fleet includes aerial, earthmoving, material handling, trucks and trailers, air compressors, compaction and lighting. Our equipment rental business is supported by ProSolutions®, our industry-specific solutions-based services, which includes power generation, climate control, remediation and restoration, and studio and production equipment, and our ProContractor professional grade tools. Our product offerings and services are aimed at helping customers work more efficiently, effectively and safely. The Company has approximately 4,800 employees who equip our customers and communities to build a brighter future. Herc Holdings' 2020 total revenues were approximately $1.8 billion. For more information on Herc Holdings and its products and services, visit: www.HercRentals.com.
This press release includes forward-looking statements as that term is defined by the federal securities laws, including statements concerning our business, our growth strategy, the timing of the transaction, and the impact the acquisition will have on our business and our earnings. Forward looking statements are generally identified by the words "estimates," "expects," "anticipates," "projects," "plans," "intends," "believes," "forecasts," and future or conditional verbs, such as "will," "should," "could" or "may," as well as variations of such words or similar expressions. All forward-looking statements are based upon our current expectations and various assumptions and, there can be no assurance that our current expectations will be achieved. They are subject to future events, risks and uncertainties - many of which are beyond our control - as well as potentially inaccurate assumptions, that could cause actual results to differ materially from those in the forward-looking statements. Further information on the risks that may affect our business is included in filings we make with the Securities and Exchange Commission from time to time, including our most recent annual report on Form 10-K, subsequent quarterly reports on Form 10-Q, and in our other SEC filings. We undertake no obligation to update or revise forward-looking statements that have been made to reflect events or circumstances that arise after the date made or to reflect the occurrence of unanticipated events.
Paul Dickard
Vice President, Communications
paul.dickard@hercrentals.com
Elizabeth Higashi, CFA
Vice President, Investor Relations & Sustainability
elizabeth.higashi@hercrentals.com


text:
package com.trifork.hotruby.classes;
import com.trifork.hotruby.objects.IRubyObject;
import com.trifork.hotruby.objects.RubyClass;
import com.trifork.hotruby.objects.RubyTime;
import com.trifork.hotruby.runtime.LoadedRubyRuntime;
import com.trifork.hotruby.runtime.MetaClass;
import com.trifork.hotruby.runtime.RubyMethod;
import com.trifork.hotruby.runtime.Selector;
public abstract class RubyBaseClassTime
	extends RubyClass
{
	static public RubyClassTime instance;
	public void init(MetaClass meta) {
		instance = (RubyClassTime)this;
		super.init(meta);
	}
	public interface SelectTime { RubyMethod get_RubyClassTime(); }
	public RubyMethod select(Selector sel) {
		if(sel instanceof SelectTime) { return ((SelectTime)sel).get_RubyClassTime(); }
		else { return LoadedRubyRuntime.resolve_method((RubyClass)this,sel,SelectTime.class); }
	}
	public RubyClass get_class() { return RubyClassClass.instance; }
	public IRubyObject newInstance() { return new RubyTime(); }
}

redpajama_set_name: RedPajamaGithub


The company was founded in 1939 by one of the biggest names in the world of car manufacturing, Enzo Ferrari.
With headquarters in Italy and the Netherlands, the company employs over 3,000 people nowadays but Enzo Ferrari's original idea was that he was not interested in producing road cars.
The famous badge of Ferrari appeared in 1947 when a 125 S, powered by a 1.5 L V12 engine was produced.
The famous symbol of Ferrari - the "prancing horse" - is a black prancing stallion on a yellow shield, usually with the letters S F (for Scuderia Ferrari), with three stripes of green, white and red for the national colours of Italy at the top. The road cars have a slightly different rectangular badge.
As reported in 2018, the total of Ferrari cars built and sold in the whole company history was estimated at about 190,000 and this included a 1962 250 GTO which was built for Sterling Moss, although he never raced in the car. In 2012, the car became the most expensive car in history, selling in a private transaction for $38.1 million.
Ferrari is also the most successful racing team in Formula one, producing 15 championship drivers and 16 constructor championships.
The Ferrari logo is copyright of Ferrari and their respective owners.


text:
16 Star Flag -unofficial- (U.S.)
Last modified: 2015-05-09 by rick wyatt
Keywords: sixteen | united states | unofficial |
image by Devereaux Cannon and Dave Martucci, 3 July 1998
Description of the flag
History of the Stars and Stripes
U.S. Flags With Unofficial Number of Stars
Q: What is the 16 stripe and 16 star flag?
In 1795 the U.S. flag law changed to have the flag go from 13 stars and stripes to 15 stars and stripes. However, no provision was made for recognizing the entry of new States into the union.
In 1796 Tennessee entered as the 16th State. Despite the lack of a change in the flag law, some people added additional stars and stripes to the flag. This is what eventually lead to the flag act of 1818. In 1817, during a debate in Congress on changing the flag law, Congressman Peter Wendover of New York discussed the lack of uniformity among U.S. flags, and the lack of compliance with the law in their use. As illustrations, he pointed to the flag over the U.S. Navy Yard, which had 9 stripes, and the flag flying over the capitol building, which had 18.
In 1995 I had two replicas made of a flag with 16 stars and stripes. The larger of the two, measuring 5 x 9.5 feet, flew over the Tennessee capitol on 6 February 1996 (the 200th anniversary of the adoption of the first Tennessee constitution) and on 1 June 1996 (the 200th anniversary of the admission of Tennessee to the union). It is the flag which I will fly on my main flag pole on the 4th.
Devereaux D. Cannon, Jr., 2 July 1998
For a time, the 16 star flag was officially used by the US Navy. This was, however, when there are more than 16 states. In the 1850, and until about 1862, US Navy boat flags had only 16 stars arrange in a 4 star by 4 star square. (These flags had the usual 13 stripes of the period.) It is unknown exactly when this practice began, or why 16 stars. In about 1862 the went to a 13 star boat flag (usually arranged 4/5/4 until about 1870 when the 3/2/3/2/3 pattern began to be used).
Devereaux Cannon, 9 December 2003