text:
package e2e_federation

import (
	"fmt"
	"time"

	"k8s.io/apimachinery/pkg/util/intstr"

	"k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/util/wait"
	restclient "k8s.io/client-go/rest"
	"k8s.io/client-go/tools/clientcmd"
	clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
	federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
	fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
	"k8s.io/kubernetes/pkg/api"
	"k8s.io/kubernetes/pkg/api/v1"
	kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
	"k8s.io/kubernetes/test/e2e/common"
	"k8s.io/kubernetes/test/e2e/framework"
	fedframework "k8s.io/kubernetes/test/e2e_federation/framework"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var (
	KubeAPIQPS            float32 = 20.0
	KubeAPIBurst                  = 30
	DefaultFederationName         = "federation"
	UserAgentName                 = "federation-e2e"
	// We use this to decide how long to wait for our DNS probes to succeed.
	DNSTTL = 180 * time.Second // TODO: make k8s.io/kubernetes/federation/pkg/federation-controller/service.minDnsTtl exported, and import it here.

	// FederatedSvcNodePort is the node port on which the federated
	// service shards are exposed in the underlying cluster.
	FederatedSvcNodePort = int32(32256)
)

const (
	federatedNamespaceTimeout    = 5 * time.Minute
	federatedServiceTimeout      = 5 * time.Minute
	federatedClustersWaitTimeout = 1 * time.Minute
)

var FederationSuite common.Suite

// cluster keeps track of the assorted objects and state related to each cluster
// in the federation
type cluster struct {
	name string
	*kubeclientset.Clientset
	namespaceCreated bool    // Did we need to create a new namespace in this cluster?  If so, we should delete it.
	backendPod       *v1.Pod // The backend pod, if one's been created.
}

func createClusterObjectOrFail(f *fedframework.Framework, context *fedframework.E2EContext) {
	framework.Logf("Creating cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
	cluster := federationapi.Cluster{
		ObjectMeta: metav1.ObjectMeta{
			Name: context.Name,
		},
		Spec: federationapi.ClusterSpec{
			ServerAddressByClientCIDRs: []federationapi.ServerAddressByClientCIDR{
				{
					ClientCIDR:    "0.0.0.0/0",
					ServerAddress: context.Cluster.Cluster.Server,
				},
			},
			SecretRef: &v1.LocalObjectReference{
				// Note: Name must correlate with federation build script secret name,
				//       which currently matches the cluster name.
				//       See federation/cluster/common.sh:132
				Name: context.Name,
			},
		},
	}
	_, err := f.FederationClientset.Federation().Clusters().Create(&cluster)
	framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err))
	framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
}

func clusterIsReadyOrFail(f *fedframework.Framework, context *fedframework.E2EContext) {
	c, err := f.FederationClientset.Federation().Clusters().Get(context.Name, metav1.GetOptions{})
	framework.ExpectNoError(err, fmt.Sprintf("get cluster: %+v", err))
	if c.ObjectMeta.Name != context.Name {
		framework.Failf("cluster name does not match input context: actual=%+v, expected=%+v", c, context)
	}
	err = isReady(context.Name, f.FederationClientset)
	framework.ExpectNoError(err, fmt.Sprintf("unexpected error in verifying if cluster %s is ready: %+v", context.Name, err))
	framework.Logf("Cluster %s is Ready", context.Name)
}

// waitForAllRegisteredClusters waits for all clusters defined in e2e context to be created
// return ClusterList until the listed cluster items equals clusterCount
func waitForAllRegisteredClusters(f *fedframework.Framework, clusterCount int) *federationapi.ClusterList {
	var clusterList *federationapi.ClusterList
	if err := wait.PollImmediate(framework.Poll, federatedClustersWaitTimeout, func() (bool, error) {
		var err error
		clusterList, err = f.FederationClientset.Federation().Clusters().List(metav1.ListOptions{})
		if err != nil {
			return false, err
		}
		framework.Logf("%d clusters registered, waiting for %d", len(clusterList.Items), clusterCount)
		if len(clusterList.Items) == clusterCount {
			return true, nil
		}
		return false, nil
	}); err != nil {
		framework.Failf("Failed to list registered clusters: %+v", err)
	}
	return clusterList
}

func createClientsetForCluster(c federationapi.Cluster, i int, userAgentName string) *kubeclientset.Clientset {
	kubecfg, err := clientcmd.LoadFromFile(framework.TestContext.KubeConfig)
	framework.ExpectNoError(err, "error loading KubeConfig: %v", err)

	cfgOverride := &clientcmd.ConfigOverrides{
		ClusterInfo: clientcmdapi.Cluster{
			Server: c.Spec.ServerAddressByClientCIDRs[0].ServerAddress,
		},
	}
	ccfg := clientcmd.NewNonInteractiveClientConfig(*kubecfg, c.Name, cfgOverride, clientcmd.NewDefaultClientConfigLoadingRules())
	cfg, err := ccfg.ClientConfig()
	framework.ExpectNoError(err, "Error creating client config in cluster #%d (%q)", i, c.Name)

	cfg.QPS = KubeAPIQPS
	cfg.Burst = KubeAPIBurst
	return kubeclientset.NewForConfigOrDie(restclient.AddUserAgent(cfg, userAgentName))
}

// Creates the federation namespace in all underlying clusters.
func createNamespaceInClusters(clusters map[string]*cluster, f *fedframework.Framework) {
	nsName := f.FederationNamespace.Name
	for name, c := range clusters {
		// The e2e Framework created the required namespace in federation control plane, but we need to create it in all the others, if it doesn't yet exist.
		// TODO(nikhiljindal): remove this once we have the namespace controller working as expected.
		if _, err := c.Clientset.Core().Namespaces().Get(nsName, metav1.GetOptions{}); errors.IsNotFound(err) {
			ns := &v1.Namespace{
				ObjectMeta: metav1.ObjectMeta{
					Name: nsName,
				},
			}
			_, err := c.Clientset.Core().Namespaces().Create(ns)
			if err == nil {
				c.namespaceCreated = true
			}
			framework.ExpectNoError(err, "Couldn't create the namespace %s in cluster %q", nsName, name)
			framework.Logf("Namespace %s created in cluster %q", nsName, name)
		} else if err != nil {
			framework.Logf("Couldn't create the namespace %s in cluster %q: %v", nsName, name, err)
		}
	}
}

// Unregisters the given clusters from federation control plane.
// Also deletes the federation namespace from each cluster.
func unregisterClusters(clusters map[string]*cluster, f *fedframework.Framework) {
	nsName := f.FederationNamespace.Name
	for name, c := range clusters {
		if c.namespaceCreated {
			if _, err := c.Clientset.Core().Namespaces().Get(nsName, metav1.GetOptions{}); !errors.IsNotFound(err) {
				err := c.Clientset.Core().Namespaces().Delete(nsName, &metav1.DeleteOptions{})
				framework.ExpectNoError(err, "Couldn't delete the namespace %s in cluster %q: %v", nsName, name, err)
			}
			framework.Logf("Namespace %s deleted in cluster %q", nsName, name)
		}
	}

	// Delete the registered clusters in the federation API server.
	clusterList, err := f.FederationClientset.Federation().Clusters().List(metav1.ListOptions{})
	framework.ExpectNoError(err, "Error listing clusters")
	for _, cluster := range clusterList.Items {
		err := f.FederationClientset.Federation().Clusters().Delete(cluster.Name, &metav1.DeleteOptions{})
		framework.ExpectNoError(err, "Error deleting cluster %q", cluster.Name)
	}
}

// waitForNamespaceInFederatedClusters waits for the federated namespace to be created in federated clusters
func waitForNamespaceInFederatedClusters(clusters map[string]*cluster, nsName string, timeout time.Duration) {
	for name, c := range clusters {
		err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
			_, err := c.Clientset.Core().Namespaces().Get(nsName, metav1.GetOptions{})
			if err != nil {
				By(fmt.Sprintf("Waiting for namespace %q to be created in cluster %q, err: %v", nsName, name, err))
				return false, nil
			}
			By(fmt.Sprintf("Namespace %q exists in cluster %q", nsName, name))
			return true, nil
		})
		framework.ExpectNoError(err, "Failed to verify federated namespace %q creation in cluster %q", nsName, name)
	}
}

// can not be moved to util, as By and Expect must be put in Ginkgo test unit
func getRegisteredClusters(userAgentName string, f *fedframework.Framework) (map[string]*cluster, string) {
	clusters := make(map[string]*cluster)
	contexts := f.GetUnderlyingFederatedContexts()

	By("Obtaining a list of all the clusters")
	clusterList := waitForAllRegisteredClusters(f, len(contexts))

	framework.Logf("Checking that %d clusters are Ready", len(contexts))
	for _, context := range contexts {
		clusterIsReadyOrFail(f, &context)
	}
	framework.Logf("%d clusters are Ready", len(contexts))

	primaryClusterName := clusterList.Items[0].Name
	By(fmt.Sprintf("Labeling %q as the first cluster", primaryClusterName))
	for i, c := range clusterList.Items {
		framework.Logf("Creating a clientset for the cluster %s", c.Name)
		Expect(framework.TestContext.KubeConfig).ToNot(Equal(""), "KubeConfig must be specified to load clusters' client config")
		clusters[c.Name] = &cluster{c.Name, createClientsetForCluster(c, i, userAgentName), false, nil}
	}
	waitForNamespaceInFederatedClusters(clusters, f.FederationNamespace.Name, federatedNamespaceTimeout)
	return clusters, primaryClusterName
}

// waitForServiceOrFail waits until a service is either present or absent in the cluster specified by clientset.
// If the condition is not met within timout, it fails the calling test.
func waitForServiceOrFail(clientset *kubeclientset.Clientset, namespace string, service *v1.Service, present bool, timeout time.Duration) {
	By(fmt.Sprintf("Fetching a federated service shard of service %q in namespace %q from cluster", service.Name, namespace))
	err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
		clusterService, err := clientset.Services(namespace).Get(service.Name, metav1.GetOptions{})
		if (!present) && errors.IsNotFound(err) { // We want it gone, and it's gone.
			By(fmt.Sprintf("Success: shard of federated service %q in namespace %q in cluster is absent", service.Name, namespace))
			return true, nil // Success
		}
		if present && err == nil { // We want it present, and the Get succeeded, so we're all good.
			if equivalent(*clusterService, *service) {
				By(fmt.Sprintf("Success: shard of federated service %q in namespace %q in cluster is present", service.Name, namespace))
				return true, nil // Success
			}
			return false, nil
		}
		By(fmt.Sprintf("Service %q in namespace %q in cluster.  Found: %v, waiting for Found: %v, trying again in %s (err=%v)", service.Name, namespace, clusterService != nil && err == nil, present, framework.Poll, err))
		return false, nil
	})
	framework.ExpectNoError(err, "Failed to verify service %q in namespace %q in cluster: Present=%v", service.Name, namespace, present)
}

// waitForServiceShardsOrFail waits for the service to appear in all clusters
func waitForServiceShardsOrFail(namespace string, service *v1.Service, clusters map[string]*cluster) {
	framework.Logf("Waiting for service %q in %d clusters", service.Name, len(clusters))
	for _, c := range clusters {
		waitForServiceOrFail(c.Clientset, namespace, service, true, federatedServiceTimeout)
	}
}

func createService(clientset *fedclientset.Clientset, namespace, name string) (*v1.Service, error) {
	if clientset == nil || len(namespace) == 0 {
		return nil, fmt.Errorf("Internal error: invalid parameters passed to createService: clientset: %v, namespace: %v", clientset, namespace)
	}
	By(fmt.Sprintf("Creating federated service %q in namespace %q", name, namespace))

	service := &v1.Service{
		ObjectMeta: metav1.ObjectMeta{
			Name:      name,
			Namespace: namespace,
		},
		Spec: v1.ServiceSpec{
			Selector: FederatedServiceLabels,
			Type:     "LoadBalancer",
			Ports: []v1.ServicePort{
				{
					Name:       "http",
					Protocol:   v1.ProtocolTCP,
					Port:       80,
					TargetPort: intstr.FromInt(8080),
					NodePort:   FederatedSvcNodePort,
				},
			},
			SessionAffinity: v1.ServiceAffinityNone,
		},
	}
	By(fmt.Sprintf("Trying to create service %q in namespace %q", service.Name, namespace))
	return clientset.Services(namespace).Create(service)
}

func createServiceOrFail(clientset *fedclientset.Clientset, namespace, name string) *v1.Service {
	service, err := createService(clientset, namespace, name)
	framework.ExpectNoError(err, "Creating service %q in namespace %q", service.Name, namespace)
	By(fmt.Sprintf("Successfully created federated service %q in namespace %q", name, namespace))
	return service
}

func deleteServiceOrFail(clientset *fedclientset.Clientset, namespace string, serviceName string, orphanDependents *bool) {
	if clientset == nil || len(namespace) == 0 || len(serviceName) == 0 {
		Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteServiceOrFail: clientset: %v, namespace: %v, service: %v", clientset, namespace, serviceName))
	}
	framework.Logf("Deleting service %q in namespace %v", serviceName, namespace)
	err := clientset.Services(namespace).Delete(serviceName, &metav1.DeleteOptions{OrphanDependents: orphanDependents})
	framework.ExpectNoError(err, "Error deleting service %q from namespace %q", serviceName, namespace)
	// Wait for the service to be deleted.
	err = wait.Poll(5*time.Second, 10*wait.ForeverTestTimeout, func() (bool, error) {
		_, err := clientset.Core().Services(namespace).Get(serviceName, metav1.GetOptions{})
		if err != nil && errors.IsNotFound(err) {
			return true, nil
		}
		return false, err
	})
	if err != nil {
		framework.Failf("Error in deleting service %s: %v", serviceName, err)
	}
}

func cleanupServiceShardsAndProviderResources(namespace string, service *v1.Service, clusters map[string]*cluster) {
	framework.Logf("Deleting service %q in %d clusters", service.Name, len(clusters))
	for name, c := range clusters {
		var cSvc *v1.Service

		err := wait.PollImmediate(framework.Poll, federatedServiceTimeout, func() (bool, error) {
			var err error
			cSvc, err = c.Clientset.Services(namespace).Get(service.Name, metav1.GetOptions{})
			if err != nil && !errors.IsNotFound(err) {
				// Get failed with an error, try again.
				framework.Logf("Failed to find service %q in namespace %q, in cluster %q: %v. Trying again in %s", service.Name, namespace, name, err, framework.Poll)
				return false, nil
			} else if errors.IsNotFound(err) {
				cSvc = nil
				By(fmt.Sprintf("Service %q in namespace %q in cluster %q not found", service.Name, namespace, name))
				return true, err
			}
			By(fmt.Sprintf("Service %q in namespace %q in cluster %q found", service.Name, namespace, name))
			return true, err
		})

		if err != nil || cSvc == nil {
			By(fmt.Sprintf("Failed to find service %q in namespace %q, in cluster %q in %s", service.Name, namespace, name, federatedServiceTimeout))
			continue
		}

		err = cleanupServiceShard(c.Clientset, name, namespace, cSvc, federatedServiceTimeout)
		if err != nil {
			framework.Logf("Failed to delete service %q in namespace %q, in cluster %q: %v", service.Name, namespace, name, err)
		}
		err = cleanupServiceShardLoadBalancer(name, cSvc, federatedServiceTimeout)
		if err != nil {
			framework.Logf("Failed to delete cloud provider resources for service %q in namespace %q, in cluster %q", service.Name, namespace, name)
		}
	}
}

func cleanupServiceShard(clientset *kubeclientset.Clientset, clusterName, namespace string, service *v1.Service, timeout time.Duration) error {
	err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
		err := clientset.Services(namespace).Delete(service.Name, &metav1.DeleteOptions{})
		if err != nil && !errors.IsNotFound(err) {
			// Deletion failed with an error, try again.
			framework.Logf("Failed to delete service %q in namespace %q, in cluster %q", service.Name, namespace, clusterName)
			return false, nil
		}
		By(fmt.Sprintf("Service %q in namespace %q in cluster %q deleted", service.Name, namespace, clusterName))
		return true, nil
	})
	return err
}

func cleanupServiceShardLoadBalancer(clusterName string, service *v1.Service, timeout time.Duration) error {
	provider := framework.TestContext.CloudConfig.Provider
	if provider == nil {
		return fmt.Errorf("cloud provider undefined")
	}

	internalSvc := &v1.Service{}
	err := api.Scheme.Convert(service, internalSvc, nil)
	if err != nil {
		return fmt.Errorf("failed to convert versioned service object to internal type: %v", err)
	}

	err = wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
		lbi, supported := provider.LoadBalancer()
		if !supported {
			return false, fmt.Errorf("%q doesn't support load balancers", provider.ProviderName())
		}
		err := lbi.EnsureLoadBalancerDeleted(clusterName, internalSvc)
		if err != nil {
			// Deletion failed with an error, try again.
			framework.Logf("Failed to delete cloud provider resources for service %q in namespace %q, in cluster %q", service.Name, service.Namespace, clusterName)
			return false, nil
		}
		By(fmt.Sprintf("Cloud provider resources for Service %q in namespace %q in cluster %q deleted", service.Name, service.Namespace, clusterName))
		return true, nil
	})
	return err
}

func podExitCodeDetector(f *fedframework.Framework, name, namespace string, code int32) func() error {
	// If we ever get any container logs, stash them here.
	logs := ""

	logerr := func(err error) error {
		if err == nil {
			return nil
		}
		if logs == "" {
			return err
		}
		return fmt.Errorf("%s (%v)", logs, err)
	}

	return func() error {
		pod, err := f.ClientSet.Core().Pods(namespace).Get(name, metav1.GetOptions{})
		if err != nil {
			return logerr(err)
		}
		if len(pod.Status.ContainerStatuses) < 1 {
			return logerr(fmt.Errorf("no container statuses"))
		}

		// Best effort attempt to grab pod logs for debugging
		logs, err = framework.GetPodLogs(f.ClientSet, namespace, name, pod.Spec.Containers[0].Name)
		if err != nil {
			framework.Logf("Cannot fetch pod logs: %v", err)
		}

		status := pod.Status.ContainerStatuses[0]
		if status.State.Terminated == nil {
			return logerr(fmt.Errorf("container is not in terminated state"))
		}
		if status.State.Terminated.ExitCode == code {
			return nil
		}

		return logerr(fmt.Errorf("exited %d", status.State.Terminated.ExitCode))
	}
}

func discoverService(f *fedframework.Framework, name string, exists bool, podName string) {
	command := []string{"sh", "-c", fmt.Sprintf("until nslookup '%s'; do sleep 10; done", name)}
	By(fmt.Sprintf("Looking up %q", name))

	pod := &v1.Pod{
		ObjectMeta: metav1.ObjectMeta{
			Name: podName,
		},
		Spec: v1.PodSpec{
			Containers: []v1.Container{
				{
					Name:    "federated-service-discovery-container",
					Image:   "gcr.io/google_containers/busybox:1.24",
					Command: command,
				},
			},
			RestartPolicy: v1.RestartPolicyOnFailure,
		},
	}

	nsName := f.FederationNamespace.Name
	By(fmt.Sprintf("Creating pod %q in namespace %q", pod.Name, nsName))
	_, err := f.ClientSet.Core().Pods(nsName).Create(pod)
	framework.ExpectNoError(err, "Trying to create pod to run %q", command)
	By(fmt.Sprintf("Successfully created pod %q in namespace %q", pod.Name, nsName))
	defer func() {
		By(fmt.Sprintf("Deleting pod %q from namespace %q", podName, nsName))
		err := f.ClientSet.Core().Pods(nsName).Delete(podName, metav1.NewDeleteOptions(0))
		framework.ExpectNoError(err, "Deleting pod %q from namespace %q", podName, nsName)
		By(fmt.Sprintf("Deleted pod %q from namespace %q", podName, nsName))
	}()

	if exists {
		// TODO(mml): Eventually check the IP address is correct, too.
		Eventually(podExitCodeDetector(f, podName, nsName, 0), 3*DNSTTL, time.Second*2).
			Should(BeNil(), "%q should exit 0, but it never did", command)
	} else {
		Eventually(podExitCodeDetector(f, podName, nsName, 0), 3*DNSTTL, time.Second*2).
			ShouldNot(BeNil(), "%q should eventually not exit 0, but it always did", command)
	}
}

// createBackendPodsOrFail creates one pod in each cluster, and returns the created pods (in the same order as clusterClientSets).
// If creation of any pod fails, the test fails (possibly with a partially created set of pods). No retries are attempted.
func createBackendPodsOrFail(clusters map[string]*cluster, namespace string, name string) {
	pod := &v1.Pod{
		ObjectMeta: metav1.ObjectMeta{
			Name: name,
			// Namespace: namespace,
			Labels: FederatedServiceLabels,
		},
		Spec: v1.PodSpec{
			Containers: []v1.Container{
				{
					Name:  name,
					Image: "gcr.io/google_containers/echoserver:1.4",
				},
			},
			RestartPolicy: v1.RestartPolicyAlways,
		},
	}
	for name, c := range clusters {
		By(fmt.Sprintf("Creating pod %q in namespace %q in cluster %q", pod.Name, namespace, name))
		createdPod, err := c.Clientset.Core().Pods(namespace).Create(pod)
		framework.ExpectNoError(err, "Creating pod %q in namespace %q in cluster %q", name, namespace, name)
		By(fmt.Sprintf("Successfully created pod %q in namespace %q in cluster %q: %v", pod.Name, namespace, name, *createdPod))
		c.backendPod = createdPod
	}
}

// deleteOneBackendPodOrFail deletes exactly one backend pod which must not be nil
// The test fails if there are any errors.
func deleteOneBackendPodOrFail(c *cluster) {
	pod := c.backendPod
	Expect(pod).ToNot(BeNil())
	err := c.Clientset.Core().Pods(pod.Namespace).Delete(pod.Name, metav1.NewDeleteOptions(0))
	if errors.IsNotFound(err) {
		By(fmt.Sprintf("Pod %q in namespace %q in cluster %q does not exist.  No need to delete it.", pod.Name, pod.Namespace, c.name))
	} else {
		framework.ExpectNoError(err, "Deleting pod %q in namespace %q from cluster %q", pod.Name, pod.Namespace, c.name)
	}
	By(fmt.Sprintf("Backend pod %q in namespace %q in cluster %q deleted or does not exist", pod.Name, pod.Namespace, c.name))
}

// deleteBackendPodsOrFail deletes one pod from each cluster that has one.
// If deletion of any pod fails, the test fails (possibly with a partially deleted set of pods). No retries are attempted.
func deleteBackendPodsOrFail(clusters map[string]*cluster, namespace string) {
	for name, c := range clusters {
		if c.backendPod != nil {
			deleteOneBackendPodOrFail(c)
			c.backendPod = nil
		} else {
			By(fmt.Sprintf("No backend pod to delete for cluster %q", name))
		}
	}
}

// waitForReplicatSetToBeDeletedOrFail waits for the named ReplicaSet in namespace to be deleted.
// If the deletion fails, the enclosing test fails.
func waitForReplicaSetToBeDeletedOrFail(clientset *fedclientset.Clientset, namespace string, replicaSet string) {
	err := wait.Poll(5*time.Second, wait.ForeverTestTimeout, func() (bool, error) {
		_, err := clientset.Extensions().ReplicaSets(namespace).Get(replicaSet, metav1.GetOptions{})
		if err != nil && errors.IsNotFound(err) {
			return true, nil
		}
		return false, err
	})

	if err != nil {
		framework.Failf("Error in deleting replica set %s: %v", replicaSet, err)
	}
}


If you're looking for a workout that strengthens more than just your core, come to Essential Hot Yoga. Our yoga classes are designed to balance mind, body and spirit. Each class focuses on developing your strength, flexibility and awareness. You'll learn to live in the moment and appreciate your body in a whole new way! Participants of all ages and skill levels are welcome.
We have five locations for your convenience. Learn more by contacting Essential Hot Yoga today.
Check out our class offerings in Nampa, Boise, Garden City and Meridian!
Our all levels Hot 26 Yoga class is a set sequence of 26 static postures and 2 breathing exercises. 26 postures and 2 breathing exercises are practiced in this sequence with no upper body weight-bearing postures. Each posture prepares the body for the next, allowing students to gain strength, flexibility, and balance. The heat adds to the physical effort required to do the postures and aids to condition the body. This class is perfect for students who prefer to spend more time in each posture, working on alignment and technique.
Build strength, flexibility, balance and concentration in this challenging yet accessible class! Learn the set sequence and watch your practice grow as you break through old limitations and reach new levels of achievement. Be prepared to sweat and leave your mat feeling re-energized, re-vitalized and re-stored. 104 degrees w/ humidity.
Spend more time in each posture working on alignment in this Hot 26 class! Enjoy a dynamic warm up that includes sun salutations followed by 26 static postures set to inspiring music. The set sequence is suitable for beginners and also advanced practitioners. 104 degrees w/ humidity.
Kick it up a notch with Hot Sculpt! This 60-minute class starts with a dynamic yoga warm up then transitions into a high-intensity, high-energy workout that uses resistance bands and light weights to build long-lean muscles. Expect a fun play list while you challenge yourself physically and mentally, and enjoy total body results in a short period of time!
Unite breath with movement in this dynamic yoga flow class! Each class is unique, giving you the opportunity to explore your body and mind in ways that you may have never experienced before. You'll love the sense of creativity and aliveness this class will ignite within your soul! Just enough heat and humidity to create a detoxifying sweat. 90 degrees.
Awaken your senses and experience the meditative focus and intensity of candlelight. Step into the surroundings of a uniquely illuminated candlelit studio with soothing tunes to guide you away from the tensions of the day. You will be guided through a gentle practice that uses strength but also incorporates restorative postures for a gentler and more healing approach - relieving stress and relaxing from the inside out.
Our Veterans yoga class is a non-heated class specifically designed to accommodate any physical condition or ability. The postures will build strength, flexibility, balance and mental focus, all of which will contribute to improved overall health and well-being. Free of charge for veterans/active military and one adult companion.
Enjoy this non-heated, mellow practice working deep into the connective tissue surrounding the joints. These floor postures are held for 3 to 5 minutes to working deep into the tendons, ligaments and fascia in the body. This class is a perfect complement for anyone leading an active style.
Baby + Me Yoga is a 60 minute yoga class designed for parents or guardians to practice yoga with their new bundles of joy! Every class includes yoga poses and flows that can be done with or without your baby, as well as guided meditation and breathing exercises. All babies from 4 weeks up to 18 months are welcome. If you are newly postpartum (up to 8 weeks), please be sure to get cleared for exercise from your doctor or midwife before joining us. $10 per class. Purchase in studio.


If you live out of Adelaide or on holidays but need maintenance done while you are not home, you can trust us! We can inspect to tree on site, while you away enjoying yourself. Before and after photos will be sent to you wherever you are, and make sure you are happy.
TORO STX26 Stump Grinder, Made in the USA, 26hp V Twin Kawasaki engine, Transport speed 6.8kmh forward 2.6kmh reverse, works very well on any surface, on tracks for soft ground and muddy conditions, Patented control system, Fully Hydraulically controlled operation for grinding, no clutch, cogs or belts to burn.
Find high quality Used, and New Stump Grinders for sale. Large inventory to choose from. Compare & Buy Now.
TCT are Tree removal & Stump removal specialists, servicing all Adelaide Metropolitan and Adelaide Hills areas.
Tree Stump Grinding TJA Tree Services make sure the tree is removed correctly and efficiently, but sometimes the stump of the tree is left behind. If there are roots still left in the ground, which are unseen, this may cause infection to spread or termites to arise.
Tree Stump Grinding Adelaide. TJA Tree Services make sure the tree is removed correctly and efficiently, but sometimes the stump of the tree is left behind. If there are roots still left in the ground, which are unseen, this may cause infection to spread or termites to arise.
Stump Works Videos Stump Works Stump Grinding and Tree Removal Videos Adelaide. Click on the link below to view the Stump Works Stump Grinding Tree Removal Videos Adelaide of Mike Polley using the Red Roo SP4012 Stump Grinder on 14 stumps in Adelaide South Australia.
Sturt Stump Cutters are the qualified arborists based in Brighton SA but serve the eastern, western and southern Adelaide metropolitan areas as far south as Victor Harbor and the Fleurieu peninsula. Sturt Stump Cutters has been owned and operated by Russell Ellis for over 35 years. Call Russell on 0418 823 733 for a FREE quote.
Global Machinery Sales supplies the arbor, forestry, access and farming industries with quality wood chippers, stump grinders, forestry mowers, skid-steer loaders, spider lifts, mini loaders and recycling equipment from leading brands such as Morbark, Rayco, CMC, Boxer and Angry Ant.
Oct 23, 2008· The Adelaide Arborists in conjunction with Vermeer Australia showing off their new VERMEER SC852 Stump Grinder on a big stump.
Taking Care of Trees are Tree and Stump removal specialists with over 20 years of industry experience. Services include safe tree removal and pruning, grinding stumps, Arborist development reporting and diagnosis advice, and the supply of clean mulch and firewood.
Jack of all Trees is a locally owned and operated tree removal business that cares about the community and its reputation within it. We are a professional crew that have years of training and experience in heavy duty equipment, safety and customer service.
Servicing Adelaide Hills & Eastern Suburbs. Tree Removal and Tree Services. Local Hills Company. Affordable & Fully Insured. Call for FREE Quote 0438 110 273.
To put the finishing touches on your tree removal, allow All Out Trees to take care of your tree stump removal in Adelaide.Utilising quality stump grinders, we focus on grinding the stump ball, which reduces the likelihood of regrowth and visible surface roots.
Professional Tree Stump Grinding Adelaide TJA Tree Services make sure the tree is removed correctly and efficiently, but sometimes the stump of the tree is left behind. If there are roots still left in the ground, which are unseen, this may cause infection to spread or termites to arise.
Adelaide Hills Tree and Stump Removal is a South Australian, family owned company, and have been in the business for over 20 years. We're skilled, efficient, and we work with respect to you and your property. Being environmentally minded, we are careful with our work, the stationery we use, and regularly donate to Trees for Life.
Tree Stump Removal Adelaide. ... After the tree has been cut to near ground level, one of our three stump grinders will gnaw away at the wooden stump, turning it into woodchips. ... clients should always consider the location of any underground services that may be in the vicinity of the tree stump.
Tree & Stump Removal. The Seaview Tree & Stump Service team can offer you a range of solutions for all manner of tree removal requirements. We assist clients right across the Adelaide Metropolitan & Adelaide Hills regions.
STUMP REMOVAL. Stump removal or grinding is the process of removing the stump left after a tree has been cut down. A heavy-duty professional stump grinder is used to axe out the tree stumps or we can remove stumps by hand depending on accessibility to the site.
Stock of used Vermeer Stump Grinders, as well as traded used Bandit, Toro, Rayco and Stump Humper Stump Grinders, are available at times in our Townsville, Brisbane, Sydney, Melbourne and Adelaide dealerships.
Tree Stump Services in Adelaide . With over 15 years experience in stump removal and grinding we have the equipment and know how to ensure all our work is completed to the highest standards. We take exceptional pride in our workmanship and no job is too difficult.


text:
Nigerian Newspapers (Saturday, 11th May, 2019 Edition)
Good Morning Nigeria! Here are few stories you need to know this Saturday morning????. Enjoy!
1. President Muhammadu Buhari on Friday revealed that it was easier to woo the South-West region during the creation of the All Progressives Congress in 2014.
"It was easier to woo the South-West because it was more united," Buhari stated. Read his speech on Naija Buzz
Buhari stated this when he was honoured by The Progressives Governors Forum alongside seven APC Governors and Ex-Governor Rauf Aregbesola of Osun State on Friday.
The 7 APC governors who are outgoing governors includes; Rochas Okorocha (Imo State); Alhaji Kashim Shettima (Borno State); Tanko Al-Makura (Nasarawa State); Ibikunle Amosun (Ogun State); Abiola Ajimobi (Oyo State); Ibrahim Giadam (Yobe State); and Abdulaziz Yari (Zamfara State).
2. Governor Rochas Okorocha of Imo State while speaking at the Presidential Villa in Abuja on Friday during The Progressives Governors Forum award said that he and 7 other governors who were honoured were among the few first generals of President Muhammadu Buhari.
"I recall vividly in 2014 when the merger struggle started with all my colleagues here, we were the very first few generals of President Buhari in the merging arrangements," Okorocha said.
Rochas who is the Chairman of the APC Governors Forum described Buhari as a leader with vision who is destined by God to governor Nigeria.
"You are destined by God to govern this country," Okorocha said.
READ OUR POST: President Buhari must obey court orders and release El-Zakzaky immediately – Amnesty International tells Nigerian Government
3. On Friday, a Federal High Court in Kano ordered Governor Abdullahi Ganduje to stop the decentralization of the Kano Emirate.
The court also ordered the Kano State House of Assembly and the Attorney General of Kano State not to recognizing the additional emirates.
Naija Buzz had reported how the State House of Assembly passed a bill to decentralize the Kano Emirate by creating 4 additional emirates in the state and how Governor Ganduje immediately signed the bill into law.
4. Governor Abdullahi Ganduje while speaking to State House correspondents in Abuja on Friday vehemently denied that the recent move by the state government was aimed at getting back at the Emir of Kano.
Ganduje said he had nothing against the emir, adding that Sanusi ordinarily should be reporting to a Local Government Chairman and not a State Governor.
"It is not vendetta; I am not against him, in fact he is supposed to be reporting to the local government chairman according to the Constitution of the Federal Republic of Nigeria," he said. Read More on Naija Buzz
5. The Court of Appeal on Friday dismissed the four appeals filed by former Chief Justice Walter Onnoghen, over his trial by the Code of Conduct Tribunal.
The court however faulted the order issued by the CCT on January 23, 2019 to President Muhammadu Buhari to suspend the former CJN.
The Appeal Court panel led by Justice Stephen Adah said that; "Since the substantive matter before the CCT has already been concluded, this appeal is already spent and there is no basis to go into the nitty-gritty of the ex parte order."
Related Items:featured
Nigerian Newspapers (Monday, 13th May, 2019 Edition)

redpajama_set_name: RedPajamaCommonCrawl


text:
Jean-François Larrieu est un peintre français né le  à Tarbes (Hautes-Pyrénées). Il vit et travaille à Paris et à Saint-Jean-de-Luz.

Biographie
À l'âge de 11 ans, Jean-François Larrieu entre à l'académie de peinture François Villon. Une année plus tard, en 1972, il reçoit le prix de peinture François Villon.

En 1978, il reçoit le prix de peinture du musée Béarnais, de la ville de Pau où une première exposition muséale lui est consacré.

En 1982, il s'installe à Paris pour y mener sa carrière et s'engage, en parallèle, pour la cause artistique. En 1987, il devient le cofondateur du comité de défense des artistes du Grand Palais pour soutenir des associations d'artistes indépendants.

Ses œuvres sont sur les cimaises de plusieurs salons et expositions de groupes tels que le Salon « Figuration Critique », ou le Salon Comparaisons dans lequel il sera en 2006 le fondateur du groupe « Écritures Exubérantes ». Ce groupe réunit les peintres Robert Combas, Antonio Segui, Osvaldo Rodriguez, Didier Chamizo, Drago Dedic…

Il expose également au Salon d'automne dont il devient membre du conseil d'administration en 1990. Il en assurera la présidence de 1995 à 2004.

Il célébra en 2003 le centenaire du Salon d'automne en réunissant à cette occasion les descendants de grands peintres du Salon pour une photo historique : Bissière, Bonnard, Carrière, Cézanne, Derain, Kisling, Picabia, Picasso, Renoir, Vuillard...

Cette même année, il fera représenter la France à la première biennale internationale d'Art Contemporain de Beijing par une sélection d'artistes du Salon d'Automne.

En 2005, Jean-François Larrieu est élu président de la Fédération des Salons Historiques du Grand Palais à Paris. Il cofonde en 2006 la manifestation « Art en Capital » pour la réouverture du Grand Palais. C'est le lieu d'origine des Salons Historiques (salon des artistes français, salon des indépendants, salon Comparaisons, salon de la Société nationale des beaux-arts, et salon du dessin et de la peinture à l'eau).

Il prend les fonctions de président, depuis le , de la Fondation Taylor (il en était le vice-président depuis 2005). C'est une association reconnue d'utilité publique qui a pour but de développer la connaissance des arts, grâce à l'entraide entre artistes. Chaque année, des prix et des bourses sont remis à des artistes choisis par les membres du comité.

Son œuvre a fait l'objet d'expositions dans les musées de France et à l'étranger. Comme aux musées d'Arts contemporains de Moscou et Saint-Pétersbourg en 1991. Puis au musée Sursock de Beyrouth en 1993, au musée national d'Art moderne de Tokyo et musée d'Art informel de Nakagawamura en 1994, au musée des Beaux-Arts de Bordeaux en 1998. Ensuite au musée national de Chine en 2001, au musée national de Taïwan, au musée des Beaux-Arts de Kaoshwing à Taïwan en 2004.

Il participe en 2008, à l'exposition officielle des Jeux olympiques de Pékin avec les artistes Wan Guangyi, Feng Zhengjie, Robert Combas, Peter Klasen..., dans les musées d'Art Contemporain de Shanghai, Today art de Pékin, musée des Beaux-Arts Sichuan de Chengdu, musée d'Art moderne RCM de Nanjing, musée d'Art de Guangzhou Art Academy, musée de Luxun Art Academy de Shenyang.

Il réalise également un timbre en Chine dans le cadre de l'année de la France en Chine.

De multiples expositions personnelles lui sont consacrées par Opera Gallery notamment à
New York : en 2001, 2003, 2005, 2007
Hong Kong : en 2006, 2009, 2011
Séoul : en 2008, 2012
Dubaï : en 2010, 2013
Paris : en 1999, 2002, 2007
Singapour : en 1999, 2001, 2004, 2007
Tokyo : en 2012
 Il apparaît dans le Bénézit, dans l'annuaire de l'Art International et dans le Who's Who.

Expositions dans les musées
France
 Neuilly-sur-Seine, musée Arturo Lopez.
 Montbart, musée des Beaux-Arts.
 Bordeaux, musée des Beaux-Arts.
 Chaumont, Chapelle des Jésuites.
 Tarbes, Carmel.
 Paris, musée de la Poste.

Chine
 Pékin, musée Today Art.
 Pékin, musée National de Chine.
 Pékin, musée Zitan.
 Shanghaï, musée d'Art Liu Hai Su.
 Shanghaï, musée d'Art Contemporain.
 Chengdu, province de Sichuan, musée des Beaux-Arts.
 Nanjing, musée d'Art Moderne RCM.
 Guangzhou, musée d'Art de Guangzhou Art Academy.

Japon
 Tokyo, musée d'Art Moderne Ueno.
 Tokyo, Temple Josenji.
 Tokyo, musée Informel Nakagawamura.
 Tokyo, Bunkamura Gallery.
 Okinaya, musée Garden.
 Fukuoka, Terrjin Salaria Event Space.

Taïwan
 Taïwan, musée National des Beaux-Arts.
 Taïwan, musée des Beaux-Arts de Kaohswing.
 Taipei, musée d'Art Moderne.

Autres
 Liban, Beyrouth, musée Sursock.
 Espagne, Santander, fondation Santillana.

Notes et références

Annexes

Bibliographie

Presse écrite
 Univers des arts,   lire en ligne

Liens externes

Peintre français du XXe siècle
Peintre français du XXIe siècle
Plasticien français contemporain
Naissance en février 1960

redpajama_set_name: RedPajamaWikipedia


text:
Biblical Angel
According to a biblically accurate angel description, the Israfil, or "cherubim," is an archangel who will blow a trumpet from the holy rock of Jerusalem, the Dome of the Rock. His appearance is quite similar to that of the cherubim, although the latter is not the same as the cherubim. In the second chapter of the Bible, we are told that God created the heavens and the earth, and everything in them. The Bible indicates that angels were created at the same time the earth was formed, even before human life was created. They are spiritual beings created by God, and they may appear to be in human form or other forms in the Bible. We know now that there is a hierarchy of angels, and each of them has its own roles to play.
Cherubim have straight legs, four wings , and bull hooves for feet. The concept of angels is rooted in Christian theology, and the Hebrew Scriptures depict them as virtuous. As angels, they embody virtuous behavior, but human beings can sin and repent. Therefore, the prostration of angels before Adam is often interpreted as evidence that human beings are superior to angels.
The Book of Tobit is not, however, acknowledged by most Protestant denominations. In it Raphael says to Tobias that he was "one of the seven who stand before the Lord", and it is generally believed that Michael and Gabriel are two of the other six. In most Christian traditions Gabriel is also considered an archangel, but there is no direct literary support for this assumption.
Biblical facts about angels
In Zoroastrian angelology, they are considered fallen angels who were punished for falling in love with mortal women. The fal'Cie from Final Fantasy XIII are divine beings created by the gods that also created mankind and Cocoon with the express purpose of keeping the world on its axis . They have various machine-like characteristics and come in a variety of unusual forms, ranging from humanoid to incomprehensible. Uriel's name is not mentioned in the Western Christian Bible, but plays a prominent role in an apocryphal book read by Anglican and Russian Orthodox Christians, the Second Book of Esdras . In the book, he unveils seven prophecies to the prophet Ezra.
Saint Peter's Gateway to Heaven Art Print
Though he's not mentioned by name in the Bible, Israfil may be one of the most important angels. Here are some of his tasks and the significance of his role in Islam. Although we won't look at every instance, this study will offer a comprehensive look at what the Bible says about these fascinating creatures. The Grotesqueries — also known as the Watchers — are a monstrous race of angelic monstrosities. They look like twisted versions of cherubs; namely, gigantic babies made of marble with wings of lightning… SCP-469 (Many-Winged Angel) resembles the common depiction of angels, just with a lot more wings.
Since ancient times, artists have attempted to capture images of angels on canvas. So we can see that it looks like God also has his good angels over countries and kingdoms working to do His will, and protecting and strengthening kings and the people. So it looks like Gabriel was assigned to be with the kings of Medo-Persia, to strengthen and protect them.
They also accept orders from the angels and transform them into miracles for those deserving. When they appear to us in their earthly form, they are musicians, artists, healers, and scientists who work with the power of love and physics. Jesus' ascension is believed to have had two angelic attributes. biblical accurate angels are close to God, and they surround his throne and emit an intensely fiery light representing his love. Seraphim's are considered "fiery serpents," and other celestial beings cannot see them.
Biblically Accurate Angels
In the 12th century, scholars divided the angels around God into categories based on a hierarchical system. In Christianity, this is referred to as the three spheres and the nine orders of angels, because it describes a three-tier system with three types of angels in each tier. But near the bottom of this Hierarchy are the Cherubim. That's not to say that heaven does not have its fair share of human-like angels. But, since they don't change our perception of what angels look like, we'll focus on the Biblically accurate angels who would actually be scary.
Best Gambling Sites 2022
52 Ways To Avoid ONLINE CASINO GAMING Burnout


text:
Weekly Roundup, Friday 11 October 2019
Leave a Comment / October 11, 2019 October 15, 2019
Yes, an aurora. But this is the Aurora Australis, not the better known Aurora Borealis. Read about our tour to see the Aurora Australis, immediately below.
It is great to be back, after what has been quite a while since a Travel Insider newsletter appeared in your Friday in-box. I've been busy with the two tours that ran back-to-back in September, but it has been a great sort of being busy, with wonderful experiences and delightful groups in both Scotland and France.
I again point out that while the newsletters went on hiatus for several weeks, my Twitter posting continued more or less as normal. It is possible to squeeze in a few minutes here or there to find and share stories on Twitter, but when on tour, it is not possible to be able to find eight or more hours of uninterrupted concentration to assemble a newsletter, building on the stories earlier tweeted.
If you don't like Twitter, I get that. There is a way to get daily doses of my tweets that does not involve using Twitter at all – you can sign up with the Ketchup newsletter service for my @TheTvlInsider twitter feed.
Astonishingly, the weather was better in Scotland than France. I even got slightly sunburned on one day in Scotland, but never ran a similar risk in France. This was surprising because at least in theory, there should have been something like 10° (F) of extra heat in France compared to Scotland, but weather is always a fickle sort of thing.
Everything went very smoothly on the Scotland tour, although our two night stop in the lovely tiny town of Tobermory was marred somewhat because the town's main restaurant had been destroyed in an early morning fire a couple of months earlier, changing the town from having plenty of restaurant and bar services for visitors to making both a scarce commodity. Fortunately, no-one went hungry; and yet again, one of the regular comments by the people on the tour was to express surprise at how good the food was.
At the risk of upsetting the French, I'll go further than that and say the food (and service!), even in small towns in Scotland, was generally better and more varied than in some of the larger French cities we visited. Sure, there were possibilities to spend substantial sums on high-end restaurants and food, but for regular priced eating, the choices were dismayingly limited, and I don't think I saw a single vegetable for over a week – just fries and salads, usually alongside a very disappointing steak. One restaurant's excuse, when several of us all complained about our steaks, was to say that the cut of meat that was the only steak on offer on their menu was known to be one of the worst cuts of meat possible, which begged the question "If that is the worst type of steak, why is it the only steak choice on your menu?". (The cut was entrecôte, which is another name for ribeye, to my mind one of the best cuts of meat.)
But the French tour had plenty of positive to go alongside the dreary food and the sometimes ridiculously overpriced beer (€12 or more for a 500 ml/17 ounce drink). Some great wine at amazing values (in the supermarkets, not so much in the restaurants of course), incredible old castles and chateaus, beautiful historic towns and stately cities, and gorgeous landscapes and seascapes/coastline. Bordeaux in particular is looking better and better every time I visit, and I plan a one-week Bordeaux based land-cruise for next year.
Which brings me to – oh yes – tours for next year. This week I've an NZ tour in March to share; next week I'll offer up a May tour.
The New Zealand tour is a totally new tour that I hope you'll be as excited about as I am. It has a very distinctive theme to it – the Aurora Australis. Of course you know all about the Aurora Borealis; the Aurora Australis is its southern twin, and New Zealand is a great place to see it from. Indeed, NZ is a better place to see the Southern Lights than Iceland is to see the Northern Lights, and dare I add that there is more to see, do, and enjoy in NZ during the days than in Iceland, too!
Please see the attached teaser about the tour, and then go visit the main tour page.
Of special note is that I'm offering a very short term early sign up discount. Sign up by the end of Monday 14 October, and I'll give you a $100 per person special early signup bonus.
Signing up quickly – whether by Monday for the discount, or at any other time – is truly important. Because March is "next year" it seems further away than it is. Queenstown in particular is already nearly full for March – Expedia warned me that the town is over 75% full for the nights we are staying there. I've "scientifically" chosen what I believe to be the very best days to be there in terms of probability of seeing the lights, so can't change the dates, so it really is important to consider this tour now and let me know as soon as you conveniently can if you'd like to come.
Talking about Iceland, I got to spend an unexpected "bonus" night there on the way back from France. The airport closed due to strong winds; my inbound flight was one of the last accepted, and all outbound flights were cancelled until the next day. As you can imagine, the airport was a total zoo, with people everywhere, and you'll be unsurprised to learn that even though it seems that wind-related closures are not uncommon, Icelandair was woefully unprepared to handle the surge of people with missed flights and suffering forced overnights.
I got back home the next day; my bags took another two days to catch up. Oh – I didn't see any Aurora Borealis.
What else? It is sometimes hard to pick up the pace again after several weeks away – does one limit oneself only to the last week, or does one allow events from previous weeks also to flow through?
Several Weeks of Continued Bad News for Boeing
Alitalia Unions Strike Because Their Airline is Failing, Yet Again
Do You Know Who Used to be the Largest Airplane Manufacturer, Way Back?
I'm From the (Californian) Government and I'm Here to Save the Planet, One Hotel at a Time
Another Electric Car Disappointment
A New Amazon Tablet – Much the Same as the Old One
And Lastly This Week….
For sure, there's still a steady flow of bad news for Boeing, and they not only have their new 737 MAX planes still grounded, but one in every 20 of their previous generation of 737s have also now been grounded pending urgent repairs to newly discovered cracks on their wing/body connections.
The 737 MAX return to service date seems to have slipped yet again. Boeing hasn't said as much, but now that it is almost mid October, it seems clear that their timeline – getting a final proposal to the FAA to signoff on in September – is not happening as planned. Confirming this was American's announcement earlier this week that it was again delaying their rescheduling of 737 MAX flights; and they are now hoping to return them to the schedule from January 16.
Boeing had earlier said it expected to get approval from the FAA for a return to flight in October, clearly AA doesn't see that as happening, and with the final application yet to be submitted to the FAA, AA is wise to extend its 737 MAX freeze still further.
Southwest pilots are suing Boeing for their loss of more than $100 million in earnings due to not being able to fly 737 MAX planes. But Delta pilots (DL has no 737 MAX planes) are sitting smugly, getting double-pay overtime for flying more flights to make up for shortages of WN/UA/AA 737 flights.
Two thoughts about that. First, double-time rather than time-and-a-half (or even just more straight time) is very generous. Secondly, "overtime" is a strange concept when you consider the average pilot's normal hours are seldom even 20 hours a week. Who reading this wouldn't also love to get a generous six-figure salary for working half-time hours, and to get double-rate overtime if their hours were to increase over half-time.
I'm surprised to see that only now are there starting to be calls for some senior level resignations at Boeing. Needless to say, there's absolutely no sign of such calls being heeded. Furthermore, many of the people with most responsibility for the 737 failures and problems are no longer at Boeing. But the more the delay in returning the plane to service grows, the more that responsibility passes from people back when the plane was first approved to the people now who seem unable to complete the recertification process.
A new whistleblower has more damning revelations about Boeing's approach to safety on the 737. The Seattle Times has a typically excellent report here. And the Wall St Journal reports that the 737 used to have some safety systems that the MAX version omitted.
Meanwhile, it seems the FAA may have misled Congress when it tried to spin an earlier whistleblower's claims about Boeing's 737 program more positively than it should have done. Why is the FAA going out of its way to be so pro-Boeing?
Most of all though, here's the article that should be top of your reading pile. A lengthy account and damning in its detail about Boeing's switch in corporate culture from "safety first" to "profit first".
Boeing continues to push the "It wasn't our fault, it was the pilots' fault" line whenever it can find someone willing to listen and repeat it. While I'm the first to agree that many – maybe even most – pilots today no longer have the basic fundamental flying skills that pilots had a generation ago, that's an open secret that everyone knows. It is totally Boeing's responsibility to make their planes capable of being flown by the pilots who end up, for better or worse, certified to fly them and in the cockpits.
With all this ongoing 737 negativity, it is perhaps no surprise that Boeing is seeking greener pastures elsewhere. But, really – choosing to invest $20 million into the Richard Branson "Virgin Galactic" company hardly seems a prudent piece of diversification. About the only thing in common between the two companies – apart from recent fatal crashes – is an inability to meet their self-imposed deadlines.
Virgin Galactic, which Branson had most recently said would be sending him aloft to celebrate the 50th anniversary of the Apollo moon landing back in July, now is saying it "still feels good" about starting operations "next year". I've lost count of how many times they've been expecting to start operations "next year", but, as the saying goes, "tomorrow never comes".
One last thing about Boeing. I came across an old article this week about the B-52 and re-engining air planes in general. It was a fascinating discussion of how a "simple" seeming process of replacing old engines on a plane with newer better engines is seldom simple, and often either opens new cans of worms, or provides no practical benefit because other factors are limiting the airplane's performance, no matter what sort of engines it has.
In simple terms, the 737 MAX problems all can be traced back to the latest re-engineering of the venerable 737 airframe. What a shame that the people who did that were unaware of this article; if they'd read it, just maybe they might have reconsidered their plans.
It is a great read. Recommended.
Alitalia is the airline that refuses to die. Although EU regulations make it illegal for governments to subsidize businesses, somehow, mysteriously, Alitalia continues to get money from somewhere to keep it alive and aloft.
But its underlying problems – an inefficient operation and ridiculous routes – remain in place, ensuring the airline can not and will not become profitable. And its unions, terrified that new productivity and work requirements imposed on them by possible new owners might see their members forced to actually work for a change, are pre-emptively stating their case to preserve the status quo the only way they know – by going on strike.
The negative side-effects of their strike – still more losses for their employer, and still more defections from frustrated would be passengers – doesn't seem to have occurred to them, or, if it did, doesn't seem to worry them. And perhaps that is appropriate, because, after all, they work for the airline that will not die.
The first plane I ever flew on was a Vickers Viscount, the second a DC3, and the third (and fourth and fifth and sixth and so on) was a Fokker F.27 Friendship (also known as the Fairchild F.27 Friendship).
I never liked the plane all that much – compared to the 737s which Air New Zealand also operated domestically, way back then, the Friendship was very noisy, much slower, and flew at a lower altitude in the middle of the rough air that covers so much of NZ, rather than at a higher altitude above the rough air.
But, in a manner akin to the DC3 that it generally replaced, it was a solid and stolid workhorse of a plane. Unglamorous but functional. Reliable, easy to fly, and undemanding in terms of runway length and services.
It was unfortunate when Fokker failed in 1996.
I came across an interesting article about the company this week, including the point that in the 1920s, it was the largest manufacturer of aircraft in the world. Who knew?
I'm still astonished that California's approach to preventing power-line induced wild-fires is not to fix the power lines but to simply turn off the power to millions of its citizens, for unknown stretches of time, because it is windy and dry. Of course the fact that its utilities refuse to accept any liability for cutting the power to their subscribers definitely makes this easier than maintaining their power lines, but it is sad when the most developed country in the world can't guarantee essential electricity to its citizens.
But while the Golden State's legislators see nothing wrong with this, they have been very busy saving the planet – they have banned hotels from giving guests single-use shampoos and other amenities. Containers must now hold at least 6 oz of product, which presumably is more than most hotels would be willing to give per guest. Details here.
Two points of concern. First, is it really compatible with the concept of a free society and personal freedom to have governments telling hotels what size amenities they can give guests? Conceivably a government might impose an "environmental tax" on small sized products, but to ban them outright? That's a slippery slope, and currently it seems to be headed in an alarming direction – we may all be forced to use nasty industrial grade sandpapery style toilet paper if environmental extremists have their way.
Secondly, every element of travel is "environmentally impactful". Why go after the small container of shampoo at a hotel after a person has flown several thousand miles to get to the hotel? If people are going to obsess over such things, why not attack the very big things, rather than the tiny little ones? Will we soon be banned from getting daily hotel towel changes? Will the size and weight of a towel be limited? And so on – where does it stop?
The answer to that question of course is the people who are now gleefully forcing us to use awful bulk liquid soap instead of nice small bars of soap have every intention of working their way up the chain, but they're using a "boiling frog" strategy. They are starting off with small things that no-one really cares much about, but do not believe for a minute they will stop after getting single use toiletries banned. Next the 6oz minimum size will become 12oz. And then there will be other restrictions and controls on other discretionary and "quality of life" non-essentials, including, absolutely for sure, toilet paper. Maybe they'll require us to use both sides of each sheet?
By imposing these restrictions stealthily, little by little, they hope we'll never realize that all these small changes are adding up to some huge fundamental big changes in our lives and lifestyles, just like the frog allegedly never thinks to jump out of a pot of slowly heating water.
There is a fundamental issue here – are we willing to destroy our quality of life in the hope that doing so may "save the planet" – a planet that may or may not be at risk in the first place? The extremists wish us to indeed do that. Whether it be restricting our heating and cooling, the style of our lights at home, or our travel, or our eating of meat, or anything else, it is all fair game to them.
Meanwhile, no-one is brave enough to note the continued enormous increases in emissions of all kinds in China and India with environnmental impacts that are so much more tangible than disposable shampoo bottles and plastic straws. No-one is brave enough to point out that population control would allow a stable population to maintain a high quality of life, and that the environmental impacts, such as they may be, are in direct proportion to our growing populations. Bizarrely and illogically, it seems accepted that people have an absolute right to have an unlimited number of children, but not a right to enjoy a high quality of life.
Sir James Dyson, the guy who invented the Dyson vacuum cleaner that revolutionized vacuum cleaner design/performance, has been banging on for several years about developing an electric car. His electric car was sometimes promised to be based on a new type of battery technology that he was also developing, although sometimes he conceded that his first generation of cars would have to use current style batteries.
Last year he made the strange decision to base the planned car factory in Singapore. Car factories require a lot of land, and a reasonably large number of employees. Singapore – a great country for sure – is very short of both, and both are extremely expensive. It is a great country for "knowledge workers" who can sit in high rise buildings and justify their necessarily high salaries, but not such a great country for factory workers, and definitely not a great country for factories and warehouses.
So it wasn't really a huge surprise that this week he has now said his plans have all fallen through and he is giving up on electric cars completely. This article reports on the collapse in his plans.
But I have to disagree with the article's claim "sales of electric cars are climbing rapidly". That's absolutely not the case in the US.
All three Tesla models are in steady decline in terms of monthly sales compared to the same month last year, and the reason for their decline is not because of new competitors taking market share from them. Other prominent new electric cars are failing to get any traction, and established cars such as the Nissan Leaf and Chevy Bolt are either also in decline or struggling to hold on to their low numbers of monthly sales.
In September, Tesla S sales were less than one third the number they were in September last year, Tesla X sales were less than half, and even the Tesla 3 was down almost 15%. Here's a great tabulation of monthly sales data.
The underlying business case for electric cars seems unassailable – low maintenance, high performance, and astonishingly low operating costs per mile. But even the modestly priced models (Tesla 3, Nissan Leaf, Chevy Bolt, or less well known cars such as the Hyundai Kona Electric and Kia Nero EV) struggle to sell. Meanwhile, Ford still hasn't released a single all-battery powered vehicle, and Toyota continues to play with the no-future hydrogen fuel-cell concept, also with no all-battery cars at all.
I find the failure of electric cars to get more widespread support, both by manufacturers and purchasers, inexplicable.
My favorite tablet is the Amazon Fire HD 10. Priced at a bargain $150, it has a great screen (10.1″ diagonal, 1920×1200), good battery life, and both a headphone jack and a Micro-SD card slot, making it ideally suited for loading up with music and movies (both Netflix and Amazon Prime Video allow you to download movies and watch them offline). Its screen is much better than the smaller HD 8, making the HD 10 the best tablet choice for most of us.
I've had mine for several years, and have been wondering when Amazon would come out with a new model, and in what way it would be improved. Well, the new model came out this week, and in almost every way – size, screen, weight, price – is identical to the model it is replacing. The only notable differences are a USB-C rather than regular USB connector, a faster processor (of course, that's par for the course with every new electronic device) and a couple more hours of battery life (12 instead of 10). It also has a slightly improved front-facing camera, but both the front and back cameras remain disappointing. Use your phone (of course) not your tablet for photo taking.
If you already have an HD 10, there's no need to upgrade. But if you don't have an HD 10, there's slightly more reason to get one now, although I'd be tempted to suggest you wait until Black Friday and hope for a discount which is almost certain to occur.
Is Saudi Arabia about to become the next big thing in international tourism? We'd be doubtful on this point, but on the other hand, if they're really serious about bringing in "normal" tourists, they probably might have an enormous promotional budget that would suck all the air away from other destinations and their promotion.
The country is steadily liberalizing its policies about accepting visitors, transitioning from being one of the ultimately most closed of all nations to visit, and now becoming almost normal. Details here.
Two years behind schedule. Yes, I'm talking about another Elon Musk business – his rocket business and its failure to meet its NASA contract specification for being able to send astronauts to/from the International Space Station. Instead, Musk seems to be dreaming about Mars and other related rocket projects, while neglecting the present reality and obligations. Here's an article that suggests that NASA is getting a bit frustrated with the delays.
Twenty surreal attractions in the middle of nowhere? Well, sort of, perhaps, but I'm sure New Zealand would be dismayed to see its very popular Waitomo Caves on the list. (We'll visit these wonderful caves in the pre-tour option for our Aurora Australis Adventure in March.)
Talking about lists, here's a list of the 20 cleanest airlines in the world. No US carriers make the list.
Yahoo might owe you some money as part of a class action/privacy breach settlement. Check it out.
Lastly this week, a toilet on a plane so small that a woman got stuck in it.
And truly lastly this week, please do check out the New Zealand Aurora Australis Adventure tour (see the next article). Remember, if you join by/on Monday, there's a $100 per person early joining discount.
Until next week, please enjoy safe travels


text:
@interface FIORequestOperation : RequestOperation

@property (nonatomic, strong) NSNumber *latitude;
@property (nonatomic, strong) NSNumber *longitude;
@property (nonatomic, strong) NSDate *date;

@property (nonatomic, assign) BOOL useSIUnits;

- (id)initWithAPIKey:(NSString *)apiKey;

- (void)executeFinishedTaskWithResponse:(id)response;
- (void)executeFailedTaskWithError:(NSError *)error;

- (void)executeOperationInSharedQueue;

@end

redpajama_set_name: RedPajamaGithub


By their very nature, swimming pools are areas prone to accidents. Whether they are indoor or outdoor, they provide slippery surfaces, heights to fall from, and water conditions are usually not fit for all swimmers and ages. Both public and private pool owners are obligated to provide the necessary provisions to ensure that everyone using the pool has a safe environment and that the pool is properly secured when not in use.
If you or a loved one were hurt at a swimming pool that was not yours, then you may have the ground to seek compensation. For nearly 15 years, Sullivan & Brill, LLP has provided dedicated, aggressive, and thorough counsel to clients who needed relief following an injury. Our skilled and sought-after team has recovered millions for individuals and families who were subject to undue pain and suffering and looking to move on with their lives.
Common Accidents & "Attractive Nuisance"
For both private and public pools, owners have a distinct duty to swimmers and visitors to ensure a safe environment. When they fail to do this, they not only place swimmers and visitors in harm's way, but can also make themselves liable for some injuries that could occur.
Swimming pools are also often subject to a legal concept called "attractive nuisance." This means that it is likely a pool could attract the attention of unattended children or other adults who do not know any better and pose a risk to them during off-hours. That is why pools need to be properly secured during times when they are not intended for use. If they are not, owners could still be held responsible for injuries that occur—even when those hurt were trespassing.
If you believe that any of these factors contributed to your injury, then we invite you to speak with our New York personal injury lawyers immediately. Contact us for a free consultation.


Hi there, this attachment is about Shower-before-and-after-aplustile ( Before And After Shower #1). This attachment is a image/jpeg and the resolution of this image is 635 x 400. It's file size is only 45 KB. If You ought to save This post to Your laptop, you might Click here. You might also download more pictures by clicking the photo below or see more at here: Before And After Shower.
After gripped by active nights, drinking milk espresso with friends or family work together at home is just a great setting plus a scenario, spend their free period. Instances regain your time with a lot of thoughts of camaraderie, warmth and recover electricity to fight the worries of the work.
Modern coffee table affects the decor is lavish and elegant in features of the home. It's better for you to learn the various models and types of modern coffee-table on the internet if you like to put a modern coffee-table within the family area.
A Shower-before-and-after-aplustile ( Before And After Shower #1) may reflect of decorating your family room the private taste. If you are an individual who has a home style that is modern, you could prefer various modern coffee table to your home. Contemporary coffee table featuring personal style.


text:
Markus Binder
Project Manager/Researcher, START
Research AffiliateStaff
mkbinder@umd.edu
Mr. Binder joined START in August 2013 as a project manager / senior researcher specializing in terrorism involving chemical and biological agents. Prior to joining START he was an independent consultant providing expertise in the areas of WMD nonproliferation, chemical and biological terrorism, and the spread of MANPADS. From 2004 to 2007 he was Deputy Director of the Chemical and Biological Weapons Nonproliferation Program at the James Martin Center for Nonproliferation Studies (CNS) in Monterey, California. Prior to joining CNS Mr. Binder spent 15 months with the External Relations Division of the Organisation for the Prohibition of Chemical Weapons (OPCW) in The Hague. He has a MA in Political Studies from the University of Auckland in New Zealand (with a focus on revolutions, insurgencies and counter-hegemonic movements, as well as on security and diplomacy in the Asia-Pacific).
Research Areas:
Individual Behavior Chemical and Biological Threats
Bioterrorism Chemical Threats Ethnic Conflict and Violence Nuclear Terrorism Radiological Threats
Monterey Institute of International Studies, Certificate in Nonproliferation Studies, 2002
University of Auckland, NZ, M.A. with Honors, Political Studies, 2000
University of Auckland, NZ, B.A., 1997
Project Manager and Senior Researcher on Unconventional Weapons and Technology, START, 2013 to Present
Independent Contractor addressing nonproliferation questions, 2007 to 2013
Monterey Institute of International Studies, Center for Nonproliferation Studies - Deputy Director, Chemical and Biological Weapons Nonproliferation Project (CBWNP), 2005 to 2007
Monterey Institute of International Studies, Center for Nonproliferation Studies - Research Associate, Chemical and Biological Weapons Nonproliferation Project (CBWNP), 2004 to 2005
Media Appearances and Commentary:
START Soundbites: Chemical Weapons in Iraq and Syria
Lead Investigator on START Research Projects
Profiles of Incidents Involving CBRN and Non-state Actors (POICN) Database
March 2010 to June 2018
Researcher on START Projects
Anatomizing the Behavior of Chemical and Biological Non-State Adversaries
June 2012 to May 2014
Counter Radicalization of Scientists in CBRN-relevant Technical Fields
September 2013 to April 2015
Defense Advanced Research Projects Agency SIGMA+
July 2018 to April 2020
International and Regional Architecture Reports
May 2012 to September 2015
Mobile Radiation Detectors: Threat Perception and Device Acceptance
April 2014 to April 2019
New Analytical Methods for the Exploitation of Open-Source Structured Databases to Enhance Situational Awareness for Effective Counter-WMD Strategies
March 2010 to March 2014
Profiling the CB Adversary: Motivation, Psychology and Decision
April 2016 to December 2017
Pick Your POICN: Introducing the Profiles of Incidents involving CBRN and Non-State Actors (POICN) Database (Journal Article)
The Curious Incident of the Bench in the Daylight (Journal Article)
Islamic State Chemical Weapons: A Case Contained by its Context? (Journal Article)
Profiling the CB Adversary: Motivation, Psychology and Decision (Research Brief)
START Annual Meeting 2016: Quick-Fire Presentation - Unconventional Weapons and Technology, Political Instability, Risk Communication (Presentation)
Anatomizing Chemical and Biological Non-State Adversaries (Research Brief)
Islamic State Chemical Weapons: A Case Contained by its Context? (Featured Research)
New START study analyzes chemical and biological weapon attackers (Featured Research)
Weekly Standard: State Department Report Sheds More Light on Syria's Chemical Weapons (START in the News)
Are U.S. chemical facilities still open to terrorist attacks? (Discussion Point)


This blessed lady was born in 1905.
What was going on in 1905?
The Norwegian Parliament declares the union with Sweden dissolved, and Norway achieves full independence.
Also, Henry Fonda,Mikhail Sholokhov and Jean-Paul Sartre were born in the same year.
Wow this lady is still drinking beer.
"Her father played golf. Her family even listened to the first radio broadcast.


Surrender at 20: Lancer Stratus Wukong Now Available!
Lancer Stratus Wukong Now Available!
Lancer Stratus Wukong is now available to purchase for 1350 RP!
From the release announcement - "New Epic Skin - Lancer Stratus Wukong"
The figures loomed on the horizon, growing larger as night fell. Many abandoned the town, fleeing in the darkness.
Others stayed, clinging to hope. Hope that someone, or something, would rise and fight for them.
They lifted their eyes as dawn arrived. The mist parted over the sea, and their ancient protector rose, glowing with forgotten energy, lance at the ready.
Their call had been answered."


text:
Allen West Exit Interview: "Lincoln Only Served One Term"
Kevin Glass
@kevinwglass
In a wide-ranging and sometimes contentious interview with Michel Martin of NPR, GOP Congressman Allen West discussed his time in Congress, his adverse relationship with the media, and his tough re-election defeat. He also dropped a surprising analogy at the end of the interview that may portend a future run for higher office.
Most of the interview is a must-read, but West's exposition of his difficult re-election campaign is of particular interest:
I'm saying when you sit up and call a 22-year veteran - look. My father served in World War II, my brother in Vietnam. My nephew currently serves. And you're going to call me a war criminal? I don't think that's a proper thing to bring up. And I don't think that that was part of, you know, what should've been the fair, open, and honest debate about issues and political discourse.
Well, there was also a credo SuperPAC that came down from San Francisco, and this is what some of the people that were out walking neighborhoods, these people were spreading rumors that I beat my wife.
West was also asked who the Congressmen he would miss most were - and provided some surprising answers.
Look, I have always said Peter Welch and Dennis Kucinich were great guys. You know, Dennis Kucinich and I came together on the whole Libya thing. Corrine Scott Brown - when we wanted to have the congressional medal recognition for the Montford Point Marines, the first African-American Marines, I mean, we worked together on that and we brought it to closure and the commandant was very happy about what we were able to do to get all those signatures.
And then, finally, he was asked about what comes next for Allen West.
Look, you know, God closes a door so that he can open up greater doors. I will continue to, you know, stand up and fight for this country. That's my goal. I have two daughters, 19 and 16, and I want to make sure that they grow up in a great America that provides them all the opportunities that it provided to their mother and father.
And always remember, Abraham Lincoln only served one term in Congress, too.
BOYS CLUB NO LONGER: Millions Of Women Are Buying Guns, Taking Up Shooting – Bearing Arms –


text:
Narratives in Sustainability (NIS)- Writing and Presentations for Fundraising
Mar 15, 2022 4:00 pm PDT - 5:30 pm PDT
Narratives in Sustainability (NIS)- Designing Scientific Concepts
Mar 01, 2022 4:00 pm PST - 5:30 pm PST
Narratives in Sustainability (NIS)- Creating Your Brand on Social Media
Feb 15, 2022 4:00 pm PST - 5:30 pm PST
Narratives in Sustainability (NIS)- Communicating Science to the General Media
ASCE Lifelines Conference 2021 2022
Jan 31, 2022 - Feb 04, 2022 9:00 am PST - 5:00 pm PST
The Nile River Basin in Crisis Webinar Series January 26
Jan 26, 2022 8:00 am PST - 9:30 am PST
ISPOR Signal Series/The New Science of Cause and Effect: Causal Revolution Applied
Jan 25, 2022 10:00 am EST - 11:30 am EST
Tech Entrepreneurship Collaborative
Jan 15, 2022 6:00 pm PST - 8:00 pm PST
Lunch & Learn: The First Internet Message
Jan 13, 2022 12:00 pm PST - 12:30 pm PST


text:
This is a story about Yorkshire and its people, from the earliest period up to recent times. Foremost it is a story about invasion.
Archaeological finds have shown that Yorkshire was occupied at a time when early hunters from continental Europe were not supposed to have ventured so far north.
Growing populations on the European mainland made Yorkshire's fertile land and receding woodland a prime landscape for these first European farmers, and over time they would be followed by waves of invaders intent on pillage and land grabbing.
From the north and west came the Picts and the Scots, while the Romans, Angles and Vikings arrived via the River Humber. The Normans would be the last to invade and seek to dominate everything they saw.
Each invasion would leave its stamp on Yorkshire's culture and life, while battles would later be fought on Yorkshire soil during both the Wars of the Roses and the English Civil Wars.
More than just a romp through the ages, this book reveals the key places where battles were fought and Yorkshire history was made.
Paul C Levitt - Yorkshire: A Story Of Invasion, Uprising And Conflict


When cross-examining the opposing expert at trial, stick to that old adage--leading questions only. Asking questions that call for either a "yes" or "no" is the best way to keep the opposing expert from giving that self-serving speech that he's just waiting present to the jury . . . and which he will present just as soon as you ask, frustrated at your own inability to elicit the testimony you want, "Well, what is your opinion based on?"
Weaknesses in the witness's experience and qualifications that call into question his authority to render the opinions he gave on direct.
Deficiencies in the expert's preparation to render an opinion.
Assumptions the expert is making to support his opinion that will be disproved in your case.
the qualifications, competence, and credibility of your expert and his methods.
Source note: The first paragraph of this post was written after browsing a chapter of On Trial: Lessons from a Lifetime in the Courtroom, by Henry G. Miller.
Publication note: Originally published 9/21/05.


Episode Title: (#105) "The Silkworm - Part 2"
Episode #5: "The Silkworm (part 2)"
When Owen's disemboweled body is discovered, Strike (Tom Burke) and Robin (Holliday Grainger) delve deeper into the hidden meanings and concealed secrets of "Bombyx Mori," fighting to prove the innocence of his incarcerated widow (Monica Dolan). Strike invites Liz (Lia Williams) to lunch and gains insight into Andrew Fancourt (Peter Sullivan), Quine's famous literary rival, and the feud between them. By looking more closely at the manuscript and putting the pieces of the puzzle together, the true author of an alternative version of "Bombyx Mori"? - ?and the identity of the killer? - ?are revealed.
"The Silkworm" also stars Natasha O'Keeffe, Kerr Logan, Tim McInnerny and Sarah Gordy; directed by Kieron Hawkes; written by Tom Edge; executive produced by Ruth Kenley-Letts, J.K. Rowling, Tom Edge and Neil Blair.


Aesthetic specimen of a transparent 4'' selenite wand perched atop a luster of stark white gypsum selenite blades. The selenite crystal has great transparency, terminated with striated crystal faces, and glassy luster faces. From the famous Naica mine where the legendary "Cave of Swords" is located.


text:
News | Local
Austin shooting highlights lack of police body cameras in many parts of Minnesota
The Austin police department was researching the technology before an officer fatally shot Kokou Christopher Fiafonou in December.
A rally takes place outside the Mower County Law Enforcement Center on Thursday, Dec. 30, 2021, in Austin, Minnesota, in response to the death of 38-year-old Kokou Christopher Fiafonou, who was killed on Dec. 23 by Austin Police officer Zachary Gast after a more than 24-hour standoff.
Joe Ahlquist / Post Bulletin
By Walker Orenstein
AUSTIN — When an Austin police officer killed Kokou Christopher Fiafonou in late December, parts of the shooting were captured on squad-car video that has yet to be publicly released.
There does not appear to be footage of the entire episode, in which officers say Fiafonou confronted police with a knife but Fiafonou's family contends he was doing nothing wrong when killed.
There might be more video if the 34-officer Austin Police Department had body-worn cameras . But they don't, meaning there is less clarity about a case that has drawn protests in the city of 26,000 people.
RELATED COVERAGE:
Man, officer identified in Dec. 23 fatal shooting in Austin
Austin police chief, NAMI talk law enforcement crisis and mental health training requirements
Live coverage: Justice for Kokou "Christopher" Fiafonou rally in Austin
Body-worn cameras, or the lack of them, have played key roles in several high-profile Minnesota cases where police have killed or injured someone. Experts say the cameras don't always produce consensus about controversial incidents, but they do tend to reduce complaints against officers and are generally supported by the public and police.
Austin's police chief and mayor said they had been pursuing body cameras for officers before the shooting, but a few hurdles have made adopting the technology a lengthy process.
Austin is not alone, and the incident underscores that while body cameras have become common in larger cities and counties in the state, many smaller departments around Minnesota have yet to adopt the technology.
A contested shooting
Austin police said they first encountered Fiafonou, who is Black, on Dec. 22, after officers were notified he was walking in traffic holding a knife. According to a department news release , police followed Fiafonou, who had a machete, into an apartment complex. There, officers used stun guns in an unsuccessful effort to subdue him. Over the next 24 hours, police say they tried to negotiate with Fiafonou, who had threatened to hurt other people, and also used pepper spray and foam bullets to try to apprehend him.
Kokou "Christopher" Fiafonou
About 9:30 p.m. Dec. 23, when "police presence was drawn down," Fiafonou left the building and walked to a gas station, where he "confronted" officers in the parking lot while armed with a knife, the news release says. Officer Zachary Gast fatally shot the 38-year-old Fiafonou, according to the Minnesota Bureau of Criminal Apprehension.
Fiafonou's family, and Michelle Gross, president of Communities United Against Police Brutality, have said police harassed the man who they described as having a mental health crisis, according to the Austin Daily Herald and an online fundraiser for the family . The fundraiser, organized by Gross, says the family's home was "destroyed by tear gas and other projectiles after police blew out all of the windows."
Gross, who could not be reached for comment, and Fiafonou's family have also called for any video of the incident to be released. They had initially asked for body camera footage, though there was none.
A makeshift memorial is made on Thursday, Dec. 30, 2021, outside the Kwik Trip where 38-year-old Kokou Christopher Fiafonou was killed on Dec. 23 by Austin Police officer Zachary Gast in Austin, Minnesota.
Why Austin doesn't have body cameras — yet
In an interview Friday, Austin police chief David McKichan said he had already wanted body cameras for officers and the department had been actively researching how to buy and implement them.
McKichan said around 2014 the department started using high-definition cameras in squad cars and linked them to wireless microphones to get on-scene audio.
"Of course the next natural step is body cameras," he said.
The chief said the mayor and city council support body cameras, Austin and the police department just need to figure out the logistics of implementing them, and how to pay for the initial costs of buying the equipment and ongoing costs like storing data and hiring an administrative assistant to help handle the footage. McKichan said the cost of an assistant would likely be around $80,000 or more per year, and the initial equipment and infrastructure could be $160,000, a significant cost for a small department.
Austin's proposed general fund budget for 2022 was roughly $19 million, with police in line for about $5.8 million. Another $190,000 in a capital investment plan is also earmarked for upgrading police equipment.
Dorothy Gales, fiance of 38-year-old Kokou Christopher Fiafonou, who was killed on Dec. 23 by Austin Police officer Zachary Gast, leads a chant on Thursday, Dec. 30, 2021, outside the Kwik Trip where Fiafonou was killed in Austin, Minnesota.
McKichan has been chief for about three years, but with the Austin police department since 1997.
He said that over the years, the agency has improved its technology, but that the department didn't want to be an early adopter of body cameras in case it wasn't effective considering the costs.
"It's something I think we're able to do," McKichan said about paying for body cameras. "But you also can't make a mistake when you're talking about that type of money. And try to come back three, four years later and say, 'Hey, this system is maybe not doing what we want, we might need something else.'"
Austin Mayor Steve King said the city also is hoping to pay for an $80 million sewage treatment plant upgrade, so while body cameras are a priority, they have other critical needs to take care of.
Still, King said the biggest barrier to body cameras was "the mechanics of getting it in place," rather than the price.
The county sheriff's department shares server, dispatch and record management space with the city, meaning they want to coordinate when adopting body camera policy.
King said based on their budgeting process, the department could get body cameras approved by the end of 2022 or at some point in 2023.
"It's not any more urgent than it was prior to that incident. It was a priority within one or two of anything for about a year," King said. "At this point, it just probably helps the cause for the taxpayer to realize that yes we're going to bear this cost.
"It just seems to be the right thing to do for the officers and the right thing to do with the community."
Legislature failed to pass initiative to help departments pay for cameras
A survey of municipal police departments done by the Minnesota Chiefs of Police Association released in July found use of body cameras has nearly doubled among the agencies since a previous survey, five years earlier. Still, of 214 chiefs who responded, 95 said they don't have body cameras. Of those 95 departments, more than 65 percent said cost was the main reason.
There has been some federal grant money for body-worn cameras , especially for smaller, rural and tribal departments. And last year, state legislators nearly approved a $1 million grant program to help pay for body cameras, particularly among departments outside of the seven-county Twin Cities metro area. Yet the initiative was was dropped because the majority-DFL House, but not the Republican-controlled Senate, wanted regulations attached to the money requiring things like allowing the family of someone killed by police to view footage within 48 hours under most circumstances .
Walker Orenstein reports on the Legislature for MinnPost, with a focus on covering issues affecting Greater Minnesota. MinnPost is a nonprofit, nonpartisan media organization whose mission is to provide high-quality journalism for people who care about Minnesota. This story has been edited for length.
Related Topics: AUSTINPUBLIC SAFETYCRIME AND COURTS
Campus News: Fall 2021 Dean's and President's lists and graduates
Belmont University – Byron: Tessa Stites; Kenyon: Ally Peterson.
By Post Bulletin staff reports
State suspends license of former Rochester teacher for "grossly inappropriate" conduct
After a 60-month suspension, the former teacher can petition to have his license reinstated if he undertakes a number of steps.
By Jordan Shearer
Mayo Clinic responds to employees upset about lower-than-expected raises
In the wake of complaints by frustrated employees, Mayo Clinic's official explanation is that the raises are calculated solely in comparison to the market. The annual salary adjustment is based on a review of external market factors, the clinic says.
By Jeff Kiger
Dodge Center man pleads guilty to two charges in federal court
Reyel Simmons pleaded guilty to impersonating a federal agent.
By Emily Cutts
1972: John Marshall defeats strong Mounds View team in basketball


Abu Dhabi City Informations | Abu Dhabi Informations .
Abu Dhabi is both the capital and Federal capital of the United Arab Emirates, and is the second largest of the seven emirates. This second most populous city of the UAE lies on a T-shaped island with its futuristic skyscrapers rising from the desert coast of the Persian Gulf.Among the modern island city there are remains of an older and more cultural society. Abu Dhabi comprises of international luxurious hotels, never-ending shopping malls, extensive entertainment and leisure facilities, along beautiful green streets and parks.The citys origin reflects its true prestige, as it was a major hub for the pearl industry before it had discovered its rich reserves of oil. There is a stretch of traditional wooden dhows along the harbour, which were not just used for fishing but also for pearl diving.Abu Dhabi is known as the most important cultural city in the UAE, attracting many visitors to its established Cultural Foundation centre, which is responsible for hosting various art exhibitions and musical performances from all over the globe.Abu Dhabi is one of the most prosperous and rapidly developing cities in the world, with an impressive population of 1.45 million (2008). In just over half a century it has become a major centre for tourism, as well as transforming from a small Bedouin village into a thriving investment enterprise.


"... born in Bristol, England in 1960. He received a BA from Central St. Martins College of Art and Design, London in 1985, and an MA from the Royal College of Art, London in 1990. His first solo exhibition was held in 1992 at the Clove Building, London.
His collages and paintings have been exhibited in numerous solo and group shows, building a strong reputation over the last 2 decades in the UK, Europe, and the United States. In 2010 Dalwood was shortlisted for the Turner Prize.
In 2013, Kunsthaus Centre d'art Centre PasquArt in Biel, Switzerland hosted a solo survey exhibition "Dexter Dalwood." Other solo exhibitions include "Dexter Dalwood," a major survey of his work at Tate St Ives, which toured to FRAC Champagne-Ardenne, Reims, France and CAC Malaga, Spain; "Orientalism" at David Risley Gallery, Copenhagen (2012), "Dichter und Drogen" at Nolan Judin Gallery, Berlin (2011), "There is No Darkness But Ignorance," David Risley Gallery, Copenhagen (2009), as well as those at Gagosian Gallery: "Endless Night," Beverly Hills (2009); "Recent History," Britannia Street, London (2006–07); "Dexter Dalwood," West 24th Street, New York (2004); "New Paintings," Beverly Hills (2002); and "New Paintings," Heddon Street, London (2000).
We don't know any related artists to Dexter Dalwood. Do you?


text:
/* iCheck plugin Futurico skin
----------------------------------- */
.icheckbox_futurico,
.iradio_futurico {
    display: inline-block;
    *display: inline;
    vertical-align: middle;
    margin: 0;
    padding: 0;
    width: 16px;
    height: 17px;
    background: url(futurico.png) no-repeat;
    border: none;
    cursor: pointer;
}

.icheckbox_futurico {
    background-position: 0 0;
}
    .icheckbox_futurico.checked {
        background-position: -18px 0;
    }
    .icheckbox_futurico.disabled {
        background-position: -36px 0;
        cursor: default;
    }
    .icheckbox_futurico.checked.disabled {
        background-position: -54px 0;
    }

.iradio_futurico {
    background-position: -72px 0;
}
    .iradio_futurico.checked {
        background-position: -90px 0;
    }
    .iradio_futurico.disabled {
        background-position: -108px 0;
        cursor: default;
    }
    .iradio_futurico.checked.disabled {
        background-position: -126px 0;
    }

/* HiDPI support */
@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
    .icheckbox_futurico,
    .iradio_futurico {
        background-image: url(futurico%402x.png);
        -webkit-background-size: 144px 19px;
        background-size: 144px 19px;
    }
}


Josh Wolf is a comedian, actor and NY Times Bestselling author best known for his work as a round table guest and writer on E!'s "Chelsea Lately" and "After Lately." He has become one of the most sought after personalities in comedy, headlining stand up comedy tours across the nation. Wolf grew up in Amherst, Massachusetts and began performing stand up at 15 years old. After moving to Los Angeles in his mid 20s, Josh landed a talent deal with 20th Century Fox and series deals with ABC and NBC. These deals were based on his real-life story of having a relationship with a woman who had two kids prior to meeting him and then having another with Josh and waking up one day to tell him she had no desire to be a mother; leaving Josh who was approx. 24 years old to figure how to raise three toddlers alone all the while trying to forge a career as a standup comedian. Other credits were writing for "Yes, Dear", "All of Us," and "Cuts." In 2006, Wolf returned to television in front of the camera, appearing on the 4th season of "Last Comic Standing," and recurring on "My Name is Earl." Throughout 2013-2014, Wolf hosted "Shark After Dark" which aired during the ultra-popular "Shark Week" on The Discovery Channel. This led to Josh being cast as the host for Discovery's late-night series "Naked and Afraid." In 2015, Wolf hosted CMT's first original late night comedy series, "The Josh Wolf Show." Josh currently lives in Los Angeles with his wife and kids.
Sarah Tiana is a stand-up comedian and writer living in Los Angeles and headlining at comedy clubs across the country. An avid sports fan, she often writes for the ESPY Awards, helps put together Rob Riggle's NFL segments on FOX, and recently appeared as a panelist on Garbage Time with Katie Nolan during the Super Bowl. In 2016, she finished second place in the first season of Roast Battle on Comedy Central and starred in a comedy talk show pilot for TruTV. She also appeared regularly on Comedy Central's @Midnight and as a panel member on Chelsea Lately before becoming a regular/writer on The Josh Wolf Show for CMT. She later wrote for The Burn with Jeff Ross, hosted the Roast of Justin Bieber Red Carpet, and also hosted the CMA's Red Carpet. She currently co-hosts the podcasts Fried with Jon Reep, and Riggle's Picks with Rob Riggle. Sarah's first stand-up special will debut later this year on Comedy Central.
Sarah's big break came after she was recognized for her "breakout performance" as 'Carmen' in four episodes of Reno 911's 7th season. In 2005, she helped create a sketch comedy company called The Strait Jacket Society as a way to help young actors in Hollywood accelerate their stage time and gain exposure while still having fun (she has put over 500 actors through this program). She has also been a correspondent on The Soup Investigates as well as Love You, Mean It starring Whitney Cummings.
A downright 'Merican, Sarah has done over 12 tours of comedy for the troops including Germany, Singapore, Afghanistan, Guam, Okinawa, and several Wounded Warrior Facilities. A trip to Iraq at the beginning of the war is highlighted in the documentary film, We Love You Mrs. Bevins.
Sarah can be seen regularly at The World Famous Comedy Store, on Twitter, and in numerous unhealthy relationships in and around Los Angeles.