text:
Link Wray – Link Wray
Link Wray – Link Wray Polydor PD-24-4064 (1971)
It is often the case that musical innovators languish in obscurity, or something close to it. In rock, there are examples all over, like The Velvet Underground. Link Wray is another. He is best known for his raw 1958 instrumental classic "Rumble," which paved the way for The Kinks's "You Really Got Me," Pete Townshend's monster guitar power riffing with The Who, and much of the surf-rock genre. But commercial success didn't really come his way. "Rumble" was something of a flash in the pan hit, but after recording a whole album of prime material, his clean-cut label dropped him without releasing his recordings — a story that might have been quite different if Wray had somehow found his way to the attention of Sun Records. He bounced to a few other labels, but the momentum from "Rumble" was largely lost and soon the moment had passed to other sounds. He became something of a footnote in rock history: the guy who added raw, improvised (as in makeshift) distortion to rock guitar.
If all you know of Link Wray is "Rumble," or some excellent if now little-known follow-up instrumentals like "Raw-Hide," "Jack the Ripper" and "Fat Back," or even his later career efforts like Barbed Wire that modernized his original sound without losing the raw energy, Link Wray might be a surprise. It sounds nothing like Wray's signature early instrumental rock. This is music that bears more resemblances to the country rock of The Basement Tapes by Bob Dylan & The Band crossed with the swampy southern rock of Creedence Clearwater Revival or Dr. John, but with searching, moody and almost existential songwriting of the kind that showed up later in the decade on Dennis Wilson's cult classic Pacific Ocean Blue. Link Wray is the blueprint for The Rolling Stones's Exile on Main St. Wray's soulful vocals recall Felix Cavaliere of The Rascals. That is no small feat. Link Wray's early recordings were instrumentals for a reason: he had his left lung removed after contracting tuberculosis (consumption) during military service in the Korean War.
By the dawn of the 1970s the center of gravity for rock — and by extension all pop music — was shifting away from New York City and Britain toward California. West Coast studios were ahead of their Eastern peers in adopting more elaborate recording technologies and techniques. The very sound of rock music was also growing more complex and intricate, with symphonic rock, rock operas, glam and prog gaining steam. Even just within the realm of singer-songwriters, the more overtly produced and orchestrated styles of the likes of Elton John and Randy Newman were overtaking the simpler, mostly acoustic folk of popular 60s performers epitomized by Joan Baez. Amidst all that Link Wray was yet again cutting against the grain of the industry establishment. He set up his own three-track studio in a converted chicken coop on his family's farm in Accokeek, Maryland. In that setting he experimented with his own sound in relative seclusion (as with The Basement Tapes). He recorded this in that primitive fashion. The album is no joke. It exudes complete honesty, even to the point of being somewhat blunt and ungainly at times. But Wray's lethargic guitar sounds just fine in a georgic setting far removed from his characteristic power chords. Muffled piano and vocal choruses bolster the hopeful messages nestled in the murky, indistinct sound. Link Wray is a little beauty that deserves another look, hopefully someday to be rescued from the obscure and dusty corners of early 70s rock.
Author Syd FabloPosted on August 13, 2014 October 11, 2016 Categories Music, ReviewsTags Link Wray, Rock
Previous Previous post: Johnny Cash – The Rambler
Next Next post: Dan O'Sullivan – Money In the Bank


text:
Until Midnight – II
On the drive home Ellie focused only on the road ahead of her. It was quiet in the car, and there were rules here – signs, lights, signals and limits – all predictable cause and effect. She wrapped herself in their security as she found her way to the house Lily and her brother shared.
Lily hesitated before getting out. "Ellie, you okay?"
"Liar," she said. Ellie turned to look at her, confused by her smile. Of course, Lily was right – Ellie wasn't okay. She was devastated by the news that her Friday nights would never be the same. She was still actively trying to ignore her best friend's pregnancy, a pregnancy which was due to end in three weeks time ushering in a new, terrifying era. And she was frustrated with herself and her inability to take any of these things in stride.
After a moment of contemplative silence, Lily spoke again. "Ellie, a lot of things are changing and it's okay to be upset. I'm upset too. I know it might be different for you but you can still tell me how you feel."
Ellie didn't answer, just rocked and tapped at the steering wheel repetitively. The overhead light was too bright, and the purr of the engine seemed more like a threatening roar.
"What if we do something special for next Friday? We can go shopping, pick something fancy to wear. I'll do your make up and hair. It will be a little different, but at the end of the night we'll dance like we've never danced before. Me and you."
Ellie didn't answer right away, focusing only on releasing the painful tension rising within her. Her head nodded over and over and finally her words returned, "Yes. Okay. Me and you. That's good."
Lily went into labour on Tuesday, more than two weeks early, and gave birth to a healthy baby girl on Wednesday morning. Ellie's eldest brother, Ben, called to tell her the good news.
"But she's not due yet," Ellie protested.
"Babies don't always come when they're due," Ben laughed. Ellie didn't understand what was funny. What was humorous about something so unpredictable?
"But we had plans. It's not time yet," Ellie knew she should take a moment to think about her answers, to acknowledge the growing disorientation and fear, but she wasn't prepared.
Ben wished his sister shared his excitement, but he also felt guilty for calling her so suddenly. He wanted to tell Ellie that she was being selfish, but he knew he was the one who had acted without taking her feelings, her needs, into consideration. "I'm sorry Ellie. Lily feels bad that she can't make it this weekend. She really wants you to meet Louise."
"Our daughter. But we want you to take your time. You can let us know when you're ready. Is Matthew there?"
Ellie found Matthew in the kitchen and gave him her phone before retreating back into the bedroom, shutting the door behind her and turning off the lights. She rocked back and forth on her bed, plugging her ears. The room was pressing in on her, crushing her. Or maybe she was becoming too big for the room, her skin pressed up painfully against the walls.
At work the next day she found herself succumbing to old ticks and habits. Walking on tip toe, feeling the grain of the wallpaper as she visited a co-worker's office. When she noticed she became insecure, remembering a time when she had been teased by people she had called her friends and classmates. A time when she felt defined by her unique, multisensory perception of the world. It made her even more tense and irritable.
That night she shut herself in her room, unable to handle more than the small, private space. She turned the lights off and she lay on the bed, stroking the silky cover of her pillow. She focused on that sensation, the way it seemed to reverberate through her fingertips and up through her arm.
A small voice broke her reverie.
"Ah sweetie, who's that 'a broke yer poor heart?"
Ellie wanted to shout for Matthew, but he was still at work. Her eyes searched the near darkness until she found a figure on the floor not a foot from where she lay on the bed. It could only have been a mere five inches high.
"Are you a sprite? Or a brownie?" Ellie asked it, watching for any sign that it was coming closer.
"Sprites, bah! I ain't no brownie, neither. Hairy pushovers. I'm a Hob. YerMother's me name," the voice was harsh despite being so diminutive.
"Mother?"
"YerMother," the Hob corrected.
Ellie risked sitting up a little, trying to get a better view of the small man. He had a scraggly beard that was dark, though Ellie couldn't have identified the exact shade in the lighting. His face was altogether too broad to be human, and his eyes too large and slanted. At times they seemed reflective, like a cat's, lending him an almost sinister appearance that made Ellie shrink back into the covers. His ears were elf-like she supposed, which was to say they were far too long and pointed to be human, though they were thin and ragged at the ends like bat wings. There were two small, twisty horns emerging from the mess of dark curls on his head.
Altogether he looked nothing like any of the charming creatures in the book of fairy tales her mother had read to her as a child.
"Why are you here?" she asked, hoping Matthew would be home early.
"Why ta help ya, a'course! Least I could do after them tasty morsels ya been leavin' me of late," he rubbed his belly which was almost, but not quite, as broad as his head, "So what's got yer so down? Is it a boy? 'Cause I'm mighty good fer payin' him back."
"What? No. No," she paused, taking the time to organize her words, her emotions, into something she thought another person (if he could be considered that) would understand, "There's a ball, tomorrow night. It's very special to me but… but my friend can't come. And we were supposed to get dresses and makeup but now…"
Saying it out loud dredged up the frustration and she began heaving with sighs, fat tears rolling down her cheeks.
"Aw. That's mighty sad, that is. Can't ya go just the one of ya? Go buy a perdy dress and pay someone ta spruce up them curly locks?"
Ellie was shaking her head vehemently before his last words were out, "No, no, no. Go to the mall, alone? Letting strangers poke and prod and… no. I can't."
The hob thought for a time while Ellie continued to shake her head. "Hmm… well there's only one thing for it then. YerMother'll have ta fix ya up right and good. You'll be off ta the ball tomorrow and pretty as a pixie."
"My mother is dead," Ellie said, "How can she help?"
"No, that that mother. YerMother. You can count on me, that you can."
Just then she heard a lock turn and the apartment door open. Matthew. In that moment her eyes had flickered from the hob to her bedroom door and when she looked back, he was gone.
She didn't know what to make of the small creature's claims – they were just another strange detail in a slew of mind-boggling events. At least his appearance had given her something to think about aside from the gaping hole that awaited her tomorrow night.
Work went relatively smoothly on Friday and the absence of her typical evening routine went unnoticed until she arrived at home. When she walked in the door it occurred to her that she didn't know what she should do next. Usually she would call Lily and start getting changed. Then they would go for dinner and to the Palace. Instead, she lingered in the doorway, frozen by the multitude of choices before her, none of them what she really wanted. What her brain told her she should expect.
Eventually she breathed, imagining her bedroom as a beacon – one destination, one step before she had to think about the next. When she opened the door, her uncertainty was shattered by what lay on the bed.
There was an elegant, silver silk dress. She crept forward, picking it up to investigate. Her hands shook a little, and she moved it gently as if she thought it might melt at her touch. Its neckline was high and ornamented with black lace that extended far down the back. The sleeves were long, ending in more lace. The back cascaded down, longer than the front and ending in what could almost be considered a train.
A glimmer drew Ellie's eye back to the bed. On the pillow rested a dainty gold tiara with tiny crystals entwined in the shining filigree swirls. She was entranced by the way the light reflected off of their many facets, new colours bursting to life every time she moved her head. And beside it were a pair of gold pumps decorated with the same crystals that adorned the tiara. Ellie regarded the tall heels with a large amount of scepticism.
"Silver and gold! Silver and gold!" a small voice sang before breaking into hearty laughter. The hob climbed up over the far edge of the bed, his face showing deep wrinkles in the daylight. His hair and beard were a rusty brown. "Told ya I be takin' care of ya! Got good taste I does."
"These are for me?" she asked, indulging in the silky feeling of the dress's fabric over her fingers.
"A'course they is. Can't do much 'bout yer hair and makeup… but I figured ya wouldn't need it being so perdy and all." He winked.
"I can go to the ball?" Ellie asked, as if begging permission.
"Ya can go," he nodded, his crooked and toothy grin ruining the solemnity of his tone.
"But…" Ellie set the dress down on the bed, "I can't go by myself."
"Sure ya can!"
"No. I mean, what if… it's so loud and…" she began shaking her head wildly again. She reached for the dress once more, taking comfort in its softness against her skin.
"So bring that big dolt of a brother ya got."
Ellie thought about that. She supposed she could at least ask. "Thank you."
She looked back to the bed, but he had vanished once more.
Matthew agreed to go to the Palace for the evening. He was reluctant, but Ellie didn't care. All that mattered was that he had said yes.
<— Back to Part I
Continue to Part III —>

redpajama_set_name: RedPajamaCommonCrawl


text:
/*
See https://github.com/glycerine/tmframe for the specification of the TMFRAME
format which we implement here.
*/
package tm

import (
	"bytes"
	"encoding/binary"
	"fmt"

	//needs CGO: "github.com/codahale/blake2"
	// pure Go:
	"github.com/glycerine/blake2b" // vendor https://github.com/dchest/blake2b

	"github.com/tinylib/msgp/msgp"
	"math"
	"time"
)

// PTI is the Payload Type Indicator. It is the low 3-bits
// of the Primary word in a TMFRAME message.
type PTI byte

const (
	PtiZero       PTI = 0
	PtiOneInt64   PTI = 1
	PtiOneFloat64 PTI = 2
	PtiTwo64      PTI = 3
	PtiNull       PTI = 4
	PtiNA         PTI = 5
	PtiNaN        PTI = 6
	PtiUDE        PTI = 7
)

// The Evtnum is the message type when pti = PtiUDE and
// UDE descriptors are in use for describing TMFRAME
// message longer than just the one Primary word.
type Evtnum int32

const (
	EvErr Evtnum = -1

	// 0-7 deliberately match the PTI to make the
	// API easier to use. Callers to NewFrame need
	// only specify an Evtnum, and the framing code
	// sets PTI and EVTNUM correctly.
	EvZero       Evtnum = 0
	EvOneInt64   Evtnum = 1
	EvOneFloat64 Evtnum = 2
	EvTwo64      Evtnum = 3
	EvNull       Evtnum = 4
	EvNA         Evtnum = 5
	EvNaN        Evtnum = 6
	EvUDE        Evtnum = 7

	EvHeader    Evtnum = 8
	EvMsgpack   Evtnum = 9
	EvBinc      Evtnum = 10
	EvCapnp     Evtnum = 11
	EvZygo      Evtnum = 12
	EvUtf8      Evtnum = 13
	EvJson      Evtnum = 14
	EvMsgpKafka Evtnum = 15
	EvZebraPack Evtnum = 16
)

// Frame holds a fully parsed TMFRAME message.
type Frame struct {
	Prim int64 // the primary word
	//Tm()  int64 // returns low 3 bits all zeros, nanoseconds since unix epoch.
	//GetPTI() PTI   // returns low 3 bits of the primary word

	V0 float64 // primary float64 value, for EvOneFloat64 and EvTwo64

	// Ude alternatively represents V1 for EvTwo64 and EvOneInt64
	// GetV1() to access as V1.
	Ude int64 // the User-Defined-Encoding word

	// break down the Ude:
	//GetEvtnum() Evtnum
	//GetUlen()  int64

	Data []byte // the variable length payload after the UDE
}

// Tm extracts and returns the Prim timestamp from the frame (this is a UnixNano nanosecond timestamp, with the low 3 bits zeroed).
func (f *Frame) Tm() int64 {
	return f.Prim &^ 7
}

// TmTime extracts and returns the Prim timestamp from
// the frame (this is a UnixNano nanosecond timestamp,
// with the low 3 bits zeroed), then converts it to
// a UTC timezone time.Time
func (f *Frame) TmTime() time.Time {
	return time.Unix(0, f.Prim&^7).UTC()
}

// SetTm set the Prim timestamp from t. It zeros the first 3 bits of t before
// storing it, and preserves the PTI already in the primary word.
func (f *Frame) SetTm(t int64) {
	f.Prim = (t &^ 7) | f.Prim&7
}

// convert from a time.Time to a frame.Tm() comparable timestamp
func TimeToPrimTm(t time.Time) int64 {
	return t.UnixNano() &^ 7
}

// convert from a UnixNano timestamp (int64 number of nanoseconds) to a frame.Tm() comparable timestamp
func IntToPrimTm(t int64) int64 {
	return t &^ 7
}

func (f *Frame) GetPTI() PTI {
	return PTI(f.Prim & 7)
}

func (f *Frame) GetUDE() int64 {
	return f.Ude
}

func (f *Frame) GetUlen() int64 {
	if f.GetPTI() != PtiUDE || len(f.Data) == 0 {
		return 0
	}
	return int64(len(f.Data)) + 1 // +1 for the zero termination that only goes on the wire
}

func (f *Frame) GetEvtnum() Evtnum {
	pti := f.GetPTI()
	evnum := Evtnum(pti)
	if pti != PtiUDE {
		return evnum
	}
	evnum = Evtnum(f.Ude >> 43)
	return evnum
}

func (f *Frame) GetV0() float64 {
	pti := f.GetPTI()
	switch pti {
	case PtiZero:
		return 0
	case PtiOneInt64:
		return 0
	case PtiOneFloat64:
		return f.V0
	case PtiTwo64:
		return f.V0
	}
	return MyNaN
}

// GetV1 retrieves the V1 value if the frame
// is of type PtiTwo64. Otherwise it returns 0.
func (f *Frame) GetV1() int64 {
	if f.GetPTI() == PtiTwo64 {
		return f.Ude
	}
	return 0
}

// SetV1 sets the Frames V1 value if the frame is
// of type PtiTwo64. Otherwise it is a no-op.
func (f *Frame) SetV1(v1 int64) {
	if f.GetPTI() == PtiTwo64 {
		f.Ude = v1
	}
}

// MyNaN provides the IEEE-754 floating point NaN value
// without having to make a call each time to math.NaN().
var MyNaN float64

func init() {
	MyNaN = math.NaN()
}

// NumBytes returns the number of bytes that the
// serialized Frame will consume on the wire. The
// count will be at least 8 bytes, and at most
// 16 + 2^43 bytes (which is 16 bytes + 8TB).
func (f *Frame) NumBytes() int64 {
	n := int64(8)
	pti := f.GetPTI()
	switch pti {
	case PtiZero:
		n = 8
	case PtiOneInt64:
		n = 16
	case PtiOneFloat64:
		n = 16
	case PtiTwo64:
		n = 24
	case PtiNull:
		n = 8
	case PtiNA:
		n = 8
	case PtiNaN:
		n = 8
	case PtiUDE:
		n = 16
		if len(f.Data) > 0 {
			n += int64(len(f.Data)) + 1 // +1 for the zero termination that only goes on the wire
		}
	default:
		panic(fmt.Sprintf("unrecog pti: %v", pti))
	}
	return n
}

// Marshal serialized the Frame into bytes. We'll
// reuse the space pointed to by buf if there is
// sufficient space in it. We return the bytes
// that we wrote, plus any error.
func (f *Frame) Marshal(buf []byte) ([]byte, error) {
	n := f.NumBytes()

	var m []byte
	if int64(len(buf)) >= n {
		m = buf[:n]
	} else {
		m = make([]byte, n)
	}
	binary.LittleEndian.PutUint64(m[:8], uint64(f.Prim))
	if n == 8 {
		return m, nil
	}
	pti := f.GetPTI()
	switch pti {
	case PtiOneInt64:
		binary.LittleEndian.PutUint64(m[8:16], uint64(f.Ude))
	case PtiOneFloat64:
		binary.LittleEndian.PutUint64(m[8:16], math.Float64bits(f.V0))
	case PtiTwo64:
		binary.LittleEndian.PutUint64(m[8:16], math.Float64bits(f.V0))
		binary.LittleEndian.PutUint64(m[16:24], uint64(f.Ude))
	case PtiUDE:
		binary.LittleEndian.PutUint64(m[8:16], uint64(f.Ude))
		if n == 16 {
			return m, nil
		}
		copy(m[16:], f.Data)
		m[n-1] = 0
	}

	return m, nil
}

// TooShortErr is returned by Frame.Unmarshal() when the
// by bytes are supplied are insufficient for the encoded
// EVTNUM or UCOUNT.
var TooShortErr = fmt.Errorf("data supplied is too short to represent a TMFRAME frame")

// Unmarshal overwrites f with the restored value of the TMFRAME found
// in the by []byte data. If copyData is true, we'll make a copy of
// the underlying data into the frame f.Data; otherwise we merely point
// to it. NB If the underlying buffer by is recycled/changes, and you
// want to keep around multiple frames, you should use copyData = true.
func (f *Frame) Unmarshal(by []byte, copyData bool) (rest []byte, err error) {
	// zero it all
	f.V0 = 0
	f.Ude = 0
	f.Data = []byte{}

	n := int64(len(by))
	if n < 8 {
		return by, TooShortErr
	}
	prim := binary.LittleEndian.Uint64(by[:8])
	pti := PTI(prim % 8)

	f.Prim = int64(prim)

	switch pti {
	case PtiZero:
		f.V0 = 0.0
		return by[8:], nil
	case PtiOneInt64:
		f.Ude = int64(binary.LittleEndian.Uint64(by[8:16]))
		return by[16:], nil
	case PtiOneFloat64:
		if n < 16 {
			return by, TooShortErr
		}
		f.V0 = math.Float64frombits(binary.LittleEndian.Uint64(by[8:16]))
		return by[16:], nil
	case PtiTwo64:
		if n < 24 {
			return by, TooShortErr
		}
		f.V0 = math.Float64frombits(binary.LittleEndian.Uint64(by[8:16]))
		f.Ude = int64(binary.LittleEndian.Uint64(by[16:24]))
		return by[24:], nil
	case PtiNull:
		return by[8:], nil
	case PtiNA:
		return by[8:], nil
	case PtiNaN:
		// don't actually do this, as it make reflect.DeepEquals not work (of course): f.V0 = MyNaN
		return by[8:], nil
	case PtiUDE:
		ude := binary.LittleEndian.Uint64(by[8:16])
		f.Ude = int64(ude)
		ucount := ude & KeepLow43Bits
		ulen := int64(ucount)
		if n < 16+ulen {
			return by, TooShortErr
		}
		if ulen > 0 {
			f.Data = by[16 : 16+ucount-1] // -1 because the zero terminating byte only goes on the wire
			if copyData {
				cp := make([]byte, len(f.Data))
				copy(cp, f.Data)
				f.Data = cp
			}
		}
		return by[16+ucount:], nil
	default:
		panic(fmt.Sprintf("unrecog pti: %v", pti))
	}
	// panic("should never get here")
}

// KeepLow43Bits allows one to mask off a UDE and discover
// the UCOUNT in the lower 43 bits quickly.
// For example: ucount := ude & KeepLow43Bits
//
const KeepLow43Bits uint64 = 0x000007FFFFFFFFFF

// NoDataAllowedErr is returned from NewFrame() when the
// data argument is supplied but not conveyed in that
// evtnum specified.
var NoDataAllowedErr = fmt.Errorf("data must be empty for this evtnum")

// DataTooBigErr is returned from NewFrame() if the
// user tries to submit more than 2^43 -1 bytes of data.
var DataTooBigErr = fmt.Errorf("data cannot be over 8TB - 1 byte")

// EvtnumOutOfRangeErr is retuned from NewFrame() when
// the evtnum is out of the allowed range.
var EvtnumOutOfRangeErr = fmt.Errorf("evtnum out of range. min allowed is -1048576, max is 1048575")

// Validate our acceptable range of evtnum.
// The min allowed is -1048576, max allowed is 1048575
func ValidEvtnum(evtnum Evtnum) bool {
	if evtnum > 1048575 || evtnum < -1048576 {
		return false
	}
	return true
}

// NewFrame creates a new TMFRAME message, ready to have Marshal called on
// for serialization into bytes. It will not make an internal copy of data.
// When copied on to the wire with Marshal(), a zero byte will be added
// to the data to make interop with C bindings easier; hence the UCOUNT will
// always include in its count this terminating zero byte if len(data) > 0.
//
func NewFrame(tm time.Time, evtnum Evtnum, v0 float64, v1 int64, data []byte) (*Frame, error) {

	if !ValidEvtnum(evtnum) {
		return nil, EvtnumOutOfRangeErr
	}

	if int64(len(data)) > (1<<43)-1 {
		return nil, DataTooBigErr
	}

	// sanity check that data is empty when it should be
	if len(data) > 0 {
		if evtnum >= 0 && evtnum < 7 {
			return nil, NoDataAllowedErr
		}
	}

	utm := tm.UnixNano()
	mod := utm - (utm % 8)

	en := uint64(evtnum % (1 << 21))
	q("en = %v", en)
	q("pre shift en = %b", en)
	en = en << 43
	q("post shift en = %b", en)
	q("len(data) = %v", len(data))
	q("len(data) = %b", len(data))
	var ude uint64
	if len(data) > 0 {
		// the +1 is so we zero-terminate strings -- for C bindings
		ude = uint64(len(data)+1) | en
	} else {
		ude = en
	}
	q("ude = %b", ude)

	var useData []byte
	var myUDE uint64
	//var myUlen int64

	var pti PTI
	switch evtnum {
	case EvZero:
		pti = PtiZero
	case EvOneInt64:
		pti = PtiOneInt64
	case EvOneFloat64:
		pti = PtiOneFloat64
	case EvTwo64:
		pti = PtiTwo64
	case EvNull:
		pti = PtiNull
	case EvNA:
		pti = PtiNA
	case EvNaN:
		pti = PtiNaN
	default:
		// includes case EvUDE and EvErr
		pti = PtiUDE
		useData = data
		myUDE = ude
	}

	f := &Frame{
		Prim: mod | int64(pti),
		Ude:  int64(myUDE),
		Data: useData,
	}

	// set f.V0 and v.V1
	switch evtnum {
	case EvZero:
		f.V0 = 0.0
	case EvOneInt64:
		f.Ude = v1
	case EvOneFloat64:
		f.V0 = v0
	case EvTwo64:
		f.V0 = v0
		f.Ude = v1
	}

	q("f = %#v", f)
	return f, nil
}

// String pretty prints the names of the events into a string.
func (e Evtnum) String() string {
	switch e {
	case EvErr:
		return "EvErr"
	case EvZero:
		return "EvZero"
	case EvOneInt64:
		return "EvOneInt64"
	case EvOneFloat64:
		return "EvOneFloat64"
	case EvTwo64:
		return "EvTwo64"
	case EvNull:
		return "EvNull"
	case EvNA:
		return "EvNA"
	case EvNaN:
		return "EvNaN"
	case EvUDE:
		return "EvUDE"
	case EvHeader:
		return "EvHeader"
	case EvMsgpack:
		return "EvMsgpack"
	case EvBinc:
		return "EvBinc"
	case EvCapnp:
		return "EvCapnp"
	case EvZygo:
		return "EvZygo"
	case EvUtf8:
		return "EvUtf8"
	case EvJson:
		return "EvJson"
	case EvMsgpKafka:
		return "EvMsgpKafka"
	}
	return fmt.Sprintf("Ev.%d", e)
}

// String converts the Frame's header information to a string. It doesn't
// read or stingify any variable length UDE payload, even if present.
func (f Frame) String() string {
	tmu := f.Tm()
	tm := time.Unix(0, tmu).UTC()
	evtnum := f.GetEvtnum()
	ulen := f.GetUlen()

	s := fmt.Sprintf("TMFRAME %v EVTNUM %v [%v bytes] (UCOUNT %d)", tm.Format(time.RFC3339Nano), evtnum, f.NumBytes(), ulen)

	pti := f.GetPTI()

	switch pti {
	case PtiOneInt64:
		s += fmt.Sprintf(" V1:%v", f.Ude)
	case PtiOneFloat64:
		s += fmt.Sprintf(" V0:%v", f.V0)
	case PtiTwo64:
		s += fmt.Sprintf(" V0:%v V1:%v", f.V0, f.Ude)
	}

	// don't print the data; that is usually application specific.
	return s
}

// FramesEqual calls Marshal() both frames a and b and returns returns
// true if the serialized versions of a and b are byte-for-byte identical.
// FramesEqual will panics if there is a marshaling error.
func FramesEqual(a, b *Frame) bool {
	abuf, err := a.Marshal(nil)
	panicOn(err)
	bbuf, err := b.Marshal(nil)
	panicOn(err)
	return 0 == bytes.Compare(abuf, bbuf)
}

// Blake2b returns the 64-byte BLAKE2b cryptographic
// hash of the Frame. This is useful for hashing and
// de-duplicating a stream of Frames.
//
// reference: https://godoc.org/github.com/codahale/blake2
// reference: https://blake2.net/
// reference: https://tools.ietf.org/html/rfc7693
//
func (f *Frame) Blake2b() []byte {
	h, err := blake2b.New(nil)
	panicOn(err)

	n := f.NumBytes()

	var m [24]byte
	binary.LittleEndian.PutUint64(m[:8], uint64(f.Prim))
	switch {
	case n == 8:
		h.Write(m[:8])
	default:
		pti := f.GetPTI()
		switch pti {
		case PtiOneInt64:
			binary.LittleEndian.PutUint64(m[8:16], uint64(f.Ude))
			h.Write(m[:16])
		case PtiOneFloat64:
			binary.LittleEndian.PutUint64(m[8:16], math.Float64bits(f.V0))
			h.Write(m[:16])
		case PtiTwo64:
			binary.LittleEndian.PutUint64(m[8:16], math.Float64bits(f.V0))
			binary.LittleEndian.PutUint64(m[16:24], uint64(f.Ude))
			h.Write(m[:24])
		case PtiUDE:
			binary.LittleEndian.PutUint64(m[8:16], uint64(f.Ude))
			h.Write(m[:16])
			h.Write(f.Data)
		}
	}

	return []byte(h.Sum(nil))
}

// NewMarshalledFrame creates a frame already marshalled into the
// writeHere buffer, assuming that writeHere is large enough.
// It returns the marshalled frame as bytes, and any error.
// Effectively this is a convenience combination of NewFrame()
// followed by Marshal().
func NewMarshalledFrame(writeHere []byte, tm time.Time, evtnum Evtnum, v0 float64, v1 int64, data []byte) ([]byte, error) {

	frm, err := NewFrame(tm, evtnum, v0, v1, data)
	if err != nil {
		return nil, err
	}
	return frm.Marshal(writeHere)
}

// NewMsgpackFrame is a convenience method, taking a
// method that has had github.com/tinylib/msgp code
// generated for it. Such code will have an  msgp.Marshaler
// implementation defined by the generated code.
// The provided buf will be used if it has sufficient space,
// but is optional and can be nil.
// The marshalled frame's bytes are returned, along with
// any error encountered.
func NewMsgpackFrame(tm time.Time, m msgp.Marshaler, buf []byte) ([]byte, error) {
	bts, err := m.MarshalMsg(buf)
	if err != nil {
		return nil, err
	}
	return NewMarshalledFrame(nil, time.Now(), EvMsgpack, 0, 0, bts)
}

redpajama_set_name: RedPajamaGithub


Blurb: Dog Number 1, Dog Number 10 takes readers through a world of playful pups that love to count! Each spread's rhyming text leaves out the last word, allowing little ones to chime in and shout out the missing number. The amusing illustrations provide countable clues for the numbers that have been left out. With Dog Number 1, Dog Number 10, accomplished illustrator Ami Rubinger once again turns his humorous and imaginative eye to an otherwise simple subject. This is Rubinger's third rhyme-completion book, a technique that teaches children about concepts like counting with a fun, fill-in-the-blank challenge that encourages participation. His colorful, computer-generated canines will make little faces smile, and the rhyming game will have them counting from one to ten, again and again.


In this column, we're interviewing the tastemakers, foodies and chefs that are dominating the web. This week: Meg van der Kruik of Beard + Bonnet.
In this column, we're interviewing the tastemakers, foodies and chefs that are dominating the web. Here are just a few of our favorite food bloggers. This week: Leanne Vogel of Healthful Pursuit.


text:
Live aus Berlin je třetí album hudební skupiny Rammstein (po dvou studiových Herzeleid a Sehnsucht) a první z jejich živých alb. Vyšlo 31. srpna 1999. Záznam koncertu byl vydán i na VHS resp. DVD. Album bylo oceněno účastí více než 40 000 posluchačů při dvou večerech (22. a 23. srpna 1998) v Berlínském Wuhlheide. Píseň Bück Dich musela být cenzurována a na normální verzi DVD nebo VHS chybí.

Seznam skladeb
 Spielt mit mir (5:22)
 Herzeleid (3:58)
 Bestrafe mich (3:49)
 Weißes Fleisch (4:35)
 Sehnsucht (4:25)
 Asche zu Asche (3:24)
 Wilder Wein (5:17)
 Klavier (4:50)
 Heirate mich (6:26)
 Du Riechst so gut (5:24)
 Du hast (4:27)
 Bück dich (5:57)
 Engel (5:57)
 Rammstein (5:29)
 Tier (3:56)
 Laichzeit (5:14)
 Wollt ihr das Bett in Flammen sehen? (5:52)
 Seemann (6:54)

Účast na albu
 Zpěv: Till Lindemann
 Rytmická kytara: Paul Landers
 Hlavní kytara: Richard Z. Kruspe
 E-Bass: Oliver Riedel
 Mixáž, bicí: Christoph Schneider
 Klávesy: Flake Lorenz

Externí odkazy

 Oficiální stránky kapely
 České fanstránky

Koncertní alba Rammstein
Hudební video alba Rammstein
Koncertní alba z roku 1999
Hudební video alba z roku 1999
Koncertní alba Motor Music
Hudební video alba Motor Music
Alba v němčině

redpajama_set_name: RedPajamaWikipedia


Antisemitism with it's irrational agonies pops up, as do the frequent passions and tensions experienced by servicemen and women who daily fear they or their partner might not see another day.
The book starts slowly but contains some great turns of phrase, e.g. 'the leaden skies outside wept their misery on Caithness' or 'the fighting had become as common as the cry of the seals back home.' It's when a half-dead, pregnant young German Jewess appears out of the blue, that the pace increases, the interlocking plots begin to thicken and the drama to simmer and finally boil.
Overall, we gain a vivid insight into the simple, harsh life in the far north of Scotland, coloured by the realistic dialects of the primary characters. Their emotions and difficult choices are well developed and culminate dramatically and rather unexpectedly, leading to a somewhat abrupt finale.


Caption for Instagram Selfie with Friends Collections.
Best Friends is most Important Part of Life. Capture Moment with your Best Friends and Post that With Best Caption for Instagram Selfie with Friends and make your Great Memory.
Here we Sheared Best Caption for Instagram Selfie with Friends For you.It will make your Memory with your Best Friends.


After showing some unexpected touches of class, Birmingham were forced to slug it out to book a fifth round place.
Brum boss Alex McLeish said: "Both goals were absolutely delicious and the second has got to be a contender for goal of the month, if not the season.
After reaching last season's final Everton hardly needed reminding of what an FA Cup run can do for you.
But there was a flat feeling around Goodison from the start and stubborn Birmingham took no time to grab the lead.
McLeish's side may be famed for their defending but their opener was real quality.
Leighton Baines floated a free-kick into the area that was easily dealt with and two passes and a few seconds later the ball was in the Everton net.
Ferguson's pass picked out Keith Fahey and he clipped into the area for Benitez to guide his shot past Tim Howard.
Everton continued to struggle to create anything with each misplaced pass earning a louder groan.
Louis Saha summed up the frustration with his free-kick slamming against the wall.
And when they finally made some space Steven Pienaar's cross picked out Landon Donovan but the American's header was easily dealt with by Joe Hart.
South Africa star Pienaar cut in from the right and fired well over Hart's goal with a desperate left-foot strike.
But five minutes before the break Birmingham doubled their advantage with another cracking goal.
Fahey broke from midfield with a classy dribble and laid the ball wide to Seb Larsson.
The Swede's ball in was run over by Ferguson, who was then picked out by McFadden and Ferguson guided the ball into the corner of Howard's net.
Moyes chucked on Osman for Diniyar Bilyaletdinov at the break and the Russian blasted well over with his first touch of the ball.
Bru should have made it safe just five minutes into the second period when Larsson opened Everton up only for Benitez to race clear and fire his shot straight at Howard.
But 11 minutes after the break Moyes' men grabbed one back when Osman curled in from the edge of the area.
Howard Webb then waved away shouts for a penalty after Saha went down in the box as Everton searched in vein for the equaliser.
Moyes said: "The first half never really gave us a chance, we were so poor in the first half that it would have needed a very good second half performance but it was not enough.
"They have come here and performed well and got a couple of goals and deserve to go through.
"They are above us in the league and they are on a good run.
"It probably wasn't our day but we didn't deserve any luck with the way we played.


text:
Amplix Acquires Net7
NORWOOD, Mass., Jan. 4, 2023 /PRNewswire/ -- Amplix, a portfolio company of Gemspring Capital, and a leading provider of technology advisory services and software, announced today that it has acquired Net7 Solutions, LLC and Net7 Total Care, LLC (together, "Net7").
Founded in 2013, Net7 provides technology advisory services across the entire IT infrastructure lifecycle, serving hundreds of customers across numerous end markets. With its innovative Total Care practice, Net7 offers managed technology services and infrastructure with enhanced support, benchmarking and performance data, inventory and project management and regular business and innovation reviews.
"We're excited to welcome the Net7 team to the Amplix family," commented Joe DeStefano, CEO of Amplix. "The company's strong sales talent, technical leadership and customer-first approach complement Amplix's service offering and culture. Net7's Total Care practice will enhance the Amplix platform and help to further differentiate the lifecycle experience and data capabilities we provide. We look forward to collaborating with the Net7 team to optimize Amplix's reach and further accelerate the company's growth."
Net7's President and CEO, Chris Checksfield, added, "Our partnership with Amplix is an exciting new chapter in Net7's history of growth and innovation, and comes at a key inflection point in our evolution. We are excited to augment our service capabilities with Amplix's resources, the Baseline IT platform and sizable industry relationships. The opportunity to bring our customers into a customer-centric culture, focused on amplifying technology investment return and organizational value was a key element for us."
About Net7
Net7 is a provider of technology advisory services and software to customers across multiple industries, serving as a trusted resource to its clients by enabling IT professionals to make more informed decisions to optimize technology spending. Net7's advisory services span cloud computing, voice and telephony, connectivity, managed services, SD-WAN, and cybersecurity. Net7 is headquartered in Franklin, Massachusetts. For more information, visit www.net7.com.
About Amplix
Amplix is a leading provider of technology advisory services and software to more than 2,000 customers across multiple industries, enabling data-driven enhancements to technology decision-making and optimization. Amplix's advisory services encompass data connectivity, cloud telephony, customer experience, security and managed services, business continuity, cloud optimization and data center solutions. Recently acquired by Gemspring Capital, Amplix was formed through the merger of ROI Communications, Blue Front Technology Group, and allConnex, and is headquartered in Norwood, Massachusetts. For more information, visit www.amplix.com.
About Gemspring Capital
Gemspring Capital, a Westport, Connecticut-based private equity firm with $1.5 billion of capital under management, provides flexible capital solutions to lower middle market companies. Gemspring partners with talented management teams and takes a partnership approach to helping drive revenue growth and value creation. Target companies have up to $500 million in revenue and are in the aerospace & defense, business services, consumer services, financial and insurance services, healthcare services, industrial services, software and tech-enabled services, or specialty manufacturing sectors. For more information, visit www.gemspring.com.
CONTACT: Zubin Malkani, [email protected]
View original content:https://www.prnewswire.com/news-releases/amplix-acquires-net7-301712713.html
SOURCE Gemspring Capital


Showing results by author "Craig Robinson"
Craig Robinson, the brother of Michelle Obama, has enjoyed tremendous success in both the business and basketball arenas. He has been a vice president with Morgan Stanley Dean Witter and a managing director and partner at Loop Capital Markets. In his first season coaching the Oregon State Beavers, he led the team to 18 victories, triple their previous season total. Here he shares valuable insights on what it takes to be a great leader in all aspects of life.


text:
Friendship |
Hope found in sweat and soil
"Conservation – Sustainability - Fairness – Transparency", Rudolf Lüthi – Head of Agribusiness and Rural Development Department, HELVETAS Headquarter, BioTrade project implementer In Vietnam, herbs have been used to cure diseases for thousands of years. However, the majority of Vietnamese native herbs are either underproductive or overexploited. Consequences are resources of natural herbs are dwindling, manufacturers of herbal medicines have to import herbs (mainly from China); and since they can only afford low graded herbs, they cannot be certain of the origin or quality. This reality is calling for action: herbals plants and traditional knowledge need conservation, consumers need access to good quality herbal medicines, and people in possession of the natural resource and the traditional knowledge need to make profit out of what they have for them to protect it. And that is the very reason why our project is on point. We bring in BioTrade concept that applies to value chains sourcing from nature. Criteria of BioTrade include conservation of nature, financial and social sustainability, fairness, and transparency. "We don't do one-size-fits-all", Cuong Vien – BioTrade Project Manager In BioTrade project, we aim at manufacturers of herbal medicines all over the country as they have the necessary resources as well as the motivation to develop sustainable value chains of herbs. I think it's worth mentioning that all of our interventions are carefully customized to the needs of companies. We don't do one-size-fits-all because each of our companies is at a different stage in the development toward sustainability, and have different objectives. Until now, we have established partnership with 29 small/medium enterprises to develop 38 value chains of natural herbs. More than 3000 farmers have benefited from these value chains: they received trainings on sustainable farming of herbal plants, they were supported with production materials, and engaged in long-term contracts with stable pricing for their herbs.
Returning to nature is an emerging trend in the world as well as in Vietnam. Customers are increasingly interested in natural based products, especially when it comes to food, beauty and pharmaceutical products.
The article featured on the Vietnam News (source: Helvetas VN)
Project "Scaling up of BioTrade initiatives within phyto-pharmaceutical sector in Vietnam" by Helvetas was designed to help Vietnam solve the challenges of decreasing natural resources, to put in place an effective model of genetic resources and biopersity management, and to balance out the economic benefits and social needs with the conservation needs. The Vietnam News has recently interviewed several 'insiders' about this trend.
Photo for illustration (source: Helvetas VN)
"Such significant example", Nguyen Thi Hue – Head of Agricultural Extension Center, Bac Ha district, Lao Cai province
Back in 2010, when we first introduced herbal plants in Bac Ha, everybody was skeptical. People here are mostly ethnic and only used to growing rice and maize. Together with a company, we came to every family, talked to them, and persuaded them to try. We gave them seeds and seedlings, fertilizers, all materials and showed them how to grow herbs. Only ten families agreed to try back then, each family half a hectare. But when the harvest came, those ten families got paid and after deducting all expenses, they made 3 -4 times more than growing rice and maize.
It has been a long way since then. Now there are more than 200 households in Bac Ha are growing herbs. BioTrade project helped connect us to some new companies, so we hope to expand in coming years. The project organized various trainings for our farmers, so from technical side we're confident.
Bac Ha set such significant example in the province that local district government is determined to make herbal plants one of the priorities for agricultural reform toward sustainability.
"Our customers trust us", Le Thi Tuyet Anh – Director of Vietroselle company
Vietnamese Ambassador to Iran Luong Quoc Huy has affirmed that tourism is a potential cooperation area between the two countries, pledging to facilitate the connectivity between their travel firms.
The Paris Peace Accords on ending the war and restoring peace in Vietnam is a milestone in Vietnamese diplomacy and our nation's history of struggle for independence, freedom, peace and reunification. People-to-people diplomacy has made an important contribution to that success.
"Vietnam's election to the United Nations Human Rights Council (UNHRC) for the term 2023-2025, after the end of its term as a non-permanent member of the UN Security Council (term 2020-2022) shows the increasing position and prestige of Vietnam in the international arena," said Uch Leang, deputy head of the Department of Asian, African and Middle Eastern Studies under the Royal Academy of Cambodia (RAC)'s Institute of International Relations.
VUFO President Sets New Emulation Goals for 2023
"In 2023, Vietnam Union of Friendship Organizations (VUFO) aims to improve the effectiveness of people-to-people diplomacy activities to achieve the country's socio-economic development goals," said VUFO President Nguyen Phuong Nga at a meeting with officers and staff at the beginning of the Lunar New Year 2023 on January 27, in Hanoi.
Calligraphy master Jean Sébastien Grill: My Mission is to introduce Vietnamese culture in France
Neatly dressed in a black ao dai, Jean Sébastien Grill focused on each pen stroke. Bold, soft, and curvilinear handwriting gradually appears on the paper. As the first foreigner to participate in the Spring Calligraphy Fair 2023 in Ho Van (the Temple of Literature - Quoc Tu Giam, Hanoi)m he sees introducing Vietnamese culture in France as his personal mission.
93 years of CPV Establishment: Seminar on Vietnam - Canada Cooperation
It is proud and emotional when the song "Welcome to the Communist Party of Vietnam" by musician Do Minh, was played at a conference held in a land tens of thousands of kilometers far away.
Vietnam Joins Hands to Promote Int'l Cooperation on Gender Equality
Women remain underrepresented in ambassadorship and global governance positions, standing at around 1.6% of heads of states and 21.6% ambassadors around the world.
More than a Gift
Over the years, international non-governmental organizations (INGOs) have implemented meaningful projects in Vietnam, targeting women, children, and people with disabilities. Such support brings joy and better life quality to beneficiaries and helps them gain confidence, bravery, and a brighter future.


text:
Brian Baldrate
Brian serves as the Vice President and General Counsel of Raytheon's International and Washington Operations. Brian's career has included government service, private practice and experience as in-house corporate counsel.
He began his career as a cavalry officer in the U.S. Army and subsequently served as an attorney in the Army Judge Advocate General's Corps. He spent several years as a criminal prosecutor, including a year-long deployment in Iraq, where he was awarded the Bronze Star Medal. Brian also spent several years detailed to the Department of Justice's Civil Division and as a Special Assistant United States Attorney in United States Attorney's Office for the District of Columbia. Following thirteen years of government service, Brian practiced white collar criminal defense before joining Raytheon in 2012.
He has written, taught and spoken extensively on criminal and international law, anti-corruption and international compliance-related subjects. Brian graduated from the United States Military Academy at West Point and received an M.P.A. from the University of Connecticut. He received his J.D from the University of Connecticut School of Law, where he was valedictorian of his class and editor-in-chief of the Connecticut Law Review. Brian also earned an LL.M from the Army Judge Advocate General's School and continues to serve as a Lieutenant Colonel in the U.S. Army Reserves where he currently serves as an adjunct professor teaching military law at the United States Military Academy.


CTV is reporting that "Mounties are investigating a string of shootings in Surrey that took place within hours of each other Tuesday, the last of which left one man in hospital. The victim was found wounded inside a black pickup truck that was marked by bullet holes and a shattered rear window around 10:30 p.m. The pickup pulled up to a fire hall in the Fraser Heights area shortly after the RCMP received reports of shots fired a few blocks away on 89A Avenue."
"The shooting victim was taken to hospital with injuries that are not believed to be life-threatening. Not long after, a car was torched in the Port Kells neighbourhood. The previous two shootings both happened in the Clayton Heights area of the city. Fortunately, no one was struck during either. Bullets did hit a vehicle and a garage door around noon at a property on 180 Street. Mounties said the suspected gunman was on a motorcycle, and fled before officers arrived. Hours later, around 7 p.m., shots were fired from one vehicle to another on 72 Avenue."
News 1130 s reporting that "Many in Surrey remain concerned following a day which saw three separate shootings. But the RCMP says it has plenty to work with as it investigates. The city's commanding officer suspects recent shootings may be drug-related." Ya think?! Ya think maybe providing the Hells Angels drug dealers on the Surrey strip police protection is making the situation worse? Ya think arresting the drug dealers that are selling fentanyl in public might be a step forward perhaps? Ya think addressing the problem on the Surrey stip might be a bit more proactive then running around like idiots chasing the symptom is less productive than addressing the cause of the problem? Did Bill fordy really leave?
CBC is reporting that "RCMP in Richmond, B.C., say one person has been seriously injured after an early morning shooting Tuesday. RCMP say the shooting, which took place just before 6 a.m. PT, happened on Waterton Drive near Steveston Highway. One person was taken to hospital with serious injuries." The Richmond News is reporting that the victim is known to the police but has no known ties to gangs or organized crime..


Public Spaces are encoded with meaning, and every person experiences them in a unique and specific way. These places are shaped by the decisions of governments, institutions, communities, and individuals. At the same time, their location, design, and regulating mechanisms shape forms of social organization and activity. This program will feature a collection of shorts exploring human stories about how places transform through different eras in response to our evolving societal expectations of these public spaces, their meanings, and their possibilities.
Connection is a documentary about the close connection between people's heart and bridges in the city. It highlights the cultural gap between older generation and new generation which by focusing on the relationship between bridges and urban development. The film encourages people to enjoy the rapid development of modern cities, and at the same time to pay attention to the construction of spiritual bridges.
What's make a urban free space a square? The video made by the Roman architecture studio Orizzontale begins with a problem of identification: how should we call the square in Marranella area that nobody - nor the City nor other institutions, bothered to name? Screening will be in collaboration with Architectural Player.
In the footsteps of many unique Angelenos, a down-on-her-luck woman finds a new identity in Pershing Square, a notoriously unloved space in downtown Los Angeles.


Loesch Verpackungstechnik will be attending interpack 2017 in Düsseldorf with a wide range of new machines. On stand A41 in hall 15 at the leading industry fair, the Franconian machinery engineering company will be presenting the world première of its RCB-HS for packaging small chocolate products. LoeschPack will also be showing the new LOOP-GB gondola storage system and the FCB high-performance platform for packaging chocolate, biscuits and chewing gum. Completing this system is the new CMT high-performance cartoning machine. The system supplier is also presenting new developments relating to Industry 4.0 and the Internet of Things.
At interpack 2017 LoeschPack is presenting the world debut of its RCB-HS. This innovative development is ideal for small chocolate products, combining a hermetically sealed pack style with a traditional fold wrap look. "Unique in this segment," says Olaf Piepenbrock of the latest product developed by LoeschPack. The managing partner of parent company Piepenbrock adds: "The RCB-HS offers a new and innovative way to pack chocolate bars, tablets and neapolitans in a premium look, at the same time ensuring excellent product protection from environmental influences." Consumers can enjoy products with longer shelf lives and improved taste and texture. The chocolate products are presented in a superior fold wrap look. "With excellent performance of up to 600 products a minute, the RCB-HS in this combination is unique in the chocolate sector," says Piepenbrock. The machine produces the fold wrap in one wrapping head and hot-seals the pack circumferentially. The heat bars always seal film against film, ensuring extremely tight packaging and preventing any damage to the products. Folding elements then produce the traditional fold wrap. "The conscious decision to dispense with any use of glue to seal the pack reduces soiling of the machine, minimises running costs and simplifies machine operation," explains Piepenbrock.
LoeschPack is presenting its new LOOP-GB gondola storage system, the high-performance FCB platform and the new top loading cartoning machine in a complex system. The LOOP-GB (gondola buffer) storage system is suitable for a huge range of pre-packed or unpacked products and features a large and variable size range. It guarantees gentle product handling by reducing gondola vibration and consistently helping to prevent mechanical forces act on the product. "Our new gondola storage system harmonises incoming product flows depending on positioning in the feed and distribution system, and adjusts them as required," says Olaf Piepenbrock. This counterbalances output fluctuations in the downstream packaging area, enables brief temporary holding of products and prevents the packaging machines from overflowing. "The LOOP-GB can also be used to feed packaging machines directly or interlink various levels within a production facility," says Piepenbrock, naming some further possible uses. By uncoupling the dosing unit and the packaging machine, the overall line performance and overall equipment effectiveness (OEE) are considerably increased compared to a coupled process. "The LOOP-GB's feed and discharge rate of up to 160 rows a minute represents world-class performance in the industry. Our buffer is also extremely flexible – depending on the task, one, two or three outputs are possible," says Piepenbrock.
The high-performance F-Series platform for packaging chocolate, biscuits and chewing gum in flow wrap is another of LoeschPack's exhibits at interpack 2017. "Our F-Series flow wrapping system solutions are a byword for top performance, outstanding, overall equipment effectiveness and excellent size flexibility combined with low packaging costs," says Piepenbrock. Short size changeover times make the F-Series a compelling proposition for customers. Every setting can be precisely reproduced, guaranteeing stable machine operation and optimum performance after only a very short time. Piepenbrock points to another benefit: "Intelligent process engineering for the seal modules means fewer rejects when stopping and starting the packaging machine." This makes the F-Series more resistant to varying ambient conditions. In addition, the new product line features ideal hygiene characteristics, meaning fewer interruptions for cleaning. Simple and time-saving cleaning, together with outstanding maintenance accessibility, further increase the efficiency of the horizontal flow wrapping machines. "Alongside traditional fold wrapping machinery, the F-Series is easy to integrate in a system with storage, feeder, secondary and end-of-line packaging from LoeschPack," says Piepenbrock. A newly developed transformation wheel for transferring pre-packed items to LoeschPack secondary packaging equipment serves as an additional system component in the field of high-performance feeding. Up to 1,500 items a minute can be picked, adjusted in their horizontal alignment for discharge and set down again. That facilitates faster and more efficient feeding of the downstream machinery.
The new CMT (Cartoner for Multipacks Toploading) high-performance cartoning machine from LoeschPack combines excellent flexibility with maximised performance in a highly compact design. The completely new, modular top loading cartoning system offers customers ideal layout freedom during integration in their peripheral plant equipment. With suitable products, the new platform can handle up to 1,500 products a minute during infeed. The CMT then generates a range of pack formations with an output of up to 150 cartons a minute. "In this high-end segment, the system ideally complements the high-performance primary fold and flow wrapping packaging machines in the LoeschPack portfolio, as our new product reliably handles both accumulable and non-accumulable products," says Olaf Piepenbrock. In the platform layout, modules decoupled via an electromagnetic shuttle system enable a huge range of machine versions. The main segments of "erecting carton", "filling", "sealing lid" and "carton discharge" apply a modular concept and are supported by a flexible base frame. Each shuttle can be separately controlled and – depending on the behaviour of the other shuttles – precisely positioned. The CMT can easily handle traditional layouts such as "in-line", "90°" or "counterflow". "Considerable freedom is enabled in terms of the operating side, the position of the carton magazine and the feed layout. This layout flexibility is the platform's outstanding strength in this market segment," says Piepenbrock. The new cartoning machine can thus be ideally integrated within customers' packaging and logistics process as well as existing systems.
When it comes to Industry 4.0 and the Internet of Things (IoT), LoeschPack offers its customers a wide range of options. As a member of the "ChoConnect" cooperation network, the company also helps to point the way ahead. Numerous equipment options for machinery made at the innovative Franconian company have already been reflecting aspects subsumed under the term Industry 4.0 for many years. One example is a remote maintenance module that allows LoeschPack to analyse machine states directly in the customer's production facilities and use the information gained to make recommendations for action. The application makes it possible to install new firmware in the machinery without a programmer needing to be present. At interpack 2017 in Düsseldorf, the special-purpose machinery engineer will for the first time be presenting a method of interlinking several machines made by different manufacturers within a single production line. To this end, LoeschPack, Rexroth, Winkler und Dünnebier, Theegarten-Pactec and Sollich have come together to form a strategic partnership called "ChoConnect" and define a common standard. "This process is not only about sharing ready signals and coordinating interfaces in the machines, but represents the wide-ranging and intelligent networking of individual production stages," says Piepenbrock. Starting with automatic recipe transfer and the transmission of machine states or performance variables, a form of "virtual production" will be shown at interpack 2017 and can be viewed at the stands of all the participating companies. "We are jointly working on a 'responsive production line' that, as required and depending on the machine states in the overall line combination, automatically adjusts its output at the separate production stages," adds Piepenbrock. "On this scale, the alliance's approach is unique within the industry and will set a clear benchmark." Frequent batch changes are a further aspect of modern confectionery production, requiring fast, reliable and reproducible format changeovers. Based on RFID technology, LoeschPack is presenting a solution for reliable detection and control of its size components. With this application, the operator is assisted when changing sizes, as the machine automatically checks whether all size components are fitted and correct. Only once all steps have been correctly completed and match the intended size does the machine commence operation. This produces a noticeable reduction in production time losses and further increases the efficiency of the machinery and systems. The beneficiary of these innovative technologies is the market leader for bar packaging, the LTM-DUO. The latest generation of the flexible fold wrapping machine packs up to 215 bars of chocolate a minute in a primary wrap, with a carton label outer wrap.
LoeschPack is rounding off its showing at interpack 2017 with an extensive presentation on all aspects of chewing gum. Technical animations, videos and a multitude of fascinating product samples exemplifying many different packaging solutions will be shown. Visitors will be able to find out about the automation solutions for feeding chewing gum slabs into high-performance packaging machines. The LoeschPack stand team will provide information on the new LOGAMAT-S wrapping head machine for traditional chewing gum sticks as an economical variant in the high-performance range of up to 1,500 sticks a minute. The machine first packs the sticks individually in paper-backed aluminium film. Five pre-packed sticks are held together with band wrap and then packed in the sales packaging. The company will also be telling visitors about its innovative chewing gum packaging and systems solutions for wrapping, boxing and sealing multipacks in cellophane.


How to determine if a keyboard key or a mouse key was pressed?
Input.anyKey return true if a keyboard or mouse button was pressed. How can I tell if only a keyboard button was pressed?
Will detect keyboard but not mouse. I just tried it.


My table was covered with Simonis 860 HR about one month before I used this product. The spray came out in uneven gobs that left what looks like water marks all over my one month old $ 300.00 Cloth. I threw the can away but it did remove the chalk. I have photos but I'm unable to post them here. I would ONLY use this product again if my cloth was TRASHED to try and revive it some.
I stay at an RV park in the winter. They have 4 tables that haven't been cleaned except for some brushing. After playing for a short period our hands are blue from the chalk. I cleaned each table and after playing for 1 1/2 hours, my hands had a very small color change. I believe that after cleaning them a few more times, the felt will be even better.
Used it for the first time,it shot a gob on my electric blue 860 felt and left ,like a water stain.I call and your rep told me to wait a few days ,spray that area again and it came off,so next time I will test the spray and not get a gob on the table,but if I do I will give it a quick wipe.
Despite vigorous shaking, Many times, the spray does not come out as a fine mist. blotchy spots do dry up without marking table. Spray does a decent job cleaning. Seems overpriced.


We'll start our 2019 Track previews off with the Class 5 Girls 1600m. This race will see five All-Staters return from 2018, and an additional 6 State Qualifiers.
I foresee this being a three way race between last years 3-5 finishers, with Liberty Senior and Iowas State signee Madelynn Hill being the slightest of favorites. She comes in with a Mile Time (1609m) of 4:57 that she ran at Festival of Miles last season, and placed 5th last year at the State Meet. She had a stellar XC season, placing third at State, and will look to build upon that momentum on the track. To win it though she'll have to overcome to people who beat her last season, Tessa Valdivia and Madison Hulsey. Valdivia is coming off a very strong performance at State XC where she placed 2nd, and comes into 2018 with the fastest 1600m PR in Class 5 with a 5:01. She placed 4th at State a year ago with a 5:05, and I think she's a great sub 5:00 candidate this Spring. Madison Hulsey had a breakout season last year, placing third in at State with a 5:05. She had another rock solid year in XC and she's another one I think is could run below the 5:00 this season. Below you will find my full top 8 subjective rankings, along with a few honorable mentions including XC Champion Ginger Murnieks who hasn't yet ran full 1600m, as in Oregon they contest the 1500m instead and Freshman Phenom MaKayla Clark of Lee's Summit who sports a 4:39 1500m from this past summer.