text:
// Package migration provides the primitives for migration in LXD.
//
// See https://github.com/lxc/lxd/blob/master/specs/migration.md for a complete
// description.

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
	"os"
	"path/filepath"
	"strconv"
	"strings"
	"sync"

	"github.com/golang/protobuf/proto"
	"github.com/gorilla/websocket"
	"gopkg.in/lxc/go-lxc.v2"

	"github.com/lxc/lxd"
	"github.com/lxc/lxd/shared"
)

type migrationFields struct {
	live bool

	controlSecret string
	controlConn   *websocket.Conn
	controlLock   sync.Mutex

	criuSecret string
	criuConn   *websocket.Conn

	fsSecret string
	fsConn   *websocket.Conn

	container container
}

func (c *migrationFields) send(m proto.Message) error {
	/* gorilla websocket doesn't allow concurrent writes, and
	 * panic()s if it sees them (which is reasonable). If e.g. we
	 * happen to fail, get scheduled, start our write, then get
	 * unscheduled before the write is bit to a new thread which is
	 * receiving an error from the other side (due to our previous
	 * close), we can engage in these concurrent writes, which
	 * casuses the whole daemon to panic.
	 *
	 * Instead, let's lock sends to the controlConn so that we only ever
	 * write one message at the time.
	 */
	c.controlLock.Lock()
	defer c.controlLock.Unlock()
	w, err := c.controlConn.NextWriter(websocket.BinaryMessage)
	if err != nil {
		return err
	}
	defer w.Close()

	data, err := proto.Marshal(m)
	if err != nil {
		return err
	}

	return shared.WriteAll(w, data)
}

func (c *migrationFields) recv(m proto.Message) error {
	mt, r, err := c.controlConn.NextReader()
	if err != nil {
		return err
	}

	if mt != websocket.BinaryMessage {
		return fmt.Errorf("Only binary messages allowed")
	}

	buf, err := ioutil.ReadAll(r)
	if err != nil {
		return err
	}

	return proto.Unmarshal(buf, m)
}

func (c *migrationFields) disconnect() {
	closeMsg := websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")

	c.controlLock.Lock()
	if c.controlConn != nil {
		c.controlConn.WriteMessage(websocket.CloseMessage, closeMsg)
		c.controlConn = nil /* don't close twice */
	}
	c.controlLock.Unlock()

	/* Below we just Close(), which doesn't actually write to the
	 * websocket, it just closes the underlying connection. If e.g. there
	 * is still a filesystem transfer going on, but the other side has run
	 * out of disk space, writing an actual CloseMessage here will cause
	 * gorilla websocket to panic. Instead, we just force close this
	 * connection, since we report the error over the control channel
	 * anyway.
	 */
	if c.fsConn != nil {
		c.fsConn.Close()
	}

	if c.criuConn != nil {
		c.criuConn.Close()
	}
}

func (c *migrationFields) sendControl(err error) {
	message := ""
	if err != nil {
		message = err.Error()
	}

	msg := MigrationControl{
		Success: proto.Bool(err == nil),
		Message: proto.String(message),
	}
	c.send(&msg)

	if err != nil {
		c.disconnect()
	}
}

func (c *migrationFields) controlChannel() <-chan MigrationControl {
	ch := make(chan MigrationControl)
	go func() {
		msg := MigrationControl{}
		err := c.recv(&msg)
		if err != nil {
			shared.LogDebugf("Got error reading migration control socket %s", err)
			close(ch)
			return
		}
		ch <- msg
	}()

	return ch
}

type migrationSourceWs struct {
	migrationFields

	allConnected chan bool
}

func NewMigrationSource(c container) (*migrationSourceWs, error) {
	ret := migrationSourceWs{migrationFields{container: c}, make(chan bool, 1)}

	var err error
	ret.controlSecret, err = shared.RandomCryptoString()
	if err != nil {
		return nil, err
	}

	ret.fsSecret, err = shared.RandomCryptoString()
	if err != nil {
		return nil, err
	}

	if c.IsRunning() {
		if err := findCriu("source"); err != nil {
			return nil, err
		}

		ret.live = true
		ret.criuSecret, err = shared.RandomCryptoString()
		if err != nil {
			return nil, err
		}
	}

	return &ret, nil
}

func (s *migrationSourceWs) Metadata() interface{} {
	secrets := shared.Jmap{
		"control": s.controlSecret,
		"fs":      s.fsSecret,
	}

	if s.criuSecret != "" {
		secrets["criu"] = s.criuSecret
	}

	return secrets
}

func (s *migrationSourceWs) Connect(op *operation, r *http.Request, w http.ResponseWriter) error {
	secret := r.FormValue("secret")
	if secret == "" {
		return fmt.Errorf("missing secret")
	}

	var conn **websocket.Conn

	switch secret {
	case s.controlSecret:
		conn = &s.controlConn
	case s.criuSecret:
		conn = &s.criuConn
	case s.fsSecret:
		conn = &s.fsConn
	default:
		/* If we didn't find the right secret, the user provided a bad one,
		 * which 403, not 404, since this operation actually exists */
		return os.ErrPermission
	}

	c, err := shared.WebsocketUpgrader.Upgrade(w, r, nil)
	if err != nil {
		return err
	}

	*conn = c

	if s.controlConn != nil && (!s.live || s.criuConn != nil) && s.fsConn != nil {
		s.allConnected <- true
	}

	return nil
}

func writeActionScript(directory string, operation string, secret string) error {
	script := fmt.Sprintf(`#!/bin/sh -e
if [ "$CRTOOLS_SCRIPT_ACTION" = "post-dump" ]; then
	%s migratedumpsuccess %s %s
fi
`, execPath, operation, secret)

	f, err := os.Create(filepath.Join(directory, "action.sh"))
	if err != nil {
		return err
	}
	defer f.Close()

	if err := f.Chmod(0500); err != nil {
		return err
	}

	_, err = f.WriteString(script)
	return err
}

func snapshotToProtobuf(c container) *Snapshot {
	config := []*Config{}
	for k, v := range c.LocalConfig() {
		kCopy := string(k)
		vCopy := string(v)
		config = append(config, &Config{Key: &kCopy, Value: &vCopy})
	}

	devices := []*Device{}
	for name, d := range c.LocalDevices() {
		props := []*Config{}
		for k, v := range d {
			kCopy := string(k)
			vCopy := string(v)
			props = append(props, &Config{Key: &kCopy, Value: &vCopy})
		}

		devices = append(devices, &Device{Name: &name, Config: props})
	}

	parts := strings.SplitN(c.Name(), shared.SnapshotDelimiter, 2)
	isEphemeral := c.IsEphemeral()
	arch := int32(c.Architecture())
	stateful := c.IsStateful()
	return &Snapshot{
		Name:         &parts[len(parts)-1],
		LocalConfig:  config,
		Profiles:     c.Profiles(),
		Ephemeral:    &isEphemeral,
		LocalDevices: devices,
		Architecture: &arch,
		Stateful:     &stateful,
	}
}

func (s *migrationSourceWs) Do(migrateOp *operation) error {
	<-s.allConnected

	criuType := CRIUType_CRIU_RSYNC.Enum()
	if !s.live {
		criuType = nil

		err := s.container.StorageStart()
		if err != nil {
			return err
		}

		defer s.container.StorageStop()
	}

	idmaps := make([]*IDMapType, 0)

	idmapset := s.container.IdmapSet()
	if idmapset != nil {
		for _, ctnIdmap := range idmapset.Idmap {
			idmap := IDMapType{
				Isuid:    proto.Bool(ctnIdmap.Isuid),
				Isgid:    proto.Bool(ctnIdmap.Isgid),
				Hostid:   proto.Int(ctnIdmap.Hostid),
				Nsid:     proto.Int(ctnIdmap.Nsid),
				Maprange: proto.Int(ctnIdmap.Maprange),
			}

			idmaps = append(idmaps, &idmap)
		}
	}

	driver, fsErr := s.container.Storage().MigrationSource(s.container)
	/* the protocol says we have to send a header no matter what, so let's
	 * do that, but then immediately send an error.
	 */
	snapshots := []*Snapshot{}
	snapshotNames := []string{}
	if fsErr == nil {
		fullSnaps := driver.Snapshots()
		for _, snap := range fullSnaps {
			snapshots = append(snapshots, snapshotToProtobuf(snap))
			snapshotNames = append(snapshotNames, shared.ExtractSnapshotName(snap.Name()))
		}
	}

	myType := s.container.Storage().MigrationType()
	header := MigrationHeader{
		Fs:            &myType,
		Criu:          criuType,
		Idmap:         idmaps,
		SnapshotNames: snapshotNames,
		Snapshots:     snapshots,
	}

	if err := s.send(&header); err != nil {
		s.sendControl(err)
		return err
	}

	if fsErr != nil {
		s.sendControl(fsErr)
		return fsErr
	}

	if err := s.recv(&header); err != nil {
		s.sendControl(err)
		return err
	}

	if *header.Fs != myType {
		myType = MigrationFSType_RSYNC
		header.Fs = &myType

		driver, _ = rsyncMigrationSource(s.container)
	}

	// All failure paths need to do a few things to correctly handle errors before returning.
	// Unfortunately, handling errors is not well-suited to defer as the code depends on the
	// status of driver and the error value.  The error value is especially tricky due to the
	// common case of creating a new err variable (intentional or not) due to scoping and use
	// of ":=".  Capturing err in a closure for use in defer would be fragile, which defeats
	// the purpose of using defer.  An abort function reduces the odds of mishandling errors
	// without introducing the fragility of closing on err.
	abort := func(err error) error {
		driver.Cleanup()
		s.sendControl(err)
		return err
	}

	if err := driver.SendWhileRunning(s.fsConn, migrateOp); err != nil {
		return abort(err)
	}

	restoreSuccess := make(chan bool, 1)
	dumpSuccess := make(chan error, 1)
	if s.live {
		if header.Criu == nil {
			return abort(fmt.Errorf("Got no CRIU socket type for live migration"))
		} else if *header.Criu != CRIUType_CRIU_RSYNC {
			return abort(fmt.Errorf("Formats other than criu rsync not understood"))
		}

		checkpointDir, err := ioutil.TempDir("", "lxd_checkpoint_")
		if err != nil {
			return abort(err)
		}

		if lxc.VersionAtLeast(2, 0, 4) {
			/* What happens below is slightly convoluted. Due to various
			 * complications with networking, there's no easy way for criu
			 * to exit and leave the container in a frozen state for us to
			 * somehow resume later.
			 *
			 * Instead, we use what criu calls an "action-script", which is
			 * basically a callback that lets us know when the dump is
			 * done. (Unfortunately, we can't pass arguments, just an
			 * executable path, so we write a custom action script with the
			 * real command we want to run.)
			 *
			 * This script then hangs until the migration operation either
			 * finishes successfully or fails, and exits 1 or 0, which
			 * causes criu to either leave the container running or kill it
			 * as we asked.
			 */
			dumpDone := make(chan bool, 1)
			actionScriptOpSecret, err := shared.RandomCryptoString()
			if err != nil {
				os.RemoveAll(checkpointDir)
				return abort(err)
			}

			actionScriptOp, err := operationCreate(
				operationClassWebsocket,
				nil,
				nil,
				func(op *operation) error {
					result := <-restoreSuccess
					if !result {
						return fmt.Errorf("restore failed, failing CRIU")
					}
					return nil
				},
				nil,
				func(op *operation, r *http.Request, w http.ResponseWriter) error {
					secret := r.FormValue("secret")
					if secret == "" {
						return fmt.Errorf("missing secret")
					}

					if secret != actionScriptOpSecret {
						return os.ErrPermission
					}

					c, err := shared.WebsocketUpgrader.Upgrade(w, r, nil)
					if err != nil {
						return err
					}

					dumpDone <- true

					closeMsg := websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")
					return c.WriteMessage(websocket.CloseMessage, closeMsg)
				},
			)
			if err != nil {
				os.RemoveAll(checkpointDir)
				return abort(err)
			}

			if err := writeActionScript(checkpointDir, actionScriptOp.url, actionScriptOpSecret); err != nil {
				os.RemoveAll(checkpointDir)
				return abort(err)
			}

			_, err = actionScriptOp.Run()
			if err != nil {
				os.RemoveAll(checkpointDir)
				return abort(err)
			}

			go func() {
				dumpSuccess <- s.container.Migrate(lxc.MIGRATE_DUMP, checkpointDir, "migration", true, true)
				os.RemoveAll(checkpointDir)
			}()

			select {
			/* the checkpoint failed, let's just abort */
			case err = <-dumpSuccess:
				return abort(err)
			/* the dump finished, let's continue on to the restore */
			case <-dumpDone:
				shared.LogDebugf("Dump finished, continuing with restore...")
			}
		} else {
			defer os.RemoveAll(checkpointDir)
			if err := s.container.Migrate(lxc.MIGRATE_DUMP, checkpointDir, "migration", true, false); err != nil {
				return abort(err)
			}
		}

		/*
		 * We do the serially right now, but there's really no reason for us
		 * to; since we have separate websockets, we can do it in parallel if
		 * we wanted to. However, assuming we're network bound, there's really
		 * no reason to do these in parallel. In the future when we're using
		 * p.haul's protocol, it will make sense to do these in parallel.
		 */
		if err := RsyncSend(shared.AddSlash(checkpointDir), s.criuConn, nil); err != nil {
			return abort(err)
		}

		if err := driver.SendAfterCheckpoint(s.fsConn); err != nil {
			return abort(err)
		}
	}

	driver.Cleanup()

	msg := MigrationControl{}
	if err := s.recv(&msg); err != nil {
		s.disconnect()
		return err
	}

	if s.live {
		restoreSuccess <- *msg.Success
		err := <-dumpSuccess
		if err != nil {
			shared.LogErrorf("dump failed after successful restore?: %q", err)
		}
	}

	if !*msg.Success {
		return fmt.Errorf(*msg.Message)
	}

	return nil
}

type migrationSink struct {
	// We are pulling the container from src in pull mode.
	src migrationFields
	// The container is pushed from src to dest in push mode. Note that
	// websocket connections are not set in push mode. Only the secret
	// fields are used since the client will connect to the sockets.
	dest migrationFields

	url          string
	dialer       websocket.Dialer
	allConnected chan bool
	push         bool
}

type MigrationSinkArgs struct {
	Url       string
	Dialer    websocket.Dialer
	Container container
	Secrets   map[string]string
	Push      bool
	Live      bool
}

func NewMigrationSink(args *MigrationSinkArgs) (*migrationSink, error) {
	sink := migrationSink{
		src:    migrationFields{container: args.Container},
		url:    args.Url,
		dialer: args.Dialer,
		push:   args.Push,
	}

	if sink.push {
		sink.allConnected = make(chan bool, 1)
	}

	var ok bool
	var err error
	if sink.push {
		sink.dest.controlSecret, err = shared.RandomCryptoString()
		if err != nil {
			return nil, err
		}

		sink.dest.fsSecret, err = shared.RandomCryptoString()
		if err != nil {
			return nil, err
		}

		sink.dest.live = args.Live
		if sink.dest.live {
			sink.dest.criuSecret, err = shared.RandomCryptoString()
			if err != nil {
				return nil, err
			}
		}
	} else {
		sink.src.controlSecret, ok = args.Secrets["control"]
		if !ok {
			return nil, fmt.Errorf("Missing control secret")
		}

		sink.src.fsSecret, ok = args.Secrets["fs"]
		if !ok {
			return nil, fmt.Errorf("Missing fs secret")
		}

		sink.src.criuSecret, ok = args.Secrets["criu"]
		sink.src.live = ok
	}

	err = findCriu("destination")
	if sink.push && sink.dest.live && err != nil {
		return nil, err
	} else if sink.src.live && err != nil {
		return nil, err
	}

	return &sink, nil
}

func (c *migrationSink) connectWithSecret(secret string) (*websocket.Conn, error) {
	query := url.Values{"secret": []string{secret}}

	// The URL is a https URL to the operation, mangle to be a wss URL to the secret
	wsUrl := fmt.Sprintf("wss://%s/websocket?%s", strings.TrimPrefix(c.url, "https://"), query.Encode())

	return lxd.WebsocketDial(c.dialer, wsUrl)
}

func (s *migrationSink) Metadata() interface{} {
	secrets := shared.Jmap{
		"control": s.dest.controlSecret,
		"fs":      s.dest.fsSecret,
	}

	if s.dest.criuSecret != "" {
		secrets["criu"] = s.dest.criuSecret
	}

	return secrets
}

func (s *migrationSink) Connect(op *operation, r *http.Request, w http.ResponseWriter) error {
	secret := r.FormValue("secret")
	if secret == "" {
		return fmt.Errorf("missing secret")
	}

	var conn **websocket.Conn

	switch secret {
	case s.dest.controlSecret:
		conn = &s.dest.controlConn
	case s.dest.criuSecret:
		conn = &s.dest.criuConn
	case s.dest.fsSecret:
		conn = &s.dest.fsConn
	default:
		/* If we didn't find the right secret, the user provided a bad one,
		 * which 403, not 404, since this operation actually exists */
		return os.ErrPermission
	}

	c, err := shared.WebsocketUpgrader.Upgrade(w, r, nil)
	if err != nil {
		return err
	}

	*conn = c

	if s.dest.controlConn != nil && (!s.dest.live || s.dest.criuConn != nil) && s.dest.fsConn != nil {
		s.allConnected <- true
	}

	return nil
}

func (c *migrationSink) Do(migrateOp *operation) error {
	var err error

	if c.push {
		<-c.allConnected
	}

	disconnector := c.src.disconnect
	if c.push {
		disconnector = c.dest.disconnect
	}

	if c.push {
		defer disconnector()
	} else {
		c.src.controlConn, err = c.connectWithSecret(c.src.controlSecret)
		if err != nil {
			return err
		}
		defer c.src.disconnect()

		c.src.fsConn, err = c.connectWithSecret(c.src.fsSecret)
		if err != nil {
			c.src.sendControl(err)
			return err
		}

		if c.src.live {
			c.src.criuConn, err = c.connectWithSecret(c.src.criuSecret)
			if err != nil {
				c.src.sendControl(err)
				return err
			}
		}
	}

	receiver := c.src.recv
	if c.push {
		receiver = c.dest.recv
	}

	sender := c.src.send
	if c.push {
		sender = c.dest.send
	}

	controller := c.src.sendControl
	if c.push {
		controller = c.dest.sendControl
	}

	header := MigrationHeader{}
	if err := receiver(&header); err != nil {
		controller(err)
		return err
	}

	live := c.src.live
	if c.push {
		live = c.dest.live
	}

	criuType := CRIUType_CRIU_RSYNC.Enum()
	if !live {
		criuType = nil
	}

	mySink := c.src.container.Storage().MigrationSink
	myType := c.src.container.Storage().MigrationType()
	resp := MigrationHeader{
		Fs:   &myType,
		Criu: criuType,
	}

	// If the storage type the source has doesn't match what we have, then
	// we have to use rsync.
	if *header.Fs != *resp.Fs {
		mySink = rsyncMigrationSink
		myType = MigrationFSType_RSYNC
		resp.Fs = &myType
	}

	if err := sender(&resp); err != nil {
		controller(err)
		return err
	}

	restore := make(chan error)
	go func(c *migrationSink) {
		imagesDir := ""
		srcIdmap := new(shared.IdmapSet)

		for _, idmap := range header.Idmap {
			e := shared.IdmapEntry{
				Isuid:    *idmap.Isuid,
				Isgid:    *idmap.Isgid,
				Nsid:     int(*idmap.Nsid),
				Hostid:   int(*idmap.Hostid),
				Maprange: int(*idmap.Maprange)}
			srcIdmap.Idmap = shared.Extend(srcIdmap.Idmap, e)
		}

		/* We do the fs receive in parallel so we don't have to reason
		 * about when to receive what. The sending side is smart enough
		 * to send the filesystem bits that it can before it seizes the
		 * container to start checkpointing, so the total transfer time
		 * will be minimized even if we're dumb here.
		 */
		fsTransfer := make(chan error)
		go func() {
			snapshots := []*Snapshot{}

			/* Legacy: we only sent the snapshot names, so we just
			 * copy the container's config over, same as we used to
			 * do.
			 */
			if len(header.SnapshotNames) != len(header.Snapshots) {
				for _, name := range header.SnapshotNames {
					base := snapshotToProtobuf(c.src.container)
					base.Name = &name
					snapshots = append(snapshots, base)
				}
			} else {
				snapshots = header.Snapshots
			}

			var fsConn *websocket.Conn
			if c.push {
				fsConn = c.dest.fsConn
			} else {
				fsConn = c.src.fsConn
			}
			if err := mySink(live, c.src.container, header.Snapshots, fsConn, srcIdmap, migrateOp); err != nil {
				fsTransfer <- err
				return
			}

			if err := ShiftIfNecessary(c.src.container, srcIdmap); err != nil {
				fsTransfer <- err
				return
			}

			fsTransfer <- nil
		}()

		if live {
			var err error
			imagesDir, err = ioutil.TempDir("", "lxd_restore_")
			if err != nil {
				restore <- err
				return
			}

			defer os.RemoveAll(imagesDir)

			var criuConn *websocket.Conn
			if c.push {
				criuConn = c.dest.criuConn
			} else {
				criuConn = c.src.criuConn
			}
			if err := RsyncRecv(shared.AddSlash(imagesDir), criuConn, nil); err != nil {
				restore <- err
				return
			}
		}

		err := <-fsTransfer
		if err != nil {
			restore <- err
			return
		}

		if live {
			err = c.src.container.Migrate(lxc.MIGRATE_RESTORE, imagesDir, "migration", false, false)
			if err != nil {
				restore <- err
				return
			}

		}

		restore <- nil
	}(c)

	var source <-chan MigrationControl
	if c.push {
		source = c.dest.controlChannel()
	} else {
		source = c.src.controlChannel()
	}

	for {
		select {
		case err = <-restore:
			controller(err)
			return err
		case msg, ok := <-source:
			if !ok {
				disconnector()
				return fmt.Errorf("Got error reading source")
			}
			if !*msg.Success {
				disconnector()
				return fmt.Errorf(*msg.Message)
			} else {
				// The source can only tell us it failed (e.g. if
				// checkpointing failed). We have to tell the source
				// whether or not the restore was successful.
				shared.LogDebugf("Unknown message %v from source", msg)
			}
		}
	}
}

/*
 * Similar to forkstart, this is called when lxd is invoked as:
 *
 *    lxd forkmigrate <container> <lxcpath> <path_to_config> <path_to_criu_images> <preserves_inodes>
 *
 * liblxc's restore() sets up the processes in such a way that the monitor ends
 * up being a child of the process that calls it, in our case lxd. However, we
 * really want the monitor to be daemonized, so we fork again. Additionally, we
 * want to fork for the same reasons we do forkstart (i.e. reduced memory
 * footprint when we fork tasks that will never free golang's memory, etc.)
 */
func MigrateContainer(args []string) error {
	if len(args) != 6 {
		return fmt.Errorf("Bad arguments %q", args)
	}

	name := args[1]
	lxcpath := args[2]
	configPath := args[3]
	imagesDir := args[4]
	preservesInodes, err := strconv.ParseBool(args[5])

	c, err := lxc.NewContainer(name, lxcpath)
	if err != nil {
		return err
	}

	if err := c.LoadConfigFile(configPath); err != nil {
		return err
	}

	/* see https://github.com/golang/go/issues/13155, startContainer, and dc3a229 */
	os.Stdin.Close()
	os.Stdout.Close()
	os.Stderr.Close()

	return c.Migrate(lxc.MIGRATE_RESTORE, lxc.MigrateOptions{
		Directory:       imagesDir,
		Verbose:         true,
		PreservesInodes: preservesInodes,
	})
}

redpajama_set_name: RedPajamaGithub


text:
Government as the Ultimate Risk Manager
David A. Moss
One of the most important functions of government—risk management—is one of the least well understood. Moving beyond the most familiar public functions—spending, taxation, and regulation—When All Else Fails spotlights the government's pivotal role as a risk manager. It reveals, as never before, the nature and extent of this governmental function, which touches almost every aspect of economic life.
In policies as diverse as limited liability, deposit insurance, Social Security, and federal disaster relief, American lawmakers have managed a wide array of private-sector risks, transforming both the government and countless private actors into insurers of last resort. Drawing on history and economic theory, David Moss investigates these risk-management policies, focusing in particular on the original logic of their enactment. The nation's lawmakers, he finds, have long believed that pervasive imperfections in private markets for risk necessitate a substantial government role. It remains puzzling, though, why such a large number of the resulting policies have proven so popular in a country famous for its anti-statism. Moss suggests that the answer may lie in the nature of the policies themselves, since publicly mandated risk shifting often requires little in the way of invasive bureaucracy. Well suited to a society suspicious of government activism, public risk management has emerged as a critical form of government intervention in the United States.
Published by Harvard University Press
Praise for When All Else Fails
David Moss…offers a novel perspective on the extraordinary expansion of government. Where once it confined its remit to the bare essentials of defense, internal security and the enforcement of private-property rights, today's leviathan spreads into every corner of national life, not just by taxing and spending but also by regulating. Much of the growth, Mr. Moss argues, has come from the state's unique ability to reallocate risk. Government has expanded its reach because it is the ultimate risk manager…. [An] enlightening book.
Moss examines public policy attempts to either spread or shift the burden of risk from a favored group to others by tracing major US social reform movements…. Given the antistatist nature of American democracy, Moss concludes that government's redistribution of various risks of its favored citizens has served as a substitute for a more significant redistribution of income. Readers interested in the historical roots of American institutions should find this book a treat.
— R. Kelly, Choice
This is a useful and worthwhile book for anybody interested in the evolution of U.S. government risk management or effective policy design. Professor David Moss argues that the U.S. government has since its inception acted as a manager of risk due to its unique ability to enforce action…. Moss deserves congratulations for showing government policy to be more than self-interested rent seeking and for revealing the reasoning behind government risk management—a recommended book.
— Thomas Kemp, Journal of Economic Issues
This is an important book… Moss combines the insights of economics, history, law, and political science to create a new framework for understanding government… His risk management framework cuts through the liberal/conservative debate in U.S. politics because it demonstrates continuities where others have seen only divides.
— Tom Baker, University of Connecticut
David Moss's book makes an innovative and persuasive contribution to the history of regulation and social policy in the United States…. This is a major work in the field.
— John Coatsworth, Harvard University
This is an important book that should reshape public debate on the relationship between governments and private markets… It should penetrate Washington as well as Cambridge, should spur debate in Regulation as well as the Journal of Political Economy, and should be read by George W. Bush as well as students in courses on political economy and on business government relations…. The time is certainly right.
— Kenneth A. Oye, Massachusetts Institute of Technology
When All Else Fails very effectively explores the search for protection from the risks of modern life… We need more books like this that seamlessly combine economics and political analysis to help us understand the history of important areas of public policy.
— Harvey M. Sapolsky, Massachusetts Institute of Technology
I am very enthusiastic about this book since I have learned so much from it about the origins of our economic institutions and about the fundamental principles by which our government creates value for society. It is a profoundly enlightening book.
— Robert J. Shiller, author of Irrational Exuberance
When All Else Fails is a dazzling and bold new intellectual history of the relation between government and the economy in the United States… Like John Kenneth Galbraith, Moss has a gift for making economics and finance come alive…. He could well turn out to be one of our leading public intellectuals in addition to being a first-rate scholar.
— Deborah Stone, Brandeis University

redpajama_set_name: RedPajamaCommonCrawl


To prevent frizz and static buildup on wavy, curly and coiled hair, the DevaTowel is made with 100 percent hypoallergenic, lint-free and fade-resistant microfiber that dries curls while accentuating their shape. After stepping out of the shower, scrunch hair with the towel upward for frizz-free, hydrated curls and decreased drying time. It also features a hanging loop for convenient storage.
For more information, visit devacurl.com.


Dylan Marr (Instagram Star ) was born in Wisconsin on a Saturday, August 10, 2002 . Dylan Marr is 16 years old. He is a Leo and was born in the Year of the Horse .
Instagram personality who rose to fame by posting videos of himself and his friends performing stunts on trampolines. Through his use of the platform he has amassed over 30,000 followers.
Discover real Dylan Marr facts, biography, date of birth, and related news below.
Dylan Marr is a Instagram Star. Dylan was born in 2000s, in the middle of Generation Z generation. He is from Wisconsin. His oldest archived Instagram photo was dated June 20, 2014.
DID YOU KNOW He was sponsored by the Cool OMG athletic clothing line.
FACT He and Jake Breshears both built social media followings by publishing trampoline stunt content.
SEE ALSO Dylan Marr's net worth as of 2019.
Currently, Dylan Marr is 16 years old. His next birthday is away. Dylan will celebrate his 17th birthday on a Saturday, August 10th. He shares a birthday with everyone who was born on August 10, 2002. Below we countdown to his upcoming birthday.
Dylan Marr's zodiac sign is Leo. Leo ruling planet is Sun. Those born under the zodiac sign of Leo are natural born leaders. They are dramatic, creative, self-confident, dominant and extremely difficult to resist, able to achieve anything they want to in any area of life they commit to. There is a specific strength to a Leo and their "king of the jungle" status.
Dylan Marr was born in the Year of the Horse. The Horse is the seventh of the 12-year cycle of animals which appear in the Chinese zodiac related to the Chinese calendar. People born under this sign are warm-hearted, enthusiastic, and positive, but sometimes they're overly frank with others. This year is the Year of the Pig.
Dylan Marr is a 16 years old Instagram Star, who was born in August, in the Year of the Horse (2002) and is a Leo. His life path number is 2002. Dylan's birthstone is Peridot and Sardonyx and birth flower is Gladiolus.
Find out is Dylan Marr dating anyone right now and who at CelebsCouples.
We will continue to update this page with new Dylan Marr facts and relevant news. Please contact us if you have a celebrity tip or find a mistake.


Review Summary: Home sweet home.
There exists an age old dilemma; is knowledge that is shallow and wide superior, or is having a deeper yet narrowed focus the better option" Concept albums take the latter side of such a debate and argue that exploring a fixed subject in greater detail is truly the correct path to take. In this case, however, Stone Sour shouldered the responsibility of creating two consecutive albums sharing the same concept. Based upon a short-story penned by vocalist Corey Taylor, the tracks contained on this LP serve as an aural accompaniment to the printed journey, which is included in the album booklet. Both the story and the tracks have been split between the two releases, so as to further intensify the desire to continue; increasing the listeners curiosity until they almost need to hear the second part and therefore content themselves with a feeling of closure.
Introducing this, the first album, are the dual-singles Gone Sovereign and Absolute Zero which appear back to back, mirroring the apparent partnership during the initial release. Gone Sovereign is a heavy, rock number that beautifully entices the listener further into the fabricated world it so deftly describes. Mounting synths begin the track. These abruptly give way to subdued vocals, superimposed over a dual-guitar heavy-chugging assault courtesy of Josh Rand and James Root. Once it takes flight, Gone Sovereign soars, interspersed with guitar solos, catchy vocal melodies and rapid drumming. The ending of this track bleeds into the beginning of the next; creating the quasi-illusion of a single, longer track. The theme recurs sparingly throughout the album and effectively acts to tie the album together, creating a single, cohesive work of musical art.
The first three tracks are masterpieces of the hard-rock genre, effectively creating an intriguing atmosphere that compliments the story perfectly, almost in a movie-soundtrack method. Acoustic ballad The Travellers Pt. 1 exhibits a darker, more sombre mood than the preceding tracks, despite its lack of powerful electric guitars. It relies on a more subtle approach, which includes the brilliant application of a string arrangement in the background, transitioning in and out of focus. Violins, violas and cellos abound, bestowing upon the track an ethereal edge and restrained beauty. Corey's melancholy vocals convey the sorrow of a broken man, with lyrics which reflect the theme effectively. Corey has always been a decent lyricist for the most part, even though his career in Slipknot has been much less demanding on that front. However, throughout this release, Corey expands on his writing; musically, lyrically and literarily. Following track Tired expands on the themes of the track before it, including the use of strings and the despairing lyrical matter. The major difference is that the powerful drumming and reverberating electric guitars are back.
The heaviest track on the album is also the next in the sequence. RU486 begin with a strange sample that issues a string of instruction to the listener, directly related to the album itself. The title of the track correlates with a drug of the same name, and the directions given in the beginning by the male narrator suggests that the album as a whole should be taken as a narcotic. However, despite the sedate introduction and title, the song itself is the heaviest, the fastest and also boasts the most use of Corey's harsh vocal style than any other track on the disc. There are also periodic gang-vocals in the background of the chorus which add another layer of excitement to the formula.
Although the majority of the album consists of dominant hard-rock songs, there is certainly a charming diversity between them that keeps each track fresh and exciting. Apart from the unique song-writing, though, there are some very different tracks that effectively break up the album and eliminate any possible monotony. The aforementioned The Travellers Pt. 1 is completely blown out of the water when compared to ballad highlight Taciturn which has a devastating beauty about it that demands full attention. The blend of acoustic and electric guitars, mixed with the ever-present vocals leaves the track feeling simplistic, yet all the more effective because of it. The Travellers Pt. 2 takes all the components that made its first outing breezily dark and dips them in the black heart of an oil well. Corey's voice wavers with sorrow; the whole tone of the track is sublimely dark, leaving the rest of the album pale in comparison, thematically of course. The lyrics are hopeless in nature and content; it also borrows phrases from the first part and changes them and twists them so that they seem even more forlorn. Despite its brevity, the impact of the song is immense. Corey shows another side of himself here, featuring a piano melody that structures the entire song.
This album does possess a number of faults, even though they are quite minor. Influence of a Drowzy God does not live up to the grandiose visions its name suggests. It's not necessarily a bad track; it just seems to be aimless and a tad repetitive. It's placement also seems strange, segueing from the glory of Taciturn and appearing before the dark, piano driven sequel to The Travellers it is the only track on the album that doesn't really belong anywhere. The rest of the LP flows and the tracks complement each other commendably, but you reach the final few tracks of the album and the flow is broken by the awkward placing of Influence of a Drowzy God. Also, although the songs are unique in themselves, the recurring themes between them tend to be quite closely related. Naturally for a concept of this kind, the subject matter is not going to be extremely diverse, but some kind of deviation away from the main concept would have been welcomed. Closing track Last of the Real ends the album on a heavy number. It arrives, it rocks, and then it ends after only 3 minutes. As far as closers go, this leaves it wide open. Again, the track itself is quite good and the aggressive attitude is a welcome addition to the album, but there is no finality to it. After the slower pace of the 3 preceding tracks, the sudden explosive power is not really the most effective way to say; "That's all for now, relax and we'll see you sometime next year". It gets the listener ready for more now. Maybe that was the point though, seeing as how there is a second half to this concept album. Leaving it open like that is perhaps Stone Sour's way of connecting the two parts together.
The production on this album is pristine, with everything from the strings, to the piano, to bass guitar of Rachel Bolan, it all sounds fantastic. David Bottrill has made a commendable effort in perfecting this album's diverse range of sounds and making them appear their absolute best. Whoever was in charge of track arrangement should also be applauded, for the order of the tracks is fantastic, apart from the misplacement of Influence of a Drowzy God. Stone Sour have truly crafted an amazing album that rivals any of their previous releases for best album they have done up until this point. The album and concept are unlike anything the band has attempted previously and the only thing left to say is; congratulations.
Well, this took a while to write. Review criticisms and comments are welcomed as always.
Grat review, love this album.
Pretty lengthy but it is a detailed review. Also going with the underlining the songs, there's no need to bold the band name either. You can just leave it as is.
Nice review. One of the modern hard rock albums done very well.
I prefer Corey Taylor's vocal work in Stone Sour over Slipknot. Good review. pos'd.
Me and my friend were taking today about how great these albums are, listening to them again now and yeah they'r pretty much the best thing Corey has done along with Vol 3.
The tracks from Hydrograd have been enjoyable enough, I'm sure it'll be a solid album.


Whether you have a private sports field, large areas of grass or a pitch for sport, we can help you with irrigation and automatic watering systems for sports fields.
Why not contact us today and let us demonstrate our experience with sports pitch watering and irrigation.
To ensure the best quality playing surface for your football team – whether you are a local team, non-league football team, or a full-time league team looking for consultancy or advice on football pitch irrigation, we can help.
Our understanding of watering and irrigation will ensure that your team have the best pitch conditions for every match and that your football pitch remains in a good condition all season long.
The same applies to non-league and league Rugby teams. If your rugby pitch irrigation requires automated watering systems, or if you need advice how to ensure the quality of the playing surface, why not contact our experience irrigation consultants for an initial chat?


text:
Q: Having trouble returning a 2D array from Google script to use in my HTML I'm trying to return a 2D array from a google spreadsheet using this:
function getData(){
      //this function reads data from the sheet and retuns a 2D array
          var spreadsheetID = //spreadsheet ID;
          var range = 'SchoolData!A2:B';
          var data =
          SpreadsheetApp.openById(spreadsheetID).getRange(range).getValues();
          return data;
     }

The returned data should be processed in the compareID() function upon submission of my HTML form.
    <input type="submit" value="Submit" onclick= "authorise()">

    function authorise(){
        alert("inside authorise");
        google.script.run
        .withFailureHandler(errMsg)
        .withSuccessHandler(compareID)
        .getData();

    }

    function compareID(data){
        alert("inside compare");
        //process the data
    }

    function errMsg(){
        alert("no data was returned ");
    }

My code seems to always go to errMsg() and never enters the compareID() function. I even tried to use JSON.stringify(data) in the Google script file and return a String then JSON.parse(data) in the HTML script but still did not get the required results.
What should i do to get my code to enter the compareID() function?

A: Using your code as shown above i get "inside compare".  And data is correct values.  Is errMsg called anywhere else in your html?
function test() {
  try {
    var htmlTemplate = HtmlService.createTemplateFromFile('HTML_Test');
    var htmlOutput = htmlTemplate.evaluate();
    SpreadsheetApp.getUi().showModalDialog(htmlOutput, "Sample");
  }
  catch(err) {
    Logger.log(err);
  }
}

function getData(){
  //this function reads data from the sheet and retuns a 2D array
  var spreadsheetID = SpreadsheetApp.getActiveSpreadsheet().getId();
  var range = 'Sheet2!A2:B';
  var data = SpreadsheetApp.openById(spreadsheetID).getRange(range).getValues();
  return data;
}

<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
  <input type="submit" value="Submit" onclick= "authorise()">
</div>
<script>
  function authorise(){
    alert("inside authorise");
    google.script.run
    .withFailureHandler(errMsg)
    .withSuccessHandler(compareID)
    .getData();
  }

  function compareID(data){
    alert("inside compare");
    //process the data
  }

  function errMsg(){
    alert("no data was returned ");
  }
</script>
</body>
</html>

A: It looks like you are trying to use the Google Sheets API directly, but when using Apps Script you have access to the much more robust and convenient SpreadsheetApp service.
var data = SpreadsheetApp.openById(spreadsheetID).getRange(range).getValues();

see: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

redpajama_set_name: RedPajamaStackExchange


John Benton was a historian concerned with the European Middle Ages, particularly the period from 1050 to 1300.
Benton experimented with different methodologies and used literary as well as documentary sources to illuminate medieval society. His work, Self and Society in Medieval France: The Memoirs of Abbot Guibert of Nogent (1970), draws on medieval literature for the examination of the life of a twelfth-century monk. His studies of Abelard and Heloise raised questions about the authenticity of the correspondence between the famous lovers. His application of the techniques of computer enhancement of images to the study of erased or faded medieval manuscripts garnered international recognition. He edited a collection of charters issued by the counts of Champagne, a work that reflected his strong interest in France's literary and administrative records.
A professor of history at the California Institute of Technology, Benton was also a fellow of the Medieval Academy of America and the Honorary President of the International Courtly Literature Society. His awards included a Fulbright Fellowship (1956) and a Guggenheim Fellowship (1963).
Benton received a B.A. (1953) from Haverford College, and an M.A. (1955) and Ph.D. (1959) from Princeton University.
"Medieval History Scholar: Caltech Historian John F. Benton"


An engrossing and counter view of one of the most dangerous elements of American urban history, this graphic novel tells the true story of Benjy Melendez, a Bronx legend, son of Puerto-Rican immigrants, who founded, at the end of the 1960s, the notorious Ghetto Brothers gang. From the seemingly bombed-out ravages of his neighborhood, wracked by drugs, poverty, and violence, he managed to extract an incredibly positive energy from this riot ridden era: his multiracial gang promoted peace rather than violence. After initiating a gang truce, the Ghetto Brothers held weekly concerts on the streets or in abandoned buildings, which fostered the emergence of hip-hop. Melendez also began to reclaim his Jewish roots after learning about his family's dramatic crypto-Jewish background.
Julian Voloj is a photographer and writer who explores aspects of identity and cultural heritage through his work. He lives in New York City. Claudia Ahlering is a painter and illustrator. She is the founder of the magazine Spring.


Microsoft confirms XP shipments to OEMs and retailers will stop June 30, as planned, ending weeks of speculation XP would live on. Versions will still be preloaded on ULCPCs.
Microsoft will shutter its Windows XP line June 30, as planned, ceasing sales of Windows XP Professional and Windows XP Home to retailers and direct OEMs, Microsoft confirmed to eWEEK April 3.
The statement from Redmond executives ends weeks of speculation that Microsoft would extend the life of the operating system as users turn up their nose at Vista, the operating system meant to supplant XP, and OEMs argue lighter versions of desktops and notebooks don't have the juice to run Vista.
Windows XP Home and Starter editions will still be preloaded on ultra-low-cost PCs through June 30, 2010, or one year after the launch of the next version of Windows - whichever comes first, the company said.
"Last fall, our OEM partners asked us to extend sales of Windows XP to give their customers more time to transition to Windows Vista while we worked with other software vendors to expand application compatibility," Michael Dix, the general manager for Windows Client, told eWEEK April 3.
That decision was based on market feedback from customers and Microsoft's OEM and retail partners, and this decision not to extend that date is also based on their feedback, he said.
"They are telling us that they feel good about these dates and that the market is ready. For those customers who actually want XP, we are providing enough time for them to actually get it and so we feel good about this being the right transition point," he said.
The decision to allow Windows XP on the ultra-low-cost PCs, or ULCPCs, reflected Microsoft's commitment to ensuring that Windows was available for this new and growing class of low-cost, hardware-constrained computers that were originally intended for consumers in emerging markets, Dix said.
This also effectively offered OEMs choices based on their plans and assessments of what the market needed and wanted. "They can elect to preload XP Home on these machines, a flavor of Vista or, in emerging markets, Starter Edition. As this category is still in its infancy, we wanted to give OEMs flexibility, which is how we approached it," Dix told eWEEK.
OEMs were considering a wide range of machine configurations in this category, and Windows Vista would be able to run on some of those. But, at the very low end, in the range of 2- and 4-gigabyte flash devices, those would run XP Home, he said.
"But in the middle- and high-end, it is up to the OEM which operating system they choose to offer there," he said.
But to Rob Enderle, the principal analyst for The Enderle Group, Vista just is too heavy for many of these devices and likely would not have been sold on them.
"For Microsoft, it was a choice of letting Linux go unchallenged in this segment or block it using XP, which provides a slightly better user experience and has some software compatibility advantages over most of the Linux implementations I've seen so far," he said. "They wisely chose not to hand this market to Linux on a silver platter, but Linux will improve while XP won't, and some of the Linux stuff I've seen lately is actually competitive with Apple."
Microsoft was also publishing some formal guidelines to enable manufacturers to build extremely hardware-constrained machines with less than 4GB flash-based storage, and which can run Windows well and please customers, Dix said.
Many of Microsoft's partners are now also offering affordable ULCPCs like Intel's Classmate PC and Asus' Eee PC in developed countries as well as in developing nations, he said.
Click here for eWEEK Labs' take on shrunken notebooks such as the OQO 2 and the Eee PC.
Partner feedback and Microsoft's own internal research had found that customers preferred Windows on these machines as it was "a system they are familiar with, enables access to a vast ecosystem and provides them with a full operating system on these affordable PCs," Dix said.
Asked if these machines could run both Windows and Linux, Dix said that was up to the discretion of the OEM, but "my guess is that they are going to be discouraged from doing that because of the hardware constraints they are working with. Dual boot would require more space and partitioning an already small drive would be difficult to argue for," he said.
Asked how the OLPC (One Laptop Per Child) played into this announcement, Dix said the challenge was that the OLPC's XO machine was even more extreme in its hardware constraints than the typical ULCPC being shown on OEM road maps.
As such, Microsoft had a separate team of engineers working on a port of Windows to that machine, as this required a lot more development and focus than the traditional ULCPC, he said.


text:
Teaming Up
Contractors and Camo hockey tournament assists Challenge Alaska, Alaska Warriors hockey
By Matt Nevala
Alaska Warriors forward Mia Carson of Eagle River was recognized for her work ethic, kindness, giving nature, leadership, and hope in adversity with a Valor Value Salute award earlier this year. The honor was bestowed on her at the Hendrickson Foundation Hockey Festival in Minnesota the night before the Alaska Warriors won their division championship.
Photo courtesy of Challenge Alaska
ia Carson may be indecisive about her playing status early next year when it's time for the 2022 Contractors and Camo three-on-three hockey tournament.
"I'm on the [tournament] board, so I guess I'll be involved in some way," Carson says jokingly. "I hope to bring some creativity, help with visuals and on social media."
Whether or not she gears up for the charitable event hosted in Anchorage by the Associated General Contractors of Alaska, Challenge Alaska, and the Alaska Warriors program, one thing is clear for Carson and dozens of other Alaska-based military veterans like her: Skating with the Warriors and supporting one another on and off the ice is worthy of a million Facebook likes and Twitter retweets.
"No matter the military background or severity of disability, we all kind of recognize it's the same mirror we're looking into each day," says Carson, who served in the Air Force as a firefighter and in other medical services. "The catalyst and what makes the Warriors so unique is that everybody is welcome. Regardless of injury or disability or skill level, there's a place for you.
"You feel connected. There's teamwork and camaraderie."
'Men and Women Who Really Needed the Outlet'
Challenge Alaska improves the lives of people with disabilities, their families, and the whole community through adaptive sports, therapeutic recreation, and education. In 2017, USA Hockey issued a grant to the organization to start a Warriors hockey program. The move was made after a few years of Challenge Alaska's participation in USA Hockey's Disabled Hockey Festival.
Veterans with disabilities who also happened to enjoy playing hockey quickly became part of the process. They helped build the program and recruit eligible players.
"I'm one of the originals," says Bryan Murphy, an Army veteran of almost thirteen years. "I'm so happy to know we've reached so many people—men and women who really needed the outlet."
Murphy says between sixty and eighty veterans have been part of the Warriors at one time or another. He also says about forty-five actively play, mostly a seasonal Monday night skate at Eagle River's McDonald Memorial Center. The Warriors have also represented the state at national tournaments in Florida, Illinois, and, most recently, in Minnesota.
Visit challengealaska.org to learn more about AGC Contractors & Camo, Challenge Alaska, and Alaska Warriors hockey.
In fact, the Warriors won the Hendrickson Foundation National Hockey Festival division championship in early June. The festival is an annual competition among disabled hockey teams.
"It was pretty special," says Frank Mucci, an Army veteran who was with the Warriors in Minnesota. "Win or lose, we were breaking bread and sharing stories with brothers and sisters from around the country and that's always great. But taking home a little hardware? Yes, we did love that."
Contractors and Camo Coming Up
Looking ahead to the fourth edition of Contractors and Camo, the date is set for January 8 at the Royal Business Systems Ice Center in South Anchorage. The tournament features teams mixed with veterans and those from the construction field. The six- or seven-person teams play multiple twenty-minute games on half of the regulation-sized rink.
"Like many of us in the veteran community, contractors get dirty working with their hands and are rough and tough," says Murphy. "We set out to enhance the overall bond between the two worlds. It's a chance to meet new people and help [the Warriors and Challenge Alaska] raise some funds."
Mucci says there's a competitive element to the three-on-three format, but the event goes beyond simple competition.
"Contractors and Camo is a great way to support all of us veterans," he says.
A Valor Value Salute
Carson currently works as the Anchorage Fire Department's Community Risk Reduction Coordinator. The single mother of two first got involved in hockey when her daughters tried out the sport a few years ago. First a supportive parent, she started coaching and figured she should learn to play.
After giving the local women's recreational league a try, Carson gravitated toward the Warriors. She was the lone female to play on the Minnesota festival team.
"Looking at my skill level, I was a little intimidated about traveling to the tournament," Carson says. "I said I'd be the water girl and be little Miss Positive."
The Warriors weren't having it. Carson played forward throughout the tournament and the night before the championship was recognized for her work ethic, kindness, giving nature, leadership, and hope in adversity.
The Hendrickson Foundation awarded Carson a Valor Value Salute honor, much to her surprise. Video of the moment can be found on the Alaska Warriors' Facebook page.
"It was so overwhelming, I had to just keep walking up to receive the award," she says. "One step at a time."
As part of the award, Carson received a glass star and a monetary gift. She used some of the money on a new dining room table she expects to receive this fall. The custom-made item will feature blue resin and small images of hockey sticks embedded into the design.
"I love to host and share time with special people," says Carson. "The table is something I'd never otherwise purchase. I'm honored people saw something in me."
Veterans also see something in the Alaska Warriors program.
"A lot of the guys and gals I've skated with these last few years really needed help and needed to feel comfortable finding it," says Mucci, who recently moved to Arizona and says he'll work diligently to create a Warriors program down there. "We've all had our own rough patches, so being a part of something special with people who know where you've been is amazing and important."
Veteran Anchorage-based media specialist Matt Nevala co-hosts "The Sports Guys" radio show on KHAR AM 590 and FM 96.7 (@cbssports590). Find him on social media at @MNevala9.
Alaska Business Publishing


text:
Home | Products | Services | Music | Project Gallery | Support | Pricing
Elephant Revival DSD recording available at Acoustic Sounds
Elephant Revival's new DSD PURE album "It's Alive" is now available at www.acousticsounds.com as a DSD file download. Recorded to the Sonoma 32 track, "It's Alive" is of a folk/bluegrass genre. Previously, Elephant Revival had visited Immersive Studios to record for one of Immersive's "Round The Tree" DSD PURE ambient recordings with video. For that experience, look here:
Immersive's ROUND THE TREE with Elephant Revival
New Anthony Wilson SA-CD and LP
Yet to be named, the new Anthony Wilson SA-CD due out on Groove Note Records was recently tracked to an analog 24 track at Sunset Sound in LA, and mixed to the Sonoma recorder (for the SA-CD master) by engineer Michael C. Ross (front and center). Going clockwise from Mike is producer Joe Harley, then musicians Anthony Wilson, Matt Zebley, Adam Schroeder, Gilbert Castellanos, Mark Ferber, Diana Krall, Alan Ferber, Darek Oles, Donald Vega, Eva Scow, and Matt Otto. Diana Krall sings "Looking Back", a beautiful song composed by her late piano teacher and mentor Jimmy Rowles and arranged by Anthony Wilson.
"Music for Organ, Brass and Timpani" Produced by
13-Time Grammy Winner Steve Epstein
This new reference recording was spearheaded by David Kawakami, the Director of the Super Audio CD project at Sony Corporation of America. "Audiophiles have often asked, 'What is the best sounding SA-CD?' to which we would respond, 'The best SA-CD has yet to be released!'" said Kawakami. "In this spirit, we have worked closely with renowned producer Steve Epstein to develop a recording that exploits the full potential of this incredible platform." The new reference recording highlights the first use of the 24-track Sonoma Workstation, which is being debuted at the Audio Engineering Society Convention. It utilizes state-of-the-art A/D and D/A converters supplied by EMM Labs, to create a recording of startling warmth and realism. "The most outstanding modern recordings have always resulted from a successful melding of music and technology," states Steve Epstein. "So the chance to produce music of my choosing, played by the best musicians I could find, and using the latest recording technology was an opportunity I couldn't pass up."
Ron Miles recorded by Tom Bates on Sonoma 24
November 3, 2004, Multi-Grammy winning engineer/producer Tom Bates recorded music by jazz trumpet player Ron Miles at Immersive Studios in Boulder Colorado on Sonoma 24. The yet unnamed project consists of trumpet, piano, acoustic bass, and drums. Currently Tom is mixing the project to Stereo and 5.1 on an analog Euphonix console. Because the Sonoma can playback all channels while recording, it is both the multi-track playback machine and the mixdown master recorder on this project. "The sound of the Sonoma recorder is absolutely flawless," said Tom Bates, "It is as if a recorder is not even in the circuit. It behaved flawlessly too. It was a refreshing experience." Tom is due back in the studio in a few weeks to complete the 5.1 mixes.
Sonoma Records - David Elias "Crossing" on sale at www.acousticsounds.com
David Elias's second hybrid multichannel SA-CD is now available from Acoustic Sounds and follows in the style of his first SA-CD "The Window". Garnering praise from the Audiophile community, "The Window" is now recognized as a "Must Have" SA-CD, particularly if you love folk music. "Crossing" continues in the same tradition with live surround acoustic recordings of excellent new songs by David Elias. For more information, please visit High Fidelity Review.
"David Elias has released his latest Hybrid SACD, Crossing, and if you're a fan of acoustic folk then I highly recommend you check this guy out. If you have not heard of him, that is not surprising, as he is as about as independent as they come. He is his own writer, arranger, label and producer. Besides his web site and his live gigs the only place his stuff is available is here [Acoustic Sounds] and one other place, as far as I know. Audibly, the disc is superb. I know this will sound a bit over used, however, this is an audiophile quality presentation. His previous release, The Window, is of the same high quality and that too I'd highly recommend."- The Don Guy - Acoustic Sounds
Sonoma Records - "Music for Organ, Brass and Timpani" on sale at www.acousticsounds.com
Pictured left-to-right in front of the magnificent Mander Pipe Organ at St. Ignatius Loyola Church, New York City are William de Vos, Anthony Newman, Carl Albach, Mark Gould, Duncan Patton, Graham Ashton, Jeff Nelson, Richard Clark, Jim Pugh, and Marcus Rojas.
About Us | Site Map | Privacy Policy | Contact Us | ©2004 Super Audio Center LLC


Period style "swan neck" bails with turned posts (8/32 thread).
Porcelain Rosettes: 1 ¼" diameter.
This piece differs from many of our other fine brasses in that it's offered lacquered to preserve a bright polish finish.


President Trump's Economic adviser Larry Kudlow said a meeting could take place when policy makers meet in Buenos Aires for the G-20 meeting.
Mr. Kudlow, director of the National Economic Council, said at a securities industry conference in Washington that no formal plans have been made to resume talks, but said US officials are ready to negotiate as long as the conversations are serious.
Speaking about the newly announced trade deal between the US, Canada and Mexico, Mr. Kudlow said the agreement will allow the three countries to present a "united front" against unfair trading practices.
More people working and prospering is not inflationary in response to massive pay raises announced by Amazon, the Associated Press reported. He's in favor of higher wages and said, "Good for them," Mr. Kudlow said on TV, in reference to the pay hike announced Tuesday by the Seattle company. Amazon is boosting its minimum wage for all US workers to $15/hour starting next month and it will raise pay for employees who make more than that already. The pay increases will benefit more than 350,000 people. Referring to "wage push" inflation, when the cost of goods increase as employers raise prices to pay workers more.
Meanwhile, trade experts said China's hopes of negotiating a free trade pact with Canada or Mexico were dealt a sharp setback by a provision deep in the new US-Mexico-Canada trade agreement that aims to forbid such deals with "non-market" countries.
The provision specifies that if one of the USMCA partners enters a free trade deal with a "non-market" country such as China, the others can quit in 6 months and form their own bi-lateral trade pact.
The United States and China are locked in a trade dispute that has seen them level increasingly severe rounds of tariffs on each other's imports.


text:
« Women's History Month: The Irish Women Presidents
Women's History Month – Getting it Right: Sparring Syndromes/Dueling Dominance and Revolution »
Women's History Month: Poor Goldilocks! Can she never get it right?
March 24, 2016 by still4hill
Hillary Clinton made a major policy speech yesterday. She's running for president of the United States. Every time she opens her mouth – and she has a pretty mouth that says smart things that some people sometimes dislike – somebody has something to say about how she sounds. Seems it is never "just right."
This popped up in my newsfeed which pretty concisely packages the issue.
Fox News: Hillary Clinton Was 'A Little Too Calm' While Giving Speech On Foreign Policy
She's been criticized for shouting before.
Paige Lavender Senior Politics Editor, The Huffington Post
When it comes to her voice, Democratic presidential hopeful Hillary Clinton can't win.
Fox News host Heather Nauert and guest Monica Crowley criticized the former secretary of state Wednesday for being "a little too calm" while delivering a foreign policy speech at Stanford University.
"Did you notice that calm and collected tone of voice right there? She said we needed 'strong, steady leadership,' implying the Republican candidates could not provide that," Nauert said.
I don't know. What does Hillary Clinton have to do to get it "just right?" To get anything just right? Personally, I was worried about how her poor voice would hold up, it had suffered such abuse these past weeks on the campaign trail. It held up fine, and for my money her tenor was fine. When Hillary gives policy speeches, she generally is calm and deliberate. I have watched many over the past eight years since I began keeping track of her secretary of state tenure. That is her policy speech style. I don't even want to go into that. Paige Lavender did the topic justice. But what does Hillary have to do to get things "just right?" More to the point, why does she have to?
Everybody has something to say about what she wears, how she sounds, how she looks. Wear that yellow for the speech. No! Oh! Not that awful yellow! Be forceful! Oh no! Don't yell. Smile more!
Why can't Hillary just be Hillary? Why can't the most qualified person ever to run in my life (Harry Truman began as a haberdasher – youngsters, just go google it – I'm too tired – he was the first to run in my life) have a fair chance to spell out her plans without everybody talking about her tone, facial expression, and whatever other third element hits the windshield of the armchair quarterbacks.
When Hillary and I were in college, Marshall McLuhan (go look him up – I am tired of spoonfeeding voting age people) said the "medium is the message." He meant medium as print v. video. So video is the message today, even though I still like to get my hands on transcripts and lift the passages I think are important. Video – and audio – are the whole show.
I know I am biased. But WTF??????? What is so offensive about Hillary that Bernie's foghorn and gesticulating, Ted's cartoon voice, John's bedtime story voice, and Trump's bellowing ("Get 'im out!") fail to surpass in offensiveness, condescension, plain old annoyance?
Why is her wardrobe an issue? They all look like a suit rack at the cleaners. Why, when she puts forward the only sane. thought-out, and comprehensive plan to combat terrorism is anything other than her words and her plan an issue?
It really never entered my mind that we would have a woman president. I loved Shirley Chisholm. She sat them all down like she was the detention teacher in the halls of Congress. Pat Schroeder gave it her best, and Gerri Ferraro made me proud coming within a margin of being a heartbeat away. But this was never a goal.
It's just that right now we have the best candidate I have ever seen. She happens to be a woman with a message, a set of plans, and a way of explaining things. She's not hard to look at, not hard to listen to, and, when you bother to listen, not hard to understand – she explains well.
Why can't Hillary get it just right? Or is it that the chairs keep getting moved around while the music blares?
Why don't the guys have to be pitch perfect? Why don't they even have to pitch it over home base, actually, as long as they throw?
Thank you Hillary Clinton for running for president when you didn't have to. Thank you for your plans, your brilliance, and for always being right on target while looking pretty and being your spunky and empathetic self. Your Homegirls love you!
Posted in 2016 election, Democratic Party, Feminism, Hillary 2016, Hillary Clinton, Hillary for America, Hillary for president, Hillary Rodham Clinton, misogyny, Republican Party, sexism, Uncategorized, women and girls, women in government, Women in History, Women in the Media, Women Leaders, Women's History Month, Women's Issues, Women's rights | Tagged Hillary Clinton, Hillary Rodham Clinton, women in government, Women in History, Women's History Month, women's issues | 3 Comments
on March 24, 2016 at 8:26 am | Reply still4hill
on March 24, 2016 at 10:20 am | Reply Women's History Month: Poor Goldilocks! Can she never get it right? | Miles to Go...
[…] Source: Women's History Month: Poor Goldilocks! Can she never get it right? […]
on March 24, 2016 at 10:23 am | Reply julies9164
Reblogged this on Miles to Go… and commented:
Better than I could have said it!


text:
U.S. Navy awards $200M contract to upgrade USS Boxer amphibious assault ship
Modified date: Apr 4, 2020
Photo by Petty Officer 1st Class Holly Herline
The Department of Defense and BAE Systems announced on Friday an agreement worth about $200 million for drydock and perform nearly 18 months of maintenance and modernization work aboard the amphibious assault ship USS Boxer (LHD 4).
The drydocking of USS Boxer will be the first time the company's San Diego shipyard will use its 950-foot-long Pride of California drydock to service a large-deck warship. The shipyard is currently nearing completion of another major milestone for the drydock: the first simultaneous docking of two guided-missile destroyers on the West Coast.
BAE Systems' San Diego shipyard will begin working aboard the 843-foot-long USS Boxer in June 2020. Under the awarded contract, BAE Systems will upgrade the ship to support and operate Joint Strike Fighters on-board; perform hull, tank and mechanical work; and make other shipboard improvements. The shipyard is expected to complete its work aboard the 25-year-old ship in December 2021. The contract includes options that, if exercised, would bring the cumulative value to $207.48 million.
Additionally, days earlier, the USS Boxer, an amphibious assault ship had reported its first case of coronavirus, leading to the confinement of 80 senior enlisted sailors and officers in a small room on the ship. With rising infections on at least three frontline warships, the US navy is besieged with anxiety. Fears of a rapid spread of the epidemic among tightly packed crews have led commanders to reduce the number of mass gatherings and implement a strict distancing protocol.


text:
7-day average number of COVID-19 cases remains over 5K, but is decreasing in Wisconsin
By: Jackson Danbeck
Posted at 5:16 PM, Nov 25, 2020
Wisconsin's seven-day average remains over 5,000 COVID-19 daily cases, though the average continued its downward trend Wednesday.
The Wisconsin Department of Health Services reported a seven-day average of 5,372 Wednesday, the lowest that number has been since Nov. 6. But DHS reminded residents on social media that a negative test "is not a free pass" to gather with others over the holidays.
Even though the downward trend isn't an excuse to forget COVID-19 guidelines, it is a welcomed change, after months of surging coronavirus cases that suggested the end was far in sight. That end could still be far on the horizon; but at least according to the preliminary data Wednesday, Wisconsin is doing something right.
Both of the ways the DHS tracks percent positivity continue to decrease, day after day. DHS numbers show the seven-day percent positive (by person) at 28.3 percent, the lowest that number has been since Oct. 28. DHS further reports the seven-day percent positive (by test) at 13 percent, the lowest that number has been since Oct. 27. Both percent positives began decreasing around Nov. 11.
Meanwhile, DHS reported 63 new deaths caused by the virus Wednesday, raising the death toll in Wisconsin to 3,178. The seven-day average number of daily deaths rose to 55 Wednesday, following the record 104 deaths recorded on Tuesday.
There are just over 75,200 active cases in the state, with 248 new hospitalizations, raising the total number of hospitalized since the pandemic began to 16,457.
"Your #Thanksgiving dinner may be smaller this year, but that doesn't mean you can ignore food safety. Remember to clean, separate, cook, & chill, and put away any leftovers within two hours of eating," the health department tweeted Wednesday.
Your #Thanksgiving dinner may be smaller this year, but that doesn't mean you can ignore food safety. Remember to clean, separate, cook, & chill, and put away any leftovers within two hours of eating. Find more tips for a safe & happy holiday dinner at https://t.co/dkrziTCdu7 pic.twitter.com/99NWPN0rSY
— WIDeptHealthServices (@DHSWI) November 25, 2020
Report a typo or error // Submit a news tip


Captain Marvel which is Marvel studios first solo movie featuring a female superhero is all set to release on International Women's Day. Read on to know more.
Captain Marvel which is Marvel studios first solo movie featuring a female superhero is all set to release on International Women's Day and MCU fans are eagerly waiting for the movie to open in the theatres. The makers and the cast including Anna Boden, Ryan Fleck, Gemma Chan, Samuel L Jackson and Brie Larson among others are currently in Singapore to promote their mega movie. And during a recent media interaction, the stars opened up about the film.
Brie Larson who plays the titular role was asked to comment on how she felt to play the dynamic role in MCU, to which she said, "The film itself is so big and there are so many aspects of it that are larger than life. we are dealing with a superhero with incredible powers, fighting with aliens in space. But I think the thing that really grounds it, in reality, are the smaller moments.. the moments in the character moments, the moments in between, the big fight sequences so those were things that we really spent a lot of time tackling down to make sure that those had much care you know as much as giant explosion."
"She's pretty much the strongest character -- in terms of someone with powers are able to do things -- in the Marvel universe. So, for Carol Danvers to be that person and for Brie to become that person, it's gonna be a dynamite thing. I mean, [the Avengers] are up against some really, really tough odds right now -- we saw throughout Infinity War -- so now we know that we need something that's as powerful as Thanos. And at some point, we'll find out how powerful she is and all the things that she's capable of. She's one of the few people in the Marvel universe that can time travel." Samuel L Jackson, who plays Nick Fury in the 90s-set film told during an interview.
Captain Marvel, the superhero film which is serving as lead-up to the highly anticipated movie Avengers: Endgame, will release on March 8, 2019.


text:
OSUN STATE COLLEGE OF EDUCATION Ila
Osun State College introduces dress code for students
Authorities of the Osun State College of Education, Ila-Orangun have introduced new dress code for both the male and female students of the institution to ensure sanity within the campus of the college.
The Acting Provost of the college, Dr Bashiru Gbadamosi who announced this at the maiden Matriculation ceremony for students undergoing degree programme of the Ekiti State University at the college, said the institution introduced the dress code to avoid indecent dressing by students while on campus. He said the new dress code would afford the students sense of dressing, which would in turn be beneficial to the society.
Dr Gbadamosi who frowned at the level of indiscipline amongst students of tertiary institutions in the country, said the authorities of the institution would be strict with the new dress code, adding that erring students would be severely punished.
He averred that "it is morally deficient to engage in indecent dressing on campus.
In fact, the college has dress code entrenched in the college handbook, which all students should compulsorily adhere to. Violation of the dress code is considered a serious act of misconduct and shall attract stiff penalty."
While administering the oath of matriculation on the 335 new students of the university, the Vice Chancellor of Ekiti state University,
Professor Patrick Aina warned the students against cultism, examination malpractices and other delinquencies capable of making them forfeit their studentship.
He noted that the university is rated as one of the best in Law and Education programmes in the country and urged the students to contribute their quota to the growth of the institution.
He urged the new students to work assiduously to justify the dreams of the founding fathers of the university by playing responsible roles in contributing to the human capital development needs of the country.
Stay updated with all Nigeria University news, Polytechnic news, Post-Utme and more;
Join/Like Us now on Facebook and twitter
DELSU Pharmacy graduates threaten showdown with the university's management.
Breaking News: Boko Haram Gunmen Kill 40 Students At Federal Govt. College In Yobe
OSUN STATE COLLEGE OF EDUCATION Ila 2012/2013 NCE 1 AND UNIUYO, REGULAR DEGREE VERIFICATION EXERCISE
OSUN STATE COLLEGE OF EDUCATION Ila RELEASED 2012/2013 DIRECT ENTRY ADMISSION LIST, SCREENING ONGOING.


A blackjack strategy is a set of rules that when given a pair of cards and the dealer up card responds with a hit or stay. Memorizing and sticking to a strategy will minimize the house advantage. Card counting tracks the house advantage. A blackjack strategy used along with a card counting method is the only way to beat the house.
The game here uses the "Basic Multi Deck Strategy". You can turn on and off the advice from the strategy if you wish. You should strive to memorize the strategy so you know what to do in any situation. Until you do have the strategy memorized, you can rely on the game to inform you of the best play. the game will use the following letters to denote what you should do.


The Gardens of Port St. Lucie Retirement Community offers assisted living, skilled nursing and rehabilitation, as well as availability for short-term or seasonal stays. We are located just minutes from St. Lucie Regional Medical Center, on the northwest corner of U.S. Highway 1 and Lyngate Drive. At The Gardens of Port St. Lucie, we pride ourselves in our 10-year tradition of excellence in senior care that encourages residents to maintain their independence and dignity with our assistance as needed.
Horizon Bay Port St. Lucie, Florida offers Independent Living, Assisted Living and Alzheimer's and Dementia Care services for seniors.
For over seven years, the Harbor Place at Port St. Lucie senior living company in Port St. Lucie, Florida, has thrived upon the concepts of community, neighborhood living, and the warmth of family and friends. Offering independent living and assisted living options, Harbor Place at Port St. Lucie boasts a strong sense of community and a staff that's loyal and dedicated.


Hi, I wish to thank you for your wonderful work, I'm learning a lot with Lea, and I think this will help me a lot studiyng statistics. Do you thinks it's possible to add a seed(x) method to force Lea to work with the same random response when calling RandomDraw, for testing purposes? I tried to modify _createRandomIter function importing random (and then using random.randrange method), but I can't figure out why, I get "AttributeError: 'builtin_function_or_method' object has no attribute 'seed'. It seems a subclassing issue, but I don't know python so well as I thought, I'm afraid.
Thank you for your nice comments, Giordano! I'm glad that Lea helps you.
You will then get the very same random sample whenever you seed with x.
Therefore, you can achieve this without patching Lea (which is always a dangerous business!). BTW, I had the same idea as you in the past, that is to add a Lea.seed(x) method that simply calls random.seed(x). I've abandoned this idea because 1) there's poor added value in this convenience method and 2) calling Lea.seed(x) may give you the impression that you do something internal to Lea although it may impact any module that is currently using the Python random module. To avoid such side-effect, I judge that it is safer to let the user make an explicit call to random.seed(x).
Since your question is of interest for everybody, I've just updated the wiki pages (Lea v2 & v3) to explain that technique with a small example - see end of section on random sampling.


The ACLU is hosting a 'People Power action event' on Saturday, when it will issue specific guidelines to activists on how they can have an impact on immigrant rights at a local level.
The American Civil Liberties Union is launching an ambitious plan to create a swath of "freedom cities" capable of resisting Donald Trump's immigration policies.
The civil rights organization, which has emerged as one of the Trump administration's major foes, plans to leverage individual cities' local authority to protect undocumented immigrants from deportation.
The ACLU will reveal the freedom cities effort during the official launch of its new grassroots online platform, People Power, on Saturday. It will distribute a set of "ordinances" to activists, encouraging them to pressure local sheriffs and police commissioners to adopt more lenient policies on undocumented immigrants.
"As Donald Trump does what he does, the greatest political power is in the cities and towns across America," said Faiz Shakir, the ACLU's national political director.
The ACLU is hosting a People Power action event on Saturday, when it will issue specific guidelines to activists on how they can have an impact on immigrant rights at a local level. The event will be live-streamed, and Shakir said ACLU supporters had already set up 2,300 watch parties across all 50 states.
"Essentially we want people to think of their cities as cities of resistance," Shakir said. The ACLU will issue nine ordinances to activists on Saturday, and ask them to present them to their local officials.
The ordinances resemble a pledge that could be made by local sheriffs or police commissioners. They include a commitment to "require a judicial warrant" before detaining people at the request of Immigration and Customs Enforcement, and to not "authorize or engage" in surveillance of a person or group based on their perceived immigration status.
Activists will be encouraged to submit details of their meeting to the People Power website, Shakir said, enabling more people to attend. The ACLU has tripled its membership since the night of the November election, according to the Washington Post, and collected more than $80m in donations.
In planning the action, Shakir said he had "deviated away from the theory that [political action] needs to be simple".
The freedom cities plan represents a new foray into grassroots organizing for the ACLU, which has traditionally focused more on legislative action.
Shakir, a former senior adviser to former speaker of the House Nancy Pelosi and former Senate minority leader Harry Reid, joined the ACLU on 20 January – Trump's inauguration day – to kick off the organizing effort. He has hired people who worked on Bernie Sanders' campaign and for the White House under Barack Obama to work on the project.
The initial focus is on immigration, Shakir said, but the ACLU plans to expand, and have activists lobbying local officials on LGBT rights, women's equality, police surveillance and other issues.


You're not alone. We were there too.
In our 20s, my husband and I made all the cliche mistakes.
We bought a big home on a large property, spent money without hesitation on our expensive hobbies (horseback riding, skiing, mountain biking, snowmobiling…), bought vehicles that were bigger and better than we needed, and payed for all the extras with a ridiculous line of credit from the bank. Yikes!
Despite having two decent incomes, we were sinking further and further in the hole, but it still felt manageable because we were making all the "minimum" payments (which barely put a dent in the debt!).
Fast forward a few years (and two kids) later, and we found ourselves down to one income so that I could stay at home with the kids.
We scrambled to cut costs, sold everything we didn't need, and couponed like crazy, but it still wasn't enough. We were making ends meet, but the prospect of having any savings, let alone retirement funds was completely out of reach.
And that's when we knew we needed to make a big change.
We no longer cared about "keeping up with the Jonses". We wanted financial freedom and relief from the constant stress of debt.
So we did something drastic. We made a BIG move.
We sold our home, even though we were taking a loss on it, and found a small house to rent in a nearby city (our friends thought we were crazy!).
But thanks to the equity we had built up over the years, we still earned enough from the sale to pay off our debts, and cover the moving costs.
My husband found a great job, our cost of living was drastically reduced, and suddenly we had EXTRA money at the end of every month. And we didn't owe anybody anything!
For the first time ever our finances made us feel empowered, and so incredibly stress-free.
And the saving started to grow, and grow. The more we saved, the harder we wanted to worked for financial freedom.
Looking to create a stay-at-home income, I've turned my hobby blog, savvyhorsewoman.com into a profitable side hustle and have more projects on the go (read my income reports here, and blogging tips here).
Now 2 years later our money is working for us, gaining interest, and allowing us to spend on things that positively impact our lives (and not just more stuff!).
Through Money Dot Calm, I'm so excited to share our story, tips, research and advice to help you find your own relief from financial stress.
Check out the Recommendations page to find our favorite products and services that help save us time and money.
We currently have money aside for a down payment, and are keeping an eye on the real estate market, watching for an optimal time to purchase. We'll keep you posted as our journey continues!


Web design uses almost all those elements as used in print design. One requires exploring layout and space, manage colours and fonts, and arrange it all together in a format in order to put all the intended messages across. Those resources will enable one know details of web design even if one is a professional web developer or just on one's beginning stage leading to the web arena.
One must know that a good web design is equivalent to the good design. If anyone has the right understanding about the elements that appropriately suits with a good design, then one will undoubtedly have a Web page that works well. One applies those elements of good design if and when one is producing a web page, a business card, or a raiment logo, and once one makes out them and their necessities and differences, one will acquire the skills and expertise that requires for becoming a great web designer.
Colour is present everywhere. With it we make our world up and help ourselves see things from different angles. In short, it is what as we see the things around us and as we dress up our world. The 'red' or the 'black' is not mere colour; they have meaning beyond their apparent looks. And they have larger important effects on design elements. The pools of colours show influences in their varieties as how they could be used effectively in web designing services.
"What You See Is What You Get" [WYSIWYG] editor is a popular preference among most of the web designers. It has become popular because this editor provides a visual interface to the design effects. At the same time, it should be remembered there are more opportunities and resources than they meet the eyes. Only web editor could not have brought about such a revolution unless there have been other designing tools. Fundamentals of Web Layouts: Layout comes at the very onset of web designing services. It is the proper arrangement of elements on web pages. It is very necessary to begin with basic design rules. If and when one understands them, one can proceed across how to place elements on one's web pages.
If one wants to apply and bring about an environment of fun and frolic, the graphics and their use will be best considered. The effects of graphics are so long extensive that it reminds us of the proverb "a picture is worth one thousand words". This proverb is also applicable to the web designing service and their uses of images and graphics.
When a website is live on the internet, there are all chances that visitors may come to the web pages of the website. On visiting the website, visitors may want to know what the purpose of the website is. And for this reason, they may go to one page to another. This is called navigation. There should be all browser compatible navigation interfaces, where from the visitors can move through one page to another and see the objectives of the website as a whole and at the same time see the image and graphic application. The purpose of a website design is well fulfilled only if the website is professionally designed and in this case professional web designing tops the list of priorities. Only a professionally designed website can bring in desired business and return on investment on a quicker pace.


Talking Dice are a unique and creative way to teach language skills to any age and ability. Because they are picture based, the dice can be used to teach ANY first or second language in a variety of ways. Talking Dice are used by thousands of language teachers, primary school teachers and speech therapists worldwide.
The picture dice are divided into 36 topics and are sold in packs of 6 identical dice so that you can split your class into up to 6 groups. Simply select the topics that are relevant to your classes and gradually build your collection, or opt for the Full Pack instead.
Ideas for use (People & Family Members dice): Family and friends. Prepositions. Pronouns.
For more ideas and photocopiable worksheets, check out the Teacher's Guide.


Grab your Discounted 1pcs Donuts Cutter Mold Fondant Cake Bread Desserts Bakery Tools while the store LAUNCH DISCOUNT is on. Once we reach 300-unit sales, we will be increasing the price back up to $13.99. This is absolutely a great gift!


text:
Canada needs a new national housing program
Cathy Crowe
Published October 3, 2019 Updated October 4, 2019
Cathy Crowe is a street nurse, educator, activist and filmmaker specializing in advocacy on homelessness in Canada. She is a distinguished visiting practitioner in the Faculty of Arts at Ryerson University. Her most recent book is A Knapsack Full of Dreams: Memoirs of a Street Nurse.
A Vancouver bungalow designed by Central Mortgage and Housing [Wartime Housing], 1947, to house returning war veterans.
When I was growing up in the small idyllic town of Cobourg, on the shore of Lake Ontario, everyone I knew had a place to live. Families owned cars and took vacations. I don't recall being aware of poverty or homelessness, apart from my ill-conceived hobo costume for Halloween.
On weekends, we swam in the lake at the bottom of the street, played baseball, hide and seek and board games such as Monopoly and Clue. In the evening, we watched TV shows about seemingly perfect homes and families: Leave it to Beaver, Father Knows Best, Lassie, Ozzie and Harriet. We ran wild in empty fields behind our house, built forts in the nearby woods and, under the cover of darkness, sneaked into nearby houses that were under construction, frustrated they were encroaching on our natural playground.
What I didn't realize was that these new homes being built in the fields behind my house were the outcome of a massive, post-Second World War victory: a new national housing program that resulted in a building boom across the country.
Not unlike the gains of other national programs such as medicare, unemployment insurance and CPP, this housing program originated in response to public demand.
The first family to move into Canada's first public housing venture, the Bluetts, bid a cheerful farewell to their old home across the street at 218 Sumach St. from their new home in Regent Park North, on March 29, 1949.
Veterans returning to Canada from the war faced a drastic shortage of homes. The vets were vocal about their right to housing and, experienced in organizing, they engaged in dramatic and effective protests with their families, supported by seniors groups and faith-based communities. Their actions included mass parades, picketing and squatting – one group occupied an empty military hospital in Montreal while another took over an army barracks in Ottawa by moving their families and furniture inside. The barrack conditions were so poor that two children came down with polio, presumably from milk not kept cool due to lack of electricity. That only caused public opinion to swell in support of the veterans.
The result of their fight? Their demands for housing were answered with decisive action: the building of wartime housing followed by amendments to the National Housing Act in 1949 led to expanded federal funding for social housing – a national housing program that by 1964 was close to being a universal program for several decades. Despite its success, cuts were made to the program in the 1980s, and the program was eventually dismantled. First by Brian Mulroney's Progressive Conservative government, which in April, 1993, announced the termination of all new funding for social housing, including renovations, except on reserves. Later, Jean Chrétien's Liberal government continued the cuts. Making matters worse, Alberta and Ontario followed suit and cut provincial funding for social housing. In Ontario alone, 17,000 new units of housing that were under development were cancelled. Those units could have housed 40,000 people. The government could not afford this among other social programs, we were told, and the private sector would take over construction.
Demonstration in Toronto in support of affordable housing, on March 10, 1988.
John McNeill
I was working as a street nurse in downtown Toronto when the national housing program was dismantled. Like many, I was caught by surprise. Over the years, I have witnessed the dramatic results from the loss of this public-safety net. It was like observing a slow-moving disaster: Newly homeless people found themselves in drop-in centres, shelters were more crowded, church and synagogue basements were forced to open to shelter people in the winter, there was no longer enough food for people in the drop-in centres and there were clusters of homeless deaths – including due to freezing – and the return of old diseases and pestilence such as tuberculosis and bedbugs. In Toronto, the epicentre of the homelessness disaster, a "tent city" developed on the waterfront, which grew, over the course of three years, to 50 shacks housing approximately 140 people. Tent City was a refugee camp in the heart of the developed world.
Across the country, shelters are full and in chaos. In many cases, funding pressures are forcing their closings. In Toronto, the Out of the Cold program, now in its 33rd year, acts as an overflow. While the sites, which are churches and synagogues, provide shelter, they are not shelters. They operate in the winter only and are run by dedicated volunteers. Homeless people must line up sometimes as early as 5 p.m. to obtain a space, a mat (not a bed or cot) on the community-room floor. When they leave in the early morning, they must prepare to find the next location that is open and repeat the lining up process, hoping they will get in. Last year, Toronto added three large dome-like structures, such as you would normally see used to house people after a natural disaster, to their shelter inventory. One hundred people are crammed into each one, sleeping on cots with no dividers between them. Ironically, one is on the old Tent City site. Across the country, from Victoria to Halifax, outdoor sleeping is the norm – ranging from people sprawled out on sidewalks and heat grates to groupings of people under bridges, in parks and in tent communities.
Tents sit below the Gardiner Expressway in Toronto on Jan. 16, 2019.
Frank Gunn/The Canadian Press
When it still existed, Canada's housing program built 20,000 new units of affordable and social housing a year. Some of the housing, often little bungalows still standing today, is referred to as "wartime housing" because of its origin. Other types of rental housing included public housing, seniors' apartments, student housing, co-operative housing and supportive housing for people with mental-health or developmental-health issues. That was when the term "affordable" actually meant spending not more than one-third of your income on rent. If that program had been sustained at the same level, we would have built 520,000 additional homes.
I personally benefited from this program because I was able to obtain an apartment in affordable co-op housing that had just been built with national housing program support. I was a single mom, returning to school to get my nursing degree. The universal system worked, just as it would with medicare should I need surgery. It should be there for all in need.
Today, in Canada, a staggering 235,000 people are homeless; thousands are without even basic emergency shelter, and there is no right-to-shelter legislation across the country. Our social housing that was built under the original program is in great disrepair and wait lists are long. Approximately 1.7 million people are in "core housing need," a term that refers to housing that might be in a serious state of disrepair, does not have a suitable number of bedrooms for the family size or requires more than one-third of before tax household income to be spent on rent.
There is no shortage of creative solutions. These include laneway housing, prefabricated housing, repurposing container ships for housing and co-housing for seniors and students. Policy initiatives that include a focus on vacancy taxes, inclusionary zoning, land trusts, clamping down on short-term rentals are also being explored. These are all worthwhile and interesting but are low-hanging fruit.
A firefighter watches as a City of Vancouver staff member removes a mattress from a tent at the homeless camp at Oppenheimer Park in the Downtown Eastside of Vancouver, on Aug. 20, 2019.
DARRYL DYCK/The Globe and Mail
In 2017, the current federal government dangled what is referred to as a "national housing strategy" in front of us, promising a multibillion-dollar 10-year plan to help reduce homelessness and lift 530,000 people from housing need. At the time, housing expert and University of Toronto professor David Hulchanski pointed out the strategy was "a random and confusing set of spending initiatives, all involving billions of dollars, most starting after the next election." Recently, Parliamentary Budget Officer Yves Giroux, released a report that raised many red flags, including that fewer dollars than promised in the national housing strategy were actually spent. He stated: "It is not clear that the National Housing Strategy will reduce the prevalence of housing need relative to 2017 levels."
Veterans and their supporters were aspirational and won a legacy national program. If there is one thing I've learned, it's that once you lose a program, it is hard to get it back. Can we be aspirational this election? The obvious solution is a return to a national housing program. That means universal availability to affordable and accessible housing in the same fashion as we now expect in our beloved medicare.
It's always best to listen to the kids. In the Home Safe film series that I co-produced with filmmaker Laura Sky, a young boy who had been homeless asked: "I'm wondering exactly how the government is going to solve this, or whether it's going to help at all?" Many of us feel the same way now.
Keep your Opinions sharp and informed. Get the Opinion newsletter. Sign up today.
Federal study finds Indigenous people spend fewer nights in homeless shelters, but return more often
Situation at tent city in Oppenheimer Park is deteriorating, Vancouver police say