Here's one of the marvels inherent to childhood: Your capacity for wonder is still boundless. The most mundane events and ordinary objects — a bus ride, a nightlight, a shopping cart – can take on seemingly magical properties. The bus becomes a fire-breathing dragon, the nightlight beams out a luminous parade of shadow animals, the shopping cart morphs into an amusement park ride. In the charming 2015 picture book "Last Stop on Market Street," author Matt de la Pena and illustrator Christian Robinson succeed in bringing that wonderment to life.
It's a tricky business, moving a beloved book from page to stage. But playwright Cheryl L. West and composer/lyricists Paris Ray Dozier and his father Lamont Dozier succeed with their world-premiere musical adaptation of de la Pena's story, which celebrates the every day wonders of a bus ride across the city, with plenty of stops for adventure along the way.
Directed by Henry Godinez, the Chicago Children's Theatre production is defined by its adventurous spirit, that glorious feeling that tends to dim as we get older and more sensible. "Last Stop on Market Street" is not a complicated show, but it is an exuberantly entertaining one. Its lack of guile is a balm in a world where cynicism and sarcasm are often mistaken for sophistication.
Over CJ's bratty grousing, Nana steers him into the city. With the help of her neighborhood friends, he learns to check his judgment and connect with the world beyond his phone.
It's the kind of plot that can turn treacly and/or infantile fast. Godinez' ensemble avoids that by honoring the emotions that give the book its signature warmth and joy. The characters on stage are broad but believable, and at times, the bonhomie filling the space has the warmth of a welcome hug.
Then there's the production's not-so-secret weapon. That would be Butler, a songstress who for decades has been raising the roof and bringing the house down in musicals across the country. Butler has one of those rare voices born to belt, a voice that can nail a money note whether it's a floor-shaking forte or a glimmering pianissimo.
Hearing Butler's arena-worthy pipes unleashed in a space not much bigger than a well-appointed living room is thrilling. As the Doziers' score moves from gospel to hip-hop to ballad and back again, Butler anchors the ensemble's mighty vocals.
This isn't solely Butler's show, of course. The stage bustles with memorable performances. Chief among them: Breon Arzell as Dennis the bus driver and the sharply dressed DJ charged with keeping the beat moving through the production. Arzell has a smile that goes for days and the fleet-footed moves of someone fiercely at home with all manner of choreography executed in heels or sneakers.
As the much-inked "Tat Man," Brian Keys has flair to spare, spitting rhymes with cool-cat charisma and fast-moving grace. Throughout, music director Andra Velis Simon and sound designer Ray Nardelli keep the words crisp and the music bouncing, most memorably when the cast creates a joyfully noisy rhythm section by banging on cookie sheets, cake pans and mixing bowls.
The production looks as terrific as it sounds thanks in large part to set designer John Musial's brightly colored interpretation of Robinson's kid-friendly illustrations. And Stephanie Paul's choreography brings vibrancy to Nana's neighborhood, a place alive with street performers and unexpected beauty.
"Last Stop on Market Street" is what children's theater should be. It does not talk down to its audience. It is burgeoning with wonder. If you are a kid, you'll giggle yourself silly. If you were once a kid, you just might remember what that felt like.
Catey Sullivan is a local greelance writer.


 Our Facilities - Treeroots | Maryborough Family Heritage Research Institute Inc.
We occupy the entire ground floor of the lovingly restored building on the corner of Wharf and Richmond Streets in the heart of Maryborough. The institute offers very comfortable research facilities with air conditioning for your comfort, helpful advice and room to move.
Whilst in the area you can soak up the atmosphere of the early days in what was the hub of the developing town. The wharf street precinct is steeped in history, with the Bond Store Museum and Old Warehouse Gallery occupying one of the oldest buildings in the area. Opposite the institute is the old Custom House Hotel (now a restaurant) complete with "ghost stories".
Also walk through the Portside Precinct, view the excellent Colonial and Military Museum, or take a river cruise along the Mary River. MELSA Model trains run on the last Sunday of the month in Queens Park where you can listen to a brass band or pipe band on various Sundays. The steam locomotive, a replica of the MARY ANN, the first rail engine built by Walkers Ltd, also runs on the rail lines through the gardens on these Sundays and also Thursdays, which is Market Day in the centre of Maryborough."
No parking problems. All the records are on one level on the ground floor and easily accessed.


Some people in life inspires you a lot and you didn't even expect from them to such unique thoughts. I really loved the article which you posted above. Everyone must read it once as there is too much to learn from it.


text:
package nodeinfomanager

import (
	"encoding/json"
	"testing"

	"github.com/container-storage-interface/spec/lib/go/csi/v0"
	"k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/api/errors"
	"k8s.io/apimachinery/pkg/api/resource"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/types"
	"k8s.io/apimachinery/pkg/util/sets"
	utilfeature "k8s.io/apiserver/pkg/util/feature"
	utilfeaturetesting "k8s.io/apiserver/pkg/util/feature/testing"
	"k8s.io/client-go/kubernetes/fake"
	utiltesting "k8s.io/client-go/util/testing"
	csiv1alpha1 "k8s.io/csi-api/pkg/apis/csi/v1alpha1"
	csifake "k8s.io/csi-api/pkg/client/clientset/versioned/fake"
	"k8s.io/kubernetes/pkg/apis/core/helper"
	v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
	"k8s.io/kubernetes/pkg/features"
	volumetest "k8s.io/kubernetes/pkg/volume/testing"
	"k8s.io/kubernetes/pkg/volume/util"
)

type testcase struct {
	name                string
	driverName          string
	existingNode        *v1.Node
	existingNodeInfo    *csiv1alpha1.CSINodeInfo
	inputNodeID         string
	inputTopology       *csi.Topology
	inputVolumeLimit    int64
	expectedNodeIDMap   map[string]string
	expectedTopologyMap map[string]sets.String
	expectedLabels      map[string]string
	expectNoNodeInfo    bool
	expectedVolumeLimit int64
	expectFail          bool
}

type nodeIDMap map[string]string
type topologyKeyMap map[string][]string
type labelMap map[string]string

// TestAddNodeInfo tests AddNodeInfo with various existing Node and/or CSINodeInfo objects.
// The node IDs in all test cases below are the same between the Node annotation and CSINodeInfo.
func TestAddNodeInfo(t *testing.T) {
	testcases := []testcase{
		{
			name:         "empty node",
			driverName:   "com.example.csi/driver1",
			existingNode: generateNode(nil /* nodeIDs */, nil /* labels */, nil /*capacity*/),
			inputNodeID:  "com.example.csi/csi-node1",
			inputTopology: &csi.Topology{
				Segments: map[string]string{
					"com.example.csi/zone": "zoneA",
				},
			},
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": sets.NewString("com.example.csi/zone"),
			},
			expectedLabels: map[string]string{"com.example.csi/zone": "zoneA"},
		},
		{
			name:       "pre-existing node info from the same driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				labelMap{
					"com.example.csi/zone": "zoneA",
				},
				nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				topologyKeyMap{
					"com.example.csi/driver1": {"com.example.csi/zone"},
				},
			),
			inputNodeID: "com.example.csi/csi-node1",
			inputTopology: &csi.Topology{
				Segments: map[string]string{
					"com.example.csi/zone": "zoneA",
				},
			},
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": sets.NewString("com.example.csi/zone"),
			},
			expectedLabels: map[string]string{
				"com.example.csi/zone": "zoneA",
			},
		},
		{
			name:       "pre-existing node info from the same driver, but without topology info",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				nil /* labels */, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				nil, /* topologyKeys */
			),
			inputNodeID: "com.example.csi/csi-node1",
			inputTopology: &csi.Topology{
				Segments: map[string]string{
					"com.example.csi/zone": "zoneA",
				},
			},
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": sets.NewString("com.example.csi/zone"),
			},
			expectedLabels: map[string]string{
				"com.example.csi/zone": "zoneA",
			},
		},
		{
			name:       "pre-existing node info from different driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/test-node",
				},
				labelMap{
					"net.example.storage/rack": "rack1",
				}, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/test-node",
				},
				topologyKeyMap{
					"net.example.storage/other-driver": {"net.example.storage/rack"},
				},
			),
			inputNodeID: "com.example.csi/csi-node1",
			inputTopology: &csi.Topology{
				Segments: map[string]string{
					"com.example.csi/zone": "zoneA",
				},
			},
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1":          "com.example.csi/csi-node1",
				"net.example.storage/other-driver": "net.example.storage/test-node",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1":          sets.NewString("com.example.csi/zone"),
				"net.example.storage/other-driver": sets.NewString("net.example.storage/rack"),
			},
			expectedLabels: map[string]string{
				"com.example.csi/zone":     "zoneA",
				"net.example.storage/rack": "rack1",
			},
		},
		{
			name:       "pre-existing node info from the same driver, but different node ID and topology values; labels should conflict",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				labelMap{
					"com.example.csi/zone": "zoneA",
				}, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				topologyKeyMap{
					"com.example.csi/driver1": {"com.example.csi/zone"},
				},
			),
			inputNodeID: "com.example.csi/csi-node1",
			inputTopology: &csi.Topology{
				Segments: map[string]string{
					"com.example.csi/zone": "other-zone",
				},
			},
			expectFail: true,
		},
		{
			name:       "pre-existing node info from the same driver, but different node ID and topology keys; new labels should be added",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				labelMap{
					"com.example.csi/zone": "zoneA",
				}, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				topologyKeyMap{
					"com.example.csi/driver1": {"com.example.csi/zone"},
				},
			),
			inputNodeID: "com.example.csi/other-node",
			inputTopology: &csi.Topology{
				Segments: map[string]string{
					"com.example.csi/rack": "rack1",
				},
			},
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/other-node",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": sets.NewString("com.example.csi/rack"),
			},
			expectedLabels: map[string]string{
				"com.example.csi/zone": "zoneA",
				"com.example.csi/rack": "rack1",
			},
		},
		{
			name:          "nil topology, empty node",
			driverName:    "com.example.csi/driver1",
			existingNode:  generateNode(nil /* nodeIDs */, nil /* labels */, nil /*capacity*/),
			inputNodeID:   "com.example.csi/csi-node1",
			inputTopology: nil,
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": nil,
			},
			expectedLabels: nil,
		},
		{
			name:       "nil topology, pre-existing node info from the same driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				labelMap{
					"com.example.csi/zone": "zoneA",
				}, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				topologyKeyMap{
					"com.example.csi/driver1": {"com.example.csi/zone"},
				},
			),
			inputNodeID:   "com.example.csi/csi-node1",
			inputTopology: nil,
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": nil,
			},
			expectedLabels: map[string]string{
				"com.example.csi/zone": "zoneA", // old labels are not removed
			},
		},
		{
			name:       "nil topology, pre-existing node info from different driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/test-node",
				},
				labelMap{
					"net.example.storage/rack": "rack1",
				}, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/test-node",
				},
				topologyKeyMap{
					"net.example.storage/other-driver": {"net.example.storage/rack"},
				},
			),
			inputNodeID:   "com.example.csi/csi-node1",
			inputTopology: nil,
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1":          "com.example.csi/csi-node1",
				"net.example.storage/other-driver": "net.example.storage/test-node",
			},
			expectedTopologyMap: map[string]sets.String{
				"net.example.storage/other-driver": sets.NewString("net.example.storage/rack"),
				"com.example.csi/driver1":          nil,
			},
			expectedLabels: map[string]string{
				"net.example.storage/rack": "rack1",
			},
		},
		{
			name:         "empty node ID",
			driverName:   "com.example.csi/driver1",
			existingNode: generateNode(nil /* nodeIDs */, nil /* labels */, nil /*capacity*/),
			inputNodeID:  "",
			expectFail:   true,
		},
		{
			name:                "new node with valid max limit",
			driverName:          "com.example.csi/driver1",
			existingNode:        generateNode(nil /*nodeIDs*/, nil /*labels*/, nil /*capacity*/),
			inputVolumeLimit:    10,
			inputTopology:       nil,
			inputNodeID:         "com.example.csi/csi-node1",
			expectedVolumeLimit: 10,
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": nil,
			},
			expectedLabels: nil,
		},
		{
			name:       "node with existing valid max limit",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nil, /*nodeIDs*/
				nil, /*labels*/
				map[v1.ResourceName]resource.Quantity{
					v1.ResourceCPU: *resource.NewScaledQuantity(4, -3),
					v1.ResourceName(util.GetCSIAttachLimitKey("com.example.csi/driver1")): *resource.NewQuantity(10, resource.DecimalSI),
				}),
			inputVolumeLimit:    20,
			inputTopology:       nil,
			inputNodeID:         "com.example.csi/csi-node1",
			expectedVolumeLimit: 20,
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"com.example.csi/driver1": nil,
			},
			expectedLabels: nil,
		},
	}

	test(t, true /* addNodeInfo */, true /* csiNodeInfoEnabled */, testcases)
}

// TestAddNodeInfo_CSINodeInfoDisabled tests AddNodeInfo with various existing Node annotations
// and CSINodeInfo feature gate disabled.
func TestAddNodeInfo_CSINodeInfoDisabled(t *testing.T) {
	testcases := []testcase{
		{
			name:         "empty node",
			driverName:   "com.example.csi/driver1",
			existingNode: generateNode(nil /* nodeIDs */, nil /* labels */, nil /*capacity*/),
			inputNodeID:  "com.example.csi/csi-node1",
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
		},
		{
			name:       "pre-existing node info from the same driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				nil /* labels */, nil /*capacity*/),
			inputNodeID: "com.example.csi/csi-node1",
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1": "com.example.csi/csi-node1",
			},
		},
		{
			name:       "pre-existing node info from different driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/test-node",
				},
				nil /* labels */, nil /*capacity*/),
			inputNodeID: "com.example.csi/csi-node1",
			expectedNodeIDMap: map[string]string{
				"com.example.csi/driver1":          "com.example.csi/csi-node1",
				"net.example.storage/other-driver": "net.example.storage/test-node",
			},
		},
	}

	test(t, true /* addNodeInfo */, false /* csiNodeInfoEnabled */, testcases)
}

// TestRemoveNodeInfo tests RemoveNodeInfo with various existing Node and/or CSINodeInfo objects.
func TestRemoveNodeInfo(t *testing.T) {
	testcases := []testcase{
		{
			name:              "empty node and no CSINodeInfo",
			driverName:        "com.example.csi/driver1",
			existingNode:      generateNode(nil /* nodeIDs */, nil /* labels */, nil /*capacity*/),
			expectedNodeIDMap: nil,
			expectedLabels:    nil,
			expectNoNodeInfo:  true,
		},
		{
			name:       "pre-existing node info from the same driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				labelMap{
					"com.example.csi/zone": "zoneA",
				}, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				topologyKeyMap{
					"com.example.csi/driver1": {"com.example.csi/zone"},
				},
			),
			expectedNodeIDMap: nil,
			expectedLabels:    map[string]string{"com.example.csi/zone": "zoneA"},
			expectNoNodeInfo:  true,
		},
		{
			name:       "pre-existing node info from different driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/csi-node1",
				},
				labelMap{
					"net.example.storage/zone": "zoneA",
				}, nil /*capacity*/),
			existingNodeInfo: generateNodeInfo(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/csi-node1",
				},
				topologyKeyMap{
					"net.example.storage/other-driver": {"net.example.storage/zone"},
				},
			),
			expectedNodeIDMap: map[string]string{
				"net.example.storage/other-driver": "net.example.storage/csi-node1",
			},
			expectedTopologyMap: map[string]sets.String{
				"net.example.storage/other-driver": sets.NewString("net.example.storage/zone"),
			},
			expectedLabels: map[string]string{"net.example.storage/zone": "zoneA"},
		},
		{
			name:       "pre-existing info about the same driver in node, but no CSINodeInfo",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				nil /* labels */, nil /*capacity*/),
			expectedNodeIDMap: nil,
			expectedLabels:    nil,
			expectNoNodeInfo:  true,
		},
		{
			name: "pre-existing info about a different driver in node, but no CSINodeInfo",
			existingNode: generateNode(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/csi-node1",
				},
				nil /* labels */, nil /*capacity*/),
			expectedNodeIDMap: map[string]string{
				"net.example.storage/other-driver": "net.example.storage/csi-node1",
			},
			expectedLabels:   nil,
			expectNoNodeInfo: true,
		},
		{
			name:       "new node with valid max limit",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nil, /*nodeIDs*/
				nil, /*labels*/
				map[v1.ResourceName]resource.Quantity{
					v1.ResourceCPU: *resource.NewScaledQuantity(4, -3),
					v1.ResourceName(util.GetCSIAttachLimitKey("com.example.csi/driver1")): *resource.NewQuantity(10, resource.DecimalSI),
				},
			),
			inputTopology:       nil,
			inputNodeID:         "com.example.csi/csi-node1",
			expectNoNodeInfo:    true,
			expectedVolumeLimit: 0,
		},
	}

	test(t, false /* addNodeInfo */, true /* csiNodeInfoEnabled */, testcases)
}

// TestRemoveNodeInfo tests RemoveNodeInfo with various existing Node objects and CSINodeInfo
// feature disabled.
func TestRemoveNodeInfo_CSINodeInfoDisabled(t *testing.T) {
	testcases := []testcase{
		{
			name:              "empty node",
			driverName:        "com.example.csi/driver1",
			existingNode:      generateNode(nil /* nodeIDs */, nil /* labels */, nil /*capacity*/),
			expectedNodeIDMap: nil,
		},
		{
			name:       "pre-existing node info from the same driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				nil /* labels */, nil /*capacity*/),
			expectedNodeIDMap: nil,
		},
		{
			name:       "pre-existing node info from different driver",
			driverName: "com.example.csi/driver1",
			existingNode: generateNode(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/csi-node1",
				},
				nil /* labels */, nil /*capacity*/),
			expectedNodeIDMap: map[string]string{
				"net.example.storage/other-driver": "net.example.storage/csi-node1",
			},
		},
	}

	test(t, false /* addNodeInfo */, false /* csiNodeInfoEnabled */, testcases)
}

func TestAddNodeInfoExistingAnnotation(t *testing.T) {
	defer utilfeaturetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CSINodeInfo, true)()

	driverName := "com.example.csi/driver1"
	nodeID := "com.example.csi/some-node"

	testcases := []struct {
		name         string
		existingNode *v1.Node
	}{
		{
			name: "pre-existing info about the same driver in node, but no CSINodeInfo",
			existingNode: generateNode(
				nodeIDMap{
					"com.example.csi/driver1": "com.example.csi/csi-node1",
				},
				nil /* labels */, nil /*capacity*/),
		},
		{
			name: "pre-existing info about a different driver in node, but no CSINodeInfo",
			existingNode: generateNode(
				nodeIDMap{
					"net.example.storage/other-driver": "net.example.storage/test-node",
				},
				nil /* labels */, nil /*capacity*/),
		},
	}

	for _, tc := range testcases {
		t.Logf("test case: %q", tc.name)

		// Arrange
		nodeName := tc.existingNode.Name
		client := fake.NewSimpleClientset(tc.existingNode)
		csiClient := csifake.NewSimpleClientset()

		tmpDir, err := utiltesting.MkTmpdir("nodeinfomanager-test")
		if err != nil {
			t.Fatalf("can't create temp dir: %v", err)
		}
		host := volumetest.NewFakeVolumeHostWithCSINodeName(
			tmpDir,
			client,
			csiClient,
			nil,
			nodeName,
		)

		nim := NewNodeInfoManager(types.NodeName(nodeName), host)

		// Act
		err = nim.AddNodeInfo(driverName, nodeID, 0 /* maxVolumeLimit */, nil) // TODO test maxVolumeLimit
		if err != nil {
			t.Errorf("expected no error from AddNodeInfo call but got: %v", err)
			continue
		}

		// Assert
		nodeInfo, err := csiClient.Csi().CSINodeInfos().Get(nodeName, metav1.GetOptions{})
		if err != nil {
			t.Errorf("error getting CSINodeInfo: %v", err)
			continue
		}

		if len(nodeInfo.CSIDrivers) != 1 {
			t.Errorf("expected 1 CSIDriverInfo entry but got: %d", len(nodeInfo.CSIDrivers))
			continue
		}

		driver := nodeInfo.CSIDrivers[0]
		if driver.Driver != driverName || driver.NodeID != nodeID {
			t.Errorf("expected Driver to be %q and NodeID to be %q, but got: %q:%q", driverName, nodeID, driver.Driver, driver.NodeID)
		}
	}
}

func test(t *testing.T, addNodeInfo bool, csiNodeInfoEnabled bool, testcases []testcase) {
	defer utilfeaturetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.CSINodeInfo, csiNodeInfoEnabled)()
	defer utilfeaturetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.AttachVolumeLimit, true)()

	for _, tc := range testcases {
		t.Logf("test case: %q", tc.name)

		//// Arrange
		nodeName := tc.existingNode.Name
		client := fake.NewSimpleClientset(tc.existingNode)
		var csiClient *csifake.Clientset
		if tc.existingNodeInfo == nil {
			csiClient = csifake.NewSimpleClientset()
		} else {
			csiClient = csifake.NewSimpleClientset(tc.existingNodeInfo)
		}

		tmpDir, err := utiltesting.MkTmpdir("nodeinfomanager-test")
		if err != nil {
			t.Fatalf("can't create temp dir: %v", err)
		}
		host := volumetest.NewFakeVolumeHostWithCSINodeName(
			tmpDir,
			client,
			csiClient,
			nil,
			nodeName,
		)
		nim := NewNodeInfoManager(types.NodeName(nodeName), host)

		//// Act
		if addNodeInfo {
			err = nim.AddNodeInfo(tc.driverName, tc.inputNodeID, tc.inputVolumeLimit, tc.inputTopology)
		} else {
			err = nim.RemoveNodeInfo(tc.driverName)
		}

		//// Assert
		if tc.expectFail {
			if err == nil {
				t.Errorf("expected an error from AddNodeInfo call but got none")
			}
			continue
		} else if err != nil {
			t.Errorf("expected no error from AddNodeInfo call but got: %v", err)
			continue
		}

		/* Node Validation */
		node, err := client.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
		if err != nil {
			t.Errorf("error getting node: %v", err)
			continue
		}

		// We are testing max volume limits
		attachLimit := getVolumeLimit(node, tc.driverName)
		if attachLimit != tc.expectedVolumeLimit {
			t.Errorf("expected volume limit to be %d got %d", tc.expectedVolumeLimit, attachLimit)
			continue
		}

		// Node ID annotation
		annNodeID, ok := node.Annotations[annotationKeyNodeID]
		if ok {
			if tc.expectedNodeIDMap == nil {
				t.Errorf("expected annotation %q to not exist, but got: %q", annotationKeyNodeID, annNodeID)
			} else {
				var actualNodeIDs map[string]string
				err = json.Unmarshal([]byte(annNodeID), &actualNodeIDs)
				if err != nil {
					t.Errorf("expected no error when parsing annotation %q, but got error: %v", annotationKeyNodeID, err)
				}

				if !helper.Semantic.DeepEqual(actualNodeIDs, tc.expectedNodeIDMap) {
					t.Errorf("expected annotation %v; got: %v", tc.expectedNodeIDMap, actualNodeIDs)
				}
			}
		} else {
			if tc.expectedNodeIDMap != nil {
				t.Errorf("expected annotation %q, but got none", annotationKeyNodeID)
			}
		}

		if csiNodeInfoEnabled {
			// Topology labels
			if !helper.Semantic.DeepEqual(node.Labels, tc.expectedLabels) {
				t.Errorf("expected topology labels to be %v; got: %v", tc.expectedLabels, node.Labels)
			}

			/* CSINodeInfo validation */
			nodeInfo, err := csiClient.Csi().CSINodeInfos().Get(nodeName, metav1.GetOptions{})
			if tc.expectNoNodeInfo && errors.IsNotFound(err) {
				continue
			} else if err != nil {
				t.Errorf("error getting CSINodeInfo: %v", err)
				continue
			}

			// Extract node IDs and topology keys
			actualNodeIDs := make(map[string]string)
			actualTopologyKeys := make(map[string]sets.String)
			for _, driver := range nodeInfo.CSIDrivers {
				actualNodeIDs[driver.Driver] = driver.NodeID
				actualTopologyKeys[driver.Driver] = sets.NewString(driver.TopologyKeys...)
			}

			// Node IDs
			if !helper.Semantic.DeepEqual(actualNodeIDs, tc.expectedNodeIDMap) {
				t.Errorf("expected node IDs %v from CSINodeInfo; got: %v", tc.expectedNodeIDMap, actualNodeIDs)
			}

			// Topology keys
			if !helper.Semantic.DeepEqual(actualTopologyKeys, tc.expectedTopologyMap) {
				t.Errorf("expected topology keys %v from CSINodeInfo; got: %v", tc.expectedTopologyMap, actualTopologyKeys)
			}
		}
	}
}

func getVolumeLimit(node *v1.Node, driverName string) int64 {
	volumeLimits := map[v1.ResourceName]int64{}
	nodeAllocatables := node.Status.Allocatable
	for k, v := range nodeAllocatables {
		if v1helper.IsAttachableVolumeResourceName(k) {
			volumeLimits[k] = v.Value()
		}
	}
	attachKey := v1.ResourceName(util.GetCSIAttachLimitKey(driverName))
	attachLimit := volumeLimits[attachKey]
	return attachLimit
}

func generateNode(nodeIDs, labels map[string]string, capacity map[v1.ResourceName]resource.Quantity) *v1.Node {
	var annotations map[string]string
	if len(nodeIDs) > 0 {
		b, _ := json.Marshal(nodeIDs)
		annotations = map[string]string{annotationKeyNodeID: string(b)}
	}
	node := &v1.Node{
		ObjectMeta: metav1.ObjectMeta{
			Name:        "node1",
			Annotations: annotations,
			Labels:      labels,
		},
	}

	if len(capacity) > 0 {
		node.Status.Capacity = v1.ResourceList(capacity)
		node.Status.Allocatable = v1.ResourceList(capacity)
	}
	return node
}

func generateNodeInfo(nodeIDs map[string]string, topologyKeys map[string][]string) *csiv1alpha1.CSINodeInfo {
	var drivers []csiv1alpha1.CSIDriverInfo
	for k, nodeID := range nodeIDs {
		d := csiv1alpha1.CSIDriverInfo{
			Driver: k,
			NodeID: nodeID,
		}
		if top, exists := topologyKeys[k]; exists {
			d.TopologyKeys = top
		}
		drivers = append(drivers, d)
	}
	return &csiv1alpha1.CSINodeInfo{
		ObjectMeta: metav1.ObjectMeta{
			Name: "node1",
		},
		CSIDrivers: drivers,
	}
}

redpajama_set_name: RedPajamaGithub


Frances and James Maguire with Pa. First Lady Susan Corbett (right) at AIM Academy's Stars Gala.
James J. Maguire Sr., of Chestnut Hill, received the Sally L. Smith Founder's Award at the 6th Annual AIM for the Stars Gala sponsored by AIM Academy in Conshohocken.
The award is given to inspirational leaders who have overcome learning challenges in their lives and through their success, leadership, and spirit, have made significant contributions to enhance education opportunities for children who learn differently.
Also receiving the award were David and Evan Yurman, father and son who are noted innovative American jewelry designers.
The gala, held Nov. 14 at the Hyatt at the Bellevue in Philadelphia, raised $250,000 to support literacy for all students who learn differently.
Maguire is founder and chairman emeritus of the Philadelphia Consolidated Holding Corporation. He is the author of an autobiography titled "Just Show Up Every Day" that chronicles the history of Philadelphia Insurance Companies, the Maguire family, and his personal struggle with dyslexia.
A Korean War veteran, he is a graduate of Saint Joseph's University and also holds honorary degrees in law from Gwynedd-Mercy College, Chestnut Hill College and Cabrini College, and is an honorary member of Beta Gamma Sigma.
He is a past member of the board of directors and executive committee for the Pennsylvania Insurance Federation, a charter member of the St. Joseph's University Magis Society, a recipient of the Shield of Loyola (the university's highest honor), and has been honored by the university, which named its new 38-acre Merion campus the James J. Maguire '58 Campus.
AIM Academy, a grade 1-12 college preparatory school, provides extraordinary educational opportunities to children with language-based learning disabilities including dyslexia, dysgraphia and dyscalculia, utilizing research-based intervention strategies and an arts-based learning environment.


Peter Schweizer has written a book called Extortion: How Politicians extract your money, buy votes, and line their own pockets. The subtitle gives away the plot—but that's all right because this is not fiction. This is all too real.
The central thesis is that we have been thinking about corruption in Washington, D.C. the wrong way. We have assumed that politicians become corrupt because they take bribes from "special interests." Barack Obama ran in 2008 on the proposition that Washington was in the grip of special interests and that he was going to bring a whole new way of governing to Washington.
The Obama administration has just substituted one set of special interests for another. What went wrong?
Nothing. It all went according to script.
The first thing that we have to understand is that Washington does not operate according to principle. Policies and laws to enact those policies do not flow from principle: they flow from money.
We've seen books on corruption before. In 2009, Michelle Malkin wrote about the Democrat Party machine behind Barack Obama in Culture of Corruption. That described the "who" on one side of the aisle. Ian Murray in 2011 wrote Stealing you blind. Murray showed how an out-of-control bureaucracy has expanded their numbers and raised their salaries and benefits. Schweizer did the same for politicians in his 2011 book, Throw Them All Out: How Politicians and Their Friend Get Rich off Insider stock Tip, Land Deals and Cronyism that would send the rest of us to prison.
This time, in Extortion Schweizer brings it all together. What if it is not a case of outside interests corrupting politicians, but rather politicians themselves being the source of the corruption? What if it is not a case of bribery but of extortion?
With example after example, Schweizer describes how the money flows in Washington and how the politicians control those flows. If Washington, D.C. were run by the Mafia, it wouldn't look or feel very much different than it does today. The main difference, Schweizer says, is that what the Mafia does is illegal; what the politicians do is legal.
That's just one way. Hiring relatives on staff is another one; getting lobbying firms to hire relatives is another. While campaign committees generally have rules against using money for purely personal expenses, leadership PACs don't. If a politician gets defeated for higher office, he or she can always go join a Washington lobbying firm. At one point Republican Bob Dole and Democrat Tom Daschle worked for the same one.
This is not a book bashing one party over the other. Both parties work in the same way and Schweizer gives examples from both sides. In fact, he rarely refers to parties except as identifiers for individual politicians. They're all part of the Permanent Political Class.
That class isn't limited to officeholders. Congressional staff engage in the game as well. They write complex bills such as Dodd-Frank and then go to legal firms to "cash out" by providing advice on how to comply with those bills.
In 2009, the Tea Party criticized Congress for not reading the healthcare bill. Rep. Rangel said that it was an open secret that Congress didn't read any of the bills. Indeed, reading the bills might be of little or no help. They're long and complex on purpose. Only the people who wrote them have any idea what's in them.
When you read this book, several questions that don't seem to have clear answers become clear.
The first is why the Republican Establishment hates the Tea Party. In the Tea Party world, principles matter. The people who come to Washington with ideas of fiscal reform or of reforming the federal government itself are messing with the system. Schweizer shows clearly the system they're threatening—and how the system ensnares new congresspeople.
The second is why Congress won't reform itself. Congress went through a series of reforms in the late 1970s following the House banking scandal and we're right back where we were then—if not worse.
In his final chapter, Schweizer gives some prescriptions for reform. The bottom line, he says, is that politicians are just ordinary people who look out for their own interests and should be subject to the same kinds of rewards and punishments that the rest of us are.
Conservatives looking for the Second Coming of Ronald Reagan are just as wrong as liberals worshiping at the Altar of St. Obama.
It is well worth your time to read this.
Extortion: How Politicians extract your money, buy votes, and line their own pockets.


The Tucson follows Hyundai's Fluidic Sculpture 2.0 design theme, with sculpted lines and a striking athletic presence. The stylish hexagonal grille features high-efficiency LED projector headlights, LED accent lights and LED daytime running lights. The rear features a Z-shaped character line to complete an aggressive profile, while the rear end is accented with LED taillights. Twin bevel-cut exhaust tips and a rear spoiler complete the look.
The Tucson features a capacious 31.0 cubic feet of cargo space as well as a "dual-level" design for greater versatility. In addition, the 60/40 split-fold rear seatbacks recline up to 37 degrees for even more rear seat comfort.
Five trims are offered on the 2018 Tucson: SE, SEL, SEL Plus, Value and Limited. The SE, SEL and SEL Plus are powered by a direct-injected 2.0L four that makes 164 horsepower and 151 pound-feet of torque. The engine is mated to a 6-speed automatic transmission with SHIFTRONIC manual shifting mode, which includes an overdrive lock-up torque converter for increased fuel economy at cruising speeds.
The Value model is powered by a direct-injected 1.6L turbocharged four that outputs 175 horsepower and 195 pound-feet of torque. Peak torque comes on as low as 1,500 rpm for excellent responsiveness. This engine is paired with a 7-speed EcoShift dual-clutch transmission, and on front-wheel-drive Eco models, the powertrain returns an EPA-estimated 29 mpg combined. Front-wheel drive is standard on all Tucson trims, while all-wheel drive is available.
SE models are equipped with 17-inch alloy wheels, air conditioning, a 5-inch color touchscreen audio system, a rearview camera, a 6-way adjustable driver's seat and a tilt/telescopic steering wheel.
In addition to the 1.6L turbo, the Eco features upgraded front and rear fascias, integrated turn indicators in the side mirrors, LED daytime running lights and halogen fog lights and metal-look side sills. Inside, there's a power driver's seat with power lumbar support and auto up/down driver's window.
Stepping up to the Tucson Sport yields 19-inch alloy wheels, illuminated outside front door handles, a hands-free power liftgate, heated front seats, a leather-wrapped steering wheel and shift knob and push-button start. Standard advanced safety features include blind spot detection, rear cross-traffic alert and lane-change assist.
The Sport Edition adds a 2.4L 181-hp engine, a power sunroof and a dual-zone climate control.
Finally, the SEL Plus Limited comes standard with LED headlights and taillights, with a chrome grill and door handles. A leather interior, a power-adjustable passenger seat, an 8-inch touchscreen navigation system, dual automatic climate control, an upgraded instrument panel, Blue Link Telematics and an auto-dimming rearview mirror and compass are standard.
Two packages are available for the Tucson SE. The Preferred Package features LED running lights and halogen fog lights, roof rails and premium side sills, auto up/down windows and illuminated vanity mirrors. To the above, the Popular Equipment Package adds a power driver's seat and power lumbar support. For the Limited, the Ultimate Package includes HID headlights with Dynamic Bending Lighting, lane departure warning, a panoramic sunroof, LED map lights, ventilated front and heated rear seats and a 4.2-inch LCD electroluminescent gauge cluster.
Standard safety features across the Tucson range include a tire pressure monitor, stability and traction control, anti-lock brakes with brake assist and a host of front, rear and side airbags.
The Hyundai Tucson comes into 2018 with a re-shuffling of trim level packages that now number five. New standard features for SEL and higher trims include heated front seats, SiriusXM, plus Android Auto and Apple CarPlay. The SEL Plus trim gets an 8-inch touch screen and Infinity audio, while the Limited trim level gains a heated steering wheel.
The Hyundai Tucson competes in a very crowded small crossover segment, sized right between compacts like the Mazda CX-3 or Honda HR-V and the larger Toyota RAV4, Ford Escape and Honda CR-V. The Tucson shines in the interior space it affords, for both cargo and passengers, and adults will find themselves right at home in the back seat -- a rarity in vehicles like this. Efficiency, too, will attract buyers, particularly with the sprightly 1.6L turbo, which rewards in both acceleration and fuel economy, offering up to 33 mpg on the highway in Eco trim.
* Pricing - All vehicle pricing shown is assumed to be correct and accurate. Incentives, credit restrictions, qualifying programs, residency, and fees may raise, lower, or otherwise augment monthly payments. Stivers price includes $449 closing fee. Additionally, incentives offered by the manufacturer are subject to change and may fluctuate or differ based on region and other considerations. Unless otherwise noted or specified, pricing shown does not include title, registration, or tax fees and costs.


text:
Ubisoft 'Hostage' Situation Was a Fake Bomb Ransom Attempt
Mike Sanders / 2 months ago
Yesterday evening, we reported on a rather alarming situation that was occurring at Ubisoft's Montreal HQ. Although details were somewhat vague at the time, it seemed that some kind of hostage situation was happening at the office building with around (or at least) 30 staff members being held on the rooftop.
Well, following a new report via Polygon, the good news is that although the incident itself was very much real, nobody was apparently in any kind of actual danger. Put simply, it looks like Ubisoft just got swatted!
Edit – We have unconfirmed rumors that the incident may have been a fake bomb scare where an unidentified person attempted to get a $2m 'ransom' from Ubisoft! – Techspot
pic.twitter.com/3fKlfoZMsi
— Ubisoft Montréal (@UbisoftMTL) November 14, 2020
Ubisoft HQ Gets Swatted?
For those of you unfamiliar with what being 'swatted' is, in a nutshell, it's when a fake report is made to the police that (usually) armed-person/s are in attendance of a building or premises with the intention to cause harm. With no such person/s yet being identified at the Ubisoft offices (under those remits) it does, therefore, seem more than likely that this was one of those 'pranks'.
And we use the term 'prank' exceptionally loosely as not only is 'swatting' very much illegal, but in the past, it has led to incidents of people accidentally being hurt or killed.
With the updated and unconfirmed report of this being a potential fake 'bomb' scare in an attempt to get a 'ransom' out of Ubisoft, however, if this is true, the situation clearly takes a far more sinister tone!
No threat has been identified for now. We are currently evacuating the building. #SPVM https://t.co/7g7eHU2B1T
— Police Montréal (@SPVM) November 13, 2020
Following the incident, Montreal police have issued the following statement:
"This Friday afternoon, the Service de police de la Ville de Montréal (SPVM) deployed a large number of resources to answer a call for a hostage situation in a Saint-Laurent Boulevard office building. The perimeter was quickly secured and the SPVM confirms no threat has been detected and no injuries are reported.
The evacuees are being directed to a place where investigators will take their statements. A team of CIUSS social workers is also on hand to support them as needed.
An investigation will follow regarding the call behind this important police force deployment."
What Do We Think?
With staff being photographed on the rooftop, the best conclusion we can draw is that this is the office's official procedure should an event like this actually occur. If it was a bomb threat, for example, presumably the person who made it suggested that any attempt to leave the building would result in its detonation and, as such, the roof was likely deemed the safest location within those remits.
With it being confirmed as fake, however, while all very dramatic, the good news is that no 'hostage' or 'bomb' situation was actually present and, in so far as we can tell, no one has thankfully been hurt in the likely very scary situation for a lot of staff members and their families.
As for the person/s who false reported this, however… Well, let's just say that the Montreal police are very keen to speak with them!
What do you think? – Let us know in the comments!
Topics: developer, hoax, police, swatting, ubisoft, Ubisoft News
Support eTeknix.com
By supporting eTeknix, you help us grow and continue to bring you the latest news, reviews, and competitions. Follow us on Facebook, Twitter and Instagram to keep up with the latest technology news, reviews and more. Share your favourite articles, chat with the team and more. Also check out eTeknix YouTube, where you'll find our latest video reviews, event coverage and features in 4K!
Looking for more exciting features on the latest technology? Check out our What We Know So Far section or our Fun Reads for some interesting original features.
Check out our Latest Video
Is X570 Worth it?

redpajama_set_name: RedPajamaCommonCrawl


category mid/cap stocks , JCOM , ULTI , and 6 more.
category EPS Growth Forecast , Benzinga , ASTE , and 6 more.
category Benzinga , EPS Growth Forecast , BP , and 6 more.
category Healthcare Information Services Industry , Benzinga , EPS Growth Forecast , and 6 more.
category GEVO , EPS Growth Forecast , Benzinga , and 6 more.
category small/cap stocks , Textile/Apparel Footwear & Accessories Industry , CAL , and 6 more.
category NYSE Stocks , BKFS , Trading Ideas , and 6 more.
category Drug Delivery Industry , PETS , EPS Growth Forecast , and 6 more.
category LINE , Energy , GPOR , and 8 more.
category Trading Ideas , KCAP , CBOE , and 6 more.
category THC , ADPT , Trading Ideas , and 8 more.
category AKOB , Beverages/Soft Drinks Industry , CCE , and 6 more.
category Benzinga , MM , EPS Growth Forecast , and 6 more.
category PWR , Trading Ideas , MYRG , and 5 more.
category STRL , LAYN , Trading Ideas , and 6 more.
category SMTX , Benzinga , NASDAQ Stocks , and 6 more.
category AA , KALU , Aluminum Industry , and 5 more.
category CNHI , TWI , EPS Growth Forecast , and 6 more.
category Trading Ideas , NGD , AUY , and 6 more.
category mid/cap stocks , Biotechnology Industry , EPS Growth Forecast , and 6 more.
category HL , SVM , AG , and 6 more.
category FANG , Trading Ideas , Independent Oil & Gas Industry , and 6 more.
category AVH , Benzinga , Regional Airlines Industry , and 6 more.
category POL , Specialty Chemicals Industry , PAH , and 6 more.
category Trading Ideas , CRESY , Specialty Chemicals , and 8 more.
category Benzinga , Electric Utilities Industry , NYLD , and 6 more.
category SGNT , Drugs/Generic Industry , EPS Growth Forecast , and 6 more.
category ATAI , Benzinga , TEDU , and 6 more.
category NWL , Benzinga , EPS Growth Forecast , and 5 more.
category NASDAQ Stocks , Benzinga , EPS Growth Forecast , and 6 more.


Glenfield Capital, an Atlanta-based real estate investment company, today announced that KNAPP Logistics Automation has signed an extension at 2124 Barrett Park Drive in Kennesaw, Georgia. KNAPP, a worldwide leader in warehouse and distribution center automation, occupies 23,100 square-foot of this single story office building.
Glenfield Capital acquired the two buildings at 2120 & 2124 Barrett Park Drive containing 151,000 square feet in early 2012 and has maintained 100% occupancy during its ownership. KNAPP has been a tenant since 2005 and operates their North American headquarters out of this location.
KNAPP has been developing comprehensive material handling and software solutions for more than four generations. By combining state-of-the-art software with unique picking and storage technology, KNAPP develops the perfect high-performance automated material handling solution.


text:
'Tap out' game warning as worrying craze sweeps school playgrounds and parks
Mum-of-two Katy Spence from Boston saw a gathering of eight children playing the game in a public park near her home
Danielle Hoe
James Rodger
A mum has issued a chilling cautioning over a disturbing new craze sweeping the UK - called 'tap out'.
The game, alarming, is being played by schoolchildren.
Mum-of-two Katy Spence from Boston saw a gathering of eight children playing the game in a public park near her home, reports LincolnshireLive.
But she interrupted the gathering to let them know of the risks.
The craze sees an individual being held in a strangle hold where their neck is pressed until they nearly lose awareness and they 'tap out' to flag them to stop.
A 12-year-old kid from Birmingham died in 2016 in the wake of playing the tragic game.
"They just had no regard for the danger they were putting themselves in"
Another boy from America now has permanent brain damage after he played the game too.
Katy said: "I had taken my nine-year-old son, six-year-old niece and three-year-old nephew to the skate park in Kirton on Wednesday last week.
"I was sat on a blanket reading a book when I heard a group of kids, around 11 years old say that they were going to play the 'tap out' game.
"There was a group of around eight of them and they were being loud and quite intimidating.
"I usually would never say something to someone else's child, but when I heard them say that, I had to intervene.
"I said to them that they shouldn't play that game, but they didn't care what I had to say and said 'are you going to stop us?'
"They just had no regard for the danger they were putting themselves in, when I told them that they could end up in a wheelchair they just didn't care."
The game has been around for a number of years with three students in America all being left in a critical condition after playing it.
20 worst baby names of 2019
Speed camera van man spills secrets
Baby wipe hack a 'game-changer'
KFC staff wrote insult on dad's gravy
Jose Morales from America was left with permanent brain damage after he lost consciousness and stopped breathing.
Now he requires around the clock care.
Katy added: "When I got back home I was shocked and upset that they just had no regard for their own safety.
"Many parents don't know what the game is, but they need to know the dangers.
"I told the kids in the park that if they did start playing I would call the police immediately.
"No one should be doing that to each other.
"It's just so scary from a mothers point of view as it can be so dangerous.
"If they did it out of view, in a forest or a quiet park and something went wrong the consequences could be disastrous.
"Parents need to be aware of the dangers and know what games their kids are playing."


Note : DEFECTIVE FOR PARTS Condition. Includes Headphones only. ISSUE: One side does not produce audio. May have additional issues we could not test for.
Created by LeBron James and Dr. Dre, the red Powerbeats - Earbuds Engineered for Athletes by Beats feature adjustable/bendable earclips that wrap around the outside of your ears, keeping the earphones from moving or falling out while you exercise.
�The tips are made to give you enough noise isolation to keep your music from leaking out, but not so much that you lose awareness of what's going on around you, which is a particularly important safety feature for runners. The headphones are also sweat resistant and UV protected, making them well suited for indoor or outdoor workouts.
Rather than the typical single driver, each ear of the Powerbeats is equipped with a subwoofer and a midrange tweeter. The purpose of this design is to efficiently reproduce audio across the frequency spectrum.
An integrated control module with a built-in mic lets you make phone calls, take voice notes, skip tracks, and adjust volume levels on the iPhone or other compatible smartphones. You can also use the track and volume-control features when connected to an iPod touch or another compatible MP3 player. To get the full functionality from Powerbeats' control features, your device must be compatible with Monster's ControlTalk Universal standard.
Flexible earclips are designed to secure the Powerbeats earphones in your ears, even during vigorous workouts. Sweat-resistant materials and ear tips of all sizes keep you comfortable.
Powerbeats earphones come with two speakers inside each bud, a feature designed to provide quality and accurate response at any volume level.
The ear tips are designed to allow you to maintain awareness of your surroundings without leaking music out to those around you.
Powerbeats earphones are designed to pump clear bass at any volume while still letting in ambient noise-making sure athletes stay safe while running on the road.
An integrated control module with a built-in mic lets you make phone calls, take voice notes, skip tracks, and adjust volume levels on the iPhone. Many other smartphones are compatible, as are certain MP3 players such as the iPod touch. To get the full functionality from Powerbeats' control features, your device must be compatible with Monster's ControlTalk Universal standard.
The headphones are sweat-resistant and UV protected, making them ideal for indoor or outdoor workouts.
A carrying case is included for storage and travel.


text:
Schools in Sumter, SC
Best Fit Climate Cost of Living (Low to High) Cost of Living (High to Low) Education Quality Outcomes
Within: miles
(23) Elementary School
(10) High School
(14) Middle School
(12) Private
(22) Public
(22) Sumter 01
(1) Adventist
(3) Baptist
(2) Catholic
(1) Special Needs
(7) Traditional
(1) Vocational
(1) Yearbook
(2) Cross Country
(1) Football
(1) Golf
(3) Soccer
(3) Volleyball
Show all 13 Show fewer
(34) Coeducational
Main Search Results
Discover & research the 34 schools in Sumter, SC. Narrow by grade level, religious affiliation, and sports offered and get advice from other parents on Noodle.
Millwood Elementary
24 Pinewood Rd, Sumter, SC 29150
Education Quality
Millwood Elementary is a coeducational public school for students in grades Pre-K through 5. learn more
Institution Type: Public Setting: Small City District: Sumter 01
Mayewood Middle School
4300 East Brewington Rd, Sumter, SC 29153
Mayewood Middle School is a coeducational public school for students in grades 6 through 8. learn more
Institution Type: Public Setting: Rural District: Sumter 01
Shaw Heights Elementary
5121 Frierson Rd, Sumter, SC 29152
Shaw Heights Elementary is a coeducational public school for students in grades 2 through 3. learn more
Institution Type: Public Setting: Suburban District: Sumter 01
3440 Ebenezer Rd, Sumter, SC 29153
Ebenezer Middle School is a coeducational public school for students in grades 6 through 8. learn more
Pocalla Springs Elementary
2060 Bethel Church Rd, Sumter, SC 29154
Pocalla Springs Elementary is a coeducational public school for students in grades Pre-K through 5. learn more
Chestnut Oaks Middle School
1200 Oswego Rd, Sumter, SC 29153
Chestnut Oaks Middle School is a coeducational public school for students in grades 6 through 8. learn more
Oakland Elementary
5415 Oakland Dr, Sumter, SC 29154
Oakland Elementary is a coeducational public school for students in grades Pre-K through 1. learn more
Lemira Elementary
952 Fulton St, Sumter, SC 29150
Lemira Elementary is a coeducational public school for students in grades Pre-K through 5. learn more
Willow Drive Elementary
26 Willow Dr, Sumter, SC 29150
Willow Drive Elementary is a coeducational public magnet school for students in grades Pre-K through 5. learn more
Alice Drive Middle School
40 Miller Rd, Sumter, SC 29150
Alice Drive Middle School is a coeducational public school for students in grades 6 through 8. learn more
Kingsbury Elementary
825 Kingsbury Rd, Sumter, SC 29154
Kingsbury Elementary is a coeducational public school for students in grades Pre-K through 5. learn more
350 Old Manning Rd, Sumter, SC 29150
Lakewood High School is a coeducational public school for students in grades 9 through 12. learn more
Facts About Schools in Sumter, SC
There are 34 Schools in Sumter, SC.
Browse Schools in Sumter, SC by Type
(12) Private Schools in Sumter, SC
(22) Public Schools in Sumter, SC
Browse Schools in Sumter, SC by Level
(23) Elementary Schools in Sumter, SC
(10) High Schools in Sumter, SC
(14) Middle Schools in Sumter, SC
Browse Schools in Sumter, SC by Characteristic
(1) Special Needs Schools in Sumter, SC
(7) Traditional Schools in Sumter, SC
(1) Vocational Schools in Sumter, SC
Browse Schools in Sumter, SC by Religion
(1) Adventist Schools in Sumter, SC
(3) Baptist Schools in Sumter, SC
(2) Catholic Schools in Sumter, SC
Browse Schools in Sumter, SC by City
Schools in South Carolina
Browse Schools in Sumter, SC by Gender
(34) Coeducational Schools in Sumter, SC
Parent Teacher Relations
We'll let you know as soon as we launch Schools.


We are looking for experienced Retail Sales Specialists. Ongoing full time position with a great working environment. Don't miss out APPLY TODAY!!
The daily support of the production department, liaising with overseas suppliers, and production team, become a part of our dynamic fashion team.
Are you passionate about fashion and customer service? We are! Join our exciting and fun team at our fabulous Geelong boutique!
50% off new season product!
San Remo is seeking a Merchandiser in the Geelong area with a reliable vehicle to join our sales team. Approx 15-20 hrs per week. FMCG exp preferred.
We are looking for an enthusiastic member to join our team. We would love you to have some retail experience and be interested in health and fitness.
Make a difference in people's lives. Including your own.
Fast, fun and busy environment.
Share your passion, creativity, and original thinking.
We are looking for an extraordinary Customer Service Representative who is confident, self-motivated and bursting with energy to learn and develop!
We are currently seeking a Counter Sales/Store Person to be part of an exciting period for our company.
Basford Brands are seeking and experience Procurement Officer to join their team.
Westside Petroleum is currently seeking enthusiastic, energetic and experienced Service Station Store Managers and Console Operators.
Join the team with an established family owned Geelong company committed to providing the highest standard of service to its customers.
The Reject Shop is booming and we're on the lookout for a Retail Leader to join our team in the Geelong Area. Come on get savvy and apply today!
We have a fantastic opportunity available in our Geelong store for an Assistant Manager on a Maternity leave Contract.
Retail and Sales Assistants - Make a Change Today!
Stop working Retail and move to something that is more lucrative & offers more business development in sales.
Perform diamond presentations, receive accredited training, build own client base, earn uncapped bonuses, attend awards nights with a global company.


Click through the slides for Kevin O'Connor's scouting report of Deyonta Davis' strengths, weaknesses, and his fit on the Celtics after you watch Dalen Cuff and Tim Welsh offer their analysis.
Deyonta Davis had a successful freshman season at Michigan State, averaging 7.5 points in 18.6 minutes per game. But his impact went beyond the box score. His role continuously grew throughout the season as he grew more comfortable at the college level as an athletic rim protector.
Click through the slides for Davis' strengths, weaknesses, and his fit on the Celtics.
Davis is a paint patroller that swats shots into the seats because of his athleticism and long 7-foot-3 wingspan. He's also nimble enough to switch onto other positions, giving him additional versatility.
The Michigan State freshman is reliable on offense, unsurprising for a player learning under Tom Izzo. He doesn't make many mistakes on offense (though his screening must improve) and he's a decent passer. As a scorer he realistically should develop into a rim runner that sets screens and sprints to the rim. He has good hands and shouldn't have issues finishing athletically at the rim.
Davis is a remarkable defensive prospect except for one major flaw: he's a low talker. Rim protectors need to communicate and Davis will be one of the quietest players in the locker room. It's important to signal assignments and rotations, but Davis presently relies on his pure athleticism and not his voice to make an impact.
Despite shooting just 60.5 percent from the free throw line, Davis has solid jumper mechanics. If he makes a minor alteration to his form he could be reliable from mid-range. For what it's worth, Davis claimed at the NBA Combine that he's already extended his range to the NBA three. Don't take his word for it though.
Davis is tremendous fit for the Celtics. Brad Stevens has said numerous times that his preferred style of offense involves four shooters surrounding one rim running big. Davis perfectly fits that description with his ability to finish athletically at the rim. Factor in his reliable passing ability and there's plenty to like about Davis as a role player on offense.
Defensively, the Celtics love to switch screens, which is an attribute Davis could someday have. Jordan Mickey also fits a similar profile, but it doesn't hurt to have another guy on the roster capable of making that type of defensive impact.
Davis will be selected in the mid-late lottery to the late teens. The Celtics are in a good position to draft him if he's on the board with the No. 16 pick. If they don't want to risk losing him, then they could possibly package some picks together to slide into the lottery.


text:
Beim Anschlag von Bali im Jahr 2002 wurden am 12. Oktober in der Stadt Kuta auf der indonesischen Insel Bali 202 Menschen getötet und über 209 zum Teil schwer verletzt. Der islamistisch motivierte Bombenanschlag war der bisher folgenschwerste Akt von Terrorismus in der indonesischen Geschichte. Die Opfer waren mehrheitlich ausländische Touristen, hauptsächlich Australier. Sechs Deutsche und drei Schweizer Staatsangehörige, aber auch 38 Indonesier fanden sich unter den Toten.

Der Anschlag rief weltweit Bestürzung und Empörung hervor und hatte erhebliche Folgen für den Tourismus auf der beliebten Ferieninsel. Hatten zuvor rund 5.000 Touristen Bali täglich besucht, sank diese Zahl nach dem Terroranschlag um bis zu 80 Prozent.

Drei Indonesier wurden für ihre Beteiligung an der Tat zum Tode verurteilt und später hingerichtet. Im Oktober 2002 stand Abu Bakar Bashir, der mutmaßliche Gründer und spirituelle Führer der Terrororganisation Jemaah Islamiyah, vor Gericht, wurde aber erst im März 2005 für schuldig befunden, an dem Anschlag beteiligt gewesen zu sein.

Hintergrund und Hergang

Das hinduistisch geprägte Bali ist wegen seiner geografischen Nähe vor allem bei australischen Touristen beliebt. Surfer vieler Länder schätzen die südliche Küste der Insel zum Indischen Ozean für gute Wellen.

Als Ziel des Anschlages wurden australische Touristen vermutet, die von muslimischen Extremisten stellvertretend für ihr Herkunftsland als Statthalter der USA angesehen wurden. Australien beteiligte sich am Krieg gegen den Terror.

Am Samstag, dem 12. Oktober gegen 23:05 Uhr Ortszeit (15:05 UTC) explodierte in Paddy's Bar eine elektronisch gezündete Bombe, vermutlich in einem Rucksack versteckt. Die Bombe war klein und wirkungsvoll und tötete den Rucksackträger, einen mutmaßlichen Selbstmordattentäter. Die Verletzten flohen aus dem Lokal auf die Straße. Etwa zehn bis fünfzehn Sekunden später fand eine zweite Explosion vor dem Sari Club statt, die durch eine fast 1 t schwere in einem weißen Mitsubishi Van versteckte und mit einer Fernbedienung gezündete Autobombe ausgelöst wurde.

Fast gleichzeitig explodierte eine Bombe vor dem Konsulat der USA in der Inselhauptstadt Denpasar, die aber nur Sachschaden anrichtete. In Kuta bot sich ein Bild der Zerstörung, Verletzte und Tote lagen auf der Straße, Menschen liefen in Panik und Verzweiflung umher. Die Bombe zerstörte Fenster in der ganzen Stadt und hinterließ einen fast anderthalb Meter tiefen Krater im Boden. Das örtliche Krankenhaus war nicht in der Lage, die vielen Verletzten, die meisten mit Brandwunden, zu behandeln. Viele Schwerverletzte flog die australische Luftwaffe nach Darwin und in andere australische Städte aus.

Die endgültige Anzahl der Opfer lag bei 202, mehrheitlich Besucher der beiden Bars. Mehrere hundert Menschen litten an Verbrennungen und anderen Verletzungen. Die größte Gruppe der Opfer mit 88 Personen waren australische Urlauber. Außerdem starben 38 indonesische, 26 britische, 7 amerikanische, 6 deutsche, 5 schwedische, 4 niederländische, 4 französische, 3 schweizerische, 3 dänische und Staatsangehörige anderer westlicher Nationen. Drei Leichen blieben unidentifiziert und wurden im September eingeäschert. Das "Bali bombing" wird manchmal als "Australiens 11. September" gesehen, wegen der hohen Anzahl australischer Todesopfer und Verletzter.

Ermittlungen und Verdächtige

Sofort nach dem Anschlag wurde die islamistische Organisation Jemaah Islamiyah (JI) für die Tat verantwortlich gemacht, der Verbindungen zum Terrornetzwerk Al-Qaida nachgesagt wurden. Die Ermittler vermuteten C4-Plastiksprengstoff als Bombenmaterial, bestätigten aber am 21. Oktober, dass es sich um eine Mischung handelte, die hauptsächlich aus einfach zu beschaffendem Ammoniumnitrat bestand.

Abu Bakar Bashir, ein islamischer Geistlicher und vermutlicher Führer von Jemaah Islamiyah, stritt aber am 12. Oktober auf einer Pressekonferenz jegliche Beteiligung ab. In einigen Aussagen wies er die Schuld am Bau der Bombe den USA zu und behauptete, es wäre für Indonesier nicht möglich, eine solch ausgefeilte Bombe zu bauen.

Aris Munandar (oder Sheik Aris), ein Mitglied von JI mit Verbindungen zu Bashir, soll den Hauptverdächtigen Amrozi bin Nurhasyim bei der Beschaffung des Sprengstoffes und dem Bau der Bomben unterstützt haben. Philippinische Geheimdienste vermuten in ihm den Verbindungsmann zu Mohammad Abdullah Sughayer, einem saudi-arabischen Staatsangehörigen, der verdächtigt wird, die im Süden der Philippinen operierende islamistische Terrorgruppe Abu Sajaf zu finanzieren.

Finanzier des Attentats soll der deutsche Staatsbürger ägyptischer Abstammung Reda Seyam sein. Er wurde nach dem Attentat von der CIA in Indonesien befragt, daraufhin aber vom BKA nach Deutschland überführt, um eine Verbringung in ein Geheimgefängnis zu verhindern.

Die indonesischen Behörden verhafteten im Zuge der Ermittlungen mehrere mutmaßliche Tatbeteiligte, vermuteten aber noch einige in Freiheit. Nach dem Anschlag auf das Marriott-Hotel am 5. August 2003 in der Hauptstadt Jakarta wurden weitere Verdächtige festgenommen, denen eine Beteiligung am Anschlag angelastet wird.

Im März 2010 wurde einer der mutmaßlichen Drahtzieher, der Indonesier Dulmatin, nahe Jakarta bei einer Schießerei mit Sicherheitskräften getötet.

Am 25. Januar 2011 nahmen die pakistanischen Behörden Umar Patek, einen mutmaßlichen Mitorganisator, in Abbottabad fest. Am 11. August wurde er an Indonesien ausgeliefert.

Nach 18 Jahren wurde am 10. Dezember 2020 Aris Sumarsono auf Sumatra festgenommen.

Verurteilungen

Im April 2003 musste sich Abu Bakar Bashir wegen Hochverrats vor einem Gericht verantworten. Es wurde ihm vorgeworfen, er versuche die Regierung zu stürzen und einen islamistischen Staat zu errichten. Die Anklage gegen ihn basierte hauptsächlich auf der Beteiligung an einer Serie von Anschlägen auf Kirchen im Lande während der Weihnachtszeit 2002 und auf versuchten Anschlägen auf westliche Einrichtungen in Singapur. Anfänglich stand er nicht wegen des Anschlags auf Bali vor Gericht, obwohl er als Anstifter der Tat galt. Am 2. September wurde Bashir, der ankündigte, Berufung gegen das Urteil einzulegen, vom Vorwurf des Hochverrats freigesprochen, aber wegen anderer Straftaten zu vier Jahren Gefängnis verurteilt.

Nur Tage später, am 5. August, explodierte eine Autobombe vor dem J. W. Marriott Hotel in Jakarta, tötete 12 Menschen und verletzte 149 Menschen. In der Folge wurde Abu Bakar Bashir am 15. Oktober 2004 erneut verhaftet. Diesmal wurde er auch wegen der Beteiligung am Bombenanschlag am 12. Oktober 2002 auf Bali angeklagt und deswegen zu zweieinhalb Jahren Gefängnis verurteilt.

Am 30. April 2003 eröffnete ein Gericht die Verhandlung gegen Amrozi bin Nurhasyim. Er wurde beschuldigt, den Sprengstoff und den Kleintransporter beschafft zu haben. Das Gericht verurteilte Amrozi am 8. August zum Tode. Ohne Reue und mit Fröhlichkeit nahm er das Urteil entgegen. Die Todesstrafe erhielten ebenfalls sein älterer Bruder Ali Ghufron (auch Mukhlas) am 1. Oktober sowie der 33-jährige Computerexperte Imam Samudra am 10. September. Amrozis jüngerer Bruder Ali Imron, ein Lehrer, der Reue gezeigt hatte, wurde am 18. September für seine Beteiligung zu einer lebenslangen Haftstrafe verurteilt.

Die Verurteilten gaben an, unabhängig gehandelt zu haben, wurden jedoch der radikal-islamistischen Organisation Jemaah Islamiyah zugeordnet. Amerikanische Terrorexperten unterstellen dieser Organisation eine Zusammenarbeit mit dem Al-Qaida-Netzwerk und dass die autonom arbeitende Gruppe auch in den Nachbarstaaten terroristisch aktiv sein soll.

Der vermutliche Bombenbauer, der Malaysier Azahari bin Husin, starb im November 2005, als er sich in einem Haus auf der Insel Java selbst in die Luft sprengte, nachdem die Polizei sein Haus umstellt hatte. Amrozi, Ghufron und Samudra wurden am 9. November 2008 auf der Gefängnisinsel Nusakambangan hingerichtet.

Im Juni 2012 wurde Umar Patek wegen Beihilfe zu den Anschlägen von Bali von einem Distriktgericht in Jakarta zu einer Haftstrafe von 20 Jahren verurteilt. Ebenfalls verurteilt wurde er wegen Beihilfe an Bombenanschlägen auf Kirchen in Jakarta an Weihnachten 2000, bei denen 19 Menschen ums Leben gekommen waren. Das Gericht sah es nach einem strafmildernden Geständnis als erwiesen an, dass Patek die Bomben für die Anschläge zusammengebaut hatte.

Siehe auch

 Anschlag auf das Marriott Hotel in Jakarta
 Terroranschlag auf die australische Botschaft in Jakarta
 Anschlag von Bali 2005
 Anschläge in Jakarta am 14. Januar 2016

Weblinks

 BBC Überblick
 Verurteilung und Reaktionen

Einzelnachweise

Bali
Bali
Kuta
Bali
Kriminalfall 2002
Politik 2002
Australisch-indonesische Beziehungen
Geschichte (Bali)

redpajama_set_name: RedPajamaWikipedia


This course offers fundamentals of Italian pronunciation, vocabulary, and grammar. You will learn the basics of Italian and receive a great introduction to Italian culture. This course assumes no prior exposure to the Italian language.


text:
The Films of Doris Day
The Cutest Blonde
Box Office/Awards
Although Sinatra had won an Academy Award,
it was Doris Day who received top billing
The thought of joining Doris Day and Frank Sinatra wasn't a new idea. They had worked together on radio's Your Hit Parade in the late 1940s, during Miss Day's success as a band singer. In 1954, Sinatra was teamed with Doris Day for the remake of an old James Garfield, Priscilla Lane film, Four Daughters which had been very popular when it was released in 1938. This time around it was renamed Young at Heart, and there were only three daughters, Doris Day, Dorothy Malone and Elisabeth Fraser.
Even though Sinatra had won the Academy Award the year before in From Here to Eternity and had a hit record with Young at Heart, it was Doris Day who received top billing over him. The picture was released during the 1954 Christmas season and was very popular. Miss Day enjoyed a chart hit, Ready, Willing and Able and the film became the favorite of millions and regularly shown during the Christmas holidays.
Robert Keith with daughters, Doris Day, Dorothy Malone and Elisabeth Fraser, with Ethel Barrymore as his sister.
The story is about the lives of a musical family who live in a small Connecticut town. Widower, Gregory Tuttle (Robert Keith) lives with his three daughters and his sister, Aunt Jessie, played by the legendary Ethel Barrymore. It seems to be a perfect way of life where people get married, have children, go to church and care for their grandparents when they get old.
Gig Young plays Alex Burke, a Broadway songwriter whose father went to college with Tuttle (Keith).
Into the lives of this family comes a handsome bachelor, Alex Burke (Gig Young), a Broadway songwriter whose father attended college with Tuttle. He's in town to deliver a letter to the Foundation for which Tuttle is Dean of Faculty and is invited to reside at the Tuttle house to work on his music. Burke is brash and opinionated but fascinating to the three sisters, all of whom develop a crush on him on sight.
Frank Sinatra (Barney Sloan) meets Ethel Barrymore (Aunt Jessie).
Burke summons a troubled, but brilliant pianist he knows from New York to assist him with musical arrangements for his score when he hits a creative brick wall. Barney Sloan (Sinatra), a down-and-out singer, piano player, arrives at the Tuttle home, arrogant, with a chip on his shoulder. First, he meets Aunt Jessie, who scrutinizes him, making him aware that he is not the unfeeling character he pretends and that she is wise to his masquerade.
The first scene between Frank and Doris is memorable. He is sitting at the piano in her living room, arranging Burke's score when she enters, fascinated by his artistry. He glances up at her briefly and continues playing. When they finally talk, she discovers he's cynical and self-doubting and feels the world is against him. The chemistry is unusual between the two stars; they are such opposites here – she's upbeat and friendly and he's withdrawn and aloof.
Doris Day first meets Frank Sinatra playing the piano in her front room.
Laurie falls in love with Alex, as do her two sisters. Dorothy Malone (Fran) is engaged to be married to Robert (Alan Hale, Jr.) and Amy (Fraser) has fallen for a likable plumber (Lonny Chapman), but both are smitten with their sister's beau, Alex, who pops the question to Laurie during her father's birthday bash. This announcement, of course, comes as a blow to the sisters and to Barney, who has secretly fallen in love with the gorgeous Laurie. What struck me, looking at this film again, was how old the sisters looked and to wonder why they were still living at home with their father and their aunt who ordered them up to bed!
Barney plays in a local nightclub to supplement his income.
Meanwhile, Alex has arranged for Barney to play at a local nightclub to supplement his income while in town. This gives Sinatra the opportunity to sing some wonderful old standards like One For My Baby by Harold Arlen and Johnny Mercer, Just One of Those Things (Cole Porter) and Someone to Watch Over Me by George and Ira Gershwin. The newer songs were reserved for Miss Day, who performed them flawlessly.
Day and Sinatra were wonderful in their scenes together. As usual, Gig Young was a delight to watch. Most viewers will wonder how Doris could leave him for Sinatra, so what if her sisters had the shakes for him? He was charming. The singing was wonderful. Doris Day, of course, one of the finest chanteuses in the world had no problem with these lovely songs. She sounded perfectly angelic while singing Till My Love Comes to Me by Paul Francis Webster, Hold Me in Your Arms by Ray Heindorf, Charles Henderson and Don Pippin, There's A Rising Moon for Every Fallen Star by Paul Francis Webster and Sammy Fain, and with Sinatra, You, My Love, by Mack Gordon and James Van Heusen. Piano solos for Sinatra were played by Andre Previn.
This film is a far cry from what is produced today. Everybody in the picture looked perfect. The actors went to bed in full make-up. Even the snow was perfect. But, even with those flaws, this is very enjoyable family entertainment. It helped solidify Miss Day's standing in Hollywood as reliably good family fare, and set the tone for her next picture, MGM's dramatic, Love Me or Leave Me. The direction by Gordon Douglas was perfect for the material and the cinematography by Ted McCord was just right.
Ralph McKnight, New York
Doris Day enjoyed working again with Frank Sinatra during this film. They had previously worked together in the Your Hit Parade radio show, a weekly pop hits musical revue. Doris had not liked working in that type of radio format. When they were reunited for this film they had an amicable experience.
However, there is a lack of rapport between Day and Sinatra in the film itself. They seem to be acting in a different film. The script gives them no real love scenes together. They talk a great deal about how much they mean to each other, but they never touch, never kiss, never embrace." – George Morris, Doris Day
Sugar & Spice: Day & Sinatra
"Doris Day and Frank Sinatra, names to be reckoned with in several industries as well as motion pictures, team up here in a sentimental drama-with-music-tears-and-laughter that would seem to be box office gold in all situations. Starting with its title, the name of a song identified with Sinatra's decisive and deserved comeback, the film has as many built-in exploitation features as the law of diminishing returns allows.
Included among these features is, naturally, the carefully calculated freshness and charm of Miss Day, whether she's belting out a solid number called Ready, Willing and Able, or brushing away an ill-concealed tear of heartbreak.
There too is Sinatra's fine performance as a tough-talking, talent-loaded pianist, as well as his singing of the title tune and such oldies as Someone to Watch Over Me, Just One of Those Things and One For the Road, in the proper smoky bar-type atmosphere. For dividends, there's a marvelously nonchalant performance by Ethel Barrymore, and always ingratiating ones by Gig Young, Dorothy Malone, and Elizabeth Fraser."- Motion Picture Herald
Young at Heart, 1954, Doris Day and Frank Sinatra
"Songs from the soundtrack were released as an album by Frank Sinatra and Doris Day, also titled Young at Heart. The album peaked at #11 on Billboard while the single reached #2 and was considered as Sinatra's comeback single after several years away from the top of the pop singles chart. So popular was the song Young at Heart that the film was also titled Young at Heart, having had no title until the song's success. The song's popularity led to it being used not only for the title but also for music over the opening and closing credits.
Frank Sinatra's persona in the film Young at Heart helped somewhat cultivate the image of the romantic loner that was often personified in the singer's albums. Sinatra's outstanding musical solo-pieces alone at a piano with a shot glass, tilted hat and dangling cigarette, helped establish an oft-identified image with the singer/actor." – Wikipedia
Film director Terence Davies, pays tribute to Young At Heart at the BFI London.
British Director and huge Doris Day fan, Terence Davies, introduces a screening of Young At Heart at the BFI (British Film Institute) with a loving tribute to the 1954 Doris Day/Frank Sinatra musical. Recalling the experience of seeing Doris in the film for the first time, Davies also lovingly pinpoints some of the technical and performance decisions featured in the film to emphasize the deceptively masterful craftsmanship of a work too often dismissed as mere sentimentality.
Doris Day Films @ Amazon USA Doris Day Films @ Amazon UK
Romance on the High Seas (1948)
My Dream is Yours (1949)
It's a Great Feeling (1949)
Young Man With A Horn (1950)
Tea For Two (1950)
The West Point Story (1950)
Storm Warning (1951)
Lullaby of Broadway (1951)
On Moonlight Bay (1951)
I'll See You in my Dreams (1951)
Starlift (1951)
The Winning Team (1952)
April in Paris (1952)
By the Light of the Silvery Moon (1953)
Lucky Me (1954)
Young at Heart (1954)
Love Me or Leave Me (1955)
The Man Who Knew Too Much (1956)
Julie (1956)
The Pajama Game (1957)
The Tunnel of Love (1958)
Teacher's Pet (1958)
It Happened to Jane (1959)
Pillow Talk (1959)
Please Don't Eat the Daisies (1960)
Midnight Lace (1960)
Lover Come Back (1961)
That Touch of Mink (1962)
Billy Rose's Jumbo (1962)
The Thrill of It All (1963)
Move Over Darling (1963)
Send Me No Flowers (1964)
The Glass Bottom Boat (1966)
Caprice (1967)
The Ballad of Josie (1968)
Where Were You When the Lights Went Out? (1968)
With Six You Get Eggroll (1968)
Doris Day: The Untold Story of the Girl Next Door by David Kaufman
Day & MacRae Double
AUDIBLE: Get TWO Free Audiobooks
© The Films of Doris Day


text:
Q: Erasing string from vector gives segmentation error I am trying to remove a string from the vector if the string is equal to the original word provided so the output does not count the inputed word as an anagram of it self (if that makes sense)
for (std::vector<std::string>::const_iterator word = anagrams.begin();
       word != anagrams.end(); ++word) {
    if (*word != originalstring) {
      ++totalNumber;
      // std::cout << *i;
    } else {
      anagrams.erase(word);
    }
  }

really unsure why I am getting this error as it should be erasing the original word but I get the segmentation error :/

A:
std::vector::erase
Invalidates iterators and references at or after the point of the erase, including the end() iterator.
Return value
  Iterator following the last removed element. If the iterator pos
  refers to the last element, the end() iterator is returned.

You need to alter your iterator increment just slightly to account for the iterator being invalidated after you erase.
for (std::vector<std::string>::const_iterator word = anagrams.begin();
       word != anagrams.end();) {
    if (*word != originalstring) {
      ++totalNumber;
      ++word;
      // std::cout << *i;
    } else {
      word = anagrams.erase(word);
    }
  }

As pointed out by by tkasul, using the std algorithms here would certainly be a cleaner solution:
anagrams.erase(std::remove(anagrams.begin(), anagrams.end(), originalstring), anagrams.end());
totalNumber = anagrams.size();

redpajama_set_name: RedPajamaStackExchange