text:
What does Microsoft's cloud-powered future mean for physical media?
As Halo 4 breaks records, Phil Harrison explains how Xbox is evolving.
News by	Wesley Yin-Poole, Deputy Editor
Phil Harrison, corporate vice president of Microsoft's Interactive Entertainment Business division for the EMEA territory.
Microsoft has made it very clear: it sees the future of Xbox not with discs sold in shops over the counter by a sales assistant but with what it calls "connected entertainment services" powered by the cloud.
Yesterday, during a media briefing that saw the announcement of a new developer, Lift London, and a new boss of Lionhead, former Rare chief Scott Henson, Phil Harrison, former high-ranking Sony PlayStation executive and now Microsoft's Xbox boss in Europe, the Middle East and Africa, explained how Xbox will evolve over the years to come.
"As we look to the future of our industry, increasingly the games, the IPs and the content, are going to sit on the cloud, powered by Xbox but accessible through a variety of devices. Rather than our games being device-centric, they will become cloud-centric. This is a general trend you will see more of as we go forward.
"Our games, yes, they will have the best GPU, CPU, immersive experience on Xbox 360, but they will also show up on Windows Phone, on Surface, on Windows 8 and on other compatible devices through SmartGlass."
This vision, Harrison said, influenced his decision to join Microsoft.
"The key thread that runs through our future is the shift from packaged products to connected entertainment services," Harrison continued. "That is the thread you will see us develop over the coming years. It's not a change we're going to make immediately. We will continue to support retail products with our key releases for sure.
"But everything we do will have increasingly deep social and additional features that are reliant on the network, that are unlocked by the network and enhanced by the network through Xbox Live and beyond. That's the key strategic shift we're making with our business, moving from being a maker of packaged products to being an operator of connected services.
"You will see that in the people we hire, the companies we partner with and the business models we develop and the creative expression we bring to life on all of these platforms."
Purchasing a product at retail on a disc is a great starting point for your relationship with a game
Phil Harrison
Halo 4, the best-selling game in the series and sold in shops on a disc.
But what does all this mean for good old console exclusives that come on good old discs? Microsoft has itself seen very recently how successful big budget boxed products can be, and Harrison noted Xbox 360 exclusive Halo 4, released late last year, in his presentation.
"Our big retail release at the back end of last year was Halo 4," he said. "Based on the first 60 days, it is now on track to be our best-selling Halo ever, and by extension that means it's the best-selling Microsoft IP of all time. We're breaking records with the amount of multiplayer games."
Does Microsoft's multi-screen, multi-device, cloud-powered future signal the end of the disc? Not so, Harrison insisted.
"Purchasing a product at retail on a disc is a great starting point for your relationship with a game," he countered. "The point I'm trying to make is historically, 90 per cent of the game experience is on that disc. Yes, you might get some downloadable content and some additional levels you can buy, but by and large what you get on the disc is the extent of the product.
"The way I would encourage you to think about it for the future is that the disc is the starting point of what might be a five year relationship with the player and a five year relationship from us as a game maker to the community, and being able to respond to their needs and wishes and desires and help refine and build and extend the product over many months and, hopefully, if you have a great hit, over many years.
"It's not mutually exclusive. That doesn't mean you have to stop doing disc products in order to be cloud centric or service centric. The two are entirely compatible with each other."
Another shift appears to be in Microsoft's approach to first-party game development. Sony enjoys a huge network of worldwide studios, which encompasses 13 PlayStation-exclusive developers including Media Molecule, Naughty Dog and Polyphony. Microsoft has a smaller network of first-party game developers, but it has in recent months opened or bought new game studios including Press Play in Denmark, Black Tusk Studios in Vancouver and now Lift London in Soho.
Is Microsoft trying to emulate the vastness of Sony's global Worldwide Studios?
"I think Microsoft has an incredible studio network," Harrison said, "both internal and external. I would not in any way discount what we have relative to the competition. In fact, if you look at the market performance of our products, we outperform the competition. If you look at NPD data you can see our IPs outperform competitive first-party IPs by a significant margin. Ultimately, we are a business. That's a great way of measuring our success.
"But, I agree, we can always expand. I think you saw from our presentation today we very much believe Europe is a great place and opportunity for us. I built most of my career in the UK and Europe and believe in the talent within a thousand mile radius of this building."
Jump to comments (115)
More about Halo 4
Wesley Yin-Poole
Wesley is Eurogamer's deputy editor. He likes news, interviews, and more news. He also likes Street Fighter more than anyone can get him to shut up about it.


Private wooded 5acre lot in Jewett 5 miles from Windham with views of Hunter. Driveway in, septic approved… Ready to build your dream getaway in the mountains. There are plans available for 3 brd cabin if you are interested.


text:
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <xtables.h>
#include <linux/netfilter/xt_conntrack.h>
#include <linux/netfilter/nf_conntrack_common.h>

struct ip_conntrack_old_tuple {
	struct {
		__be32 ip;
		union {
			__u16 all;
		} u;
	} src;

	struct {
		__be32 ip;
		union {
			__u16 all;
		} u;

		/* The protocol. */
		__u16 protonum;
	} dst;
};

struct xt_conntrack_info {
	unsigned int statemask, statusmask;

	struct ip_conntrack_old_tuple tuple[IP_CT_DIR_MAX];
	struct in_addr sipmsk[IP_CT_DIR_MAX], dipmsk[IP_CT_DIR_MAX];

	unsigned long expires_min, expires_max;

	/* Flags word */
	uint8_t flags;
	/* Inverse flags */
	uint8_t invflags;
};

enum {
	O_CTSTATE = 0,
	O_CTPROTO,
	O_CTORIGSRC,
	O_CTORIGDST,
	O_CTREPLSRC,
	O_CTREPLDST,
	O_CTORIGSRCPORT,
	O_CTORIGDSTPORT,
	O_CTREPLSRCPORT,
	O_CTREPLDSTPORT,
	O_CTSTATUS,
	O_CTEXPIRE,
	O_CTDIR,
};

static void conntrack_mt_help(void)
{
	printf(
"conntrack match options:\n"
"[!] --ctstate {INVALID|ESTABLISHED|NEW|RELATED|UNTRACKED|SNAT|DNAT}[,...]\n"
"                               State(s) to match\n"
"[!] --ctproto proto            Protocol to match; by number or name, e.g. \"tcp\"\n"
"[!] --ctorigsrc address[/mask]\n"
"[!] --ctorigdst address[/mask]\n"
"[!] --ctreplsrc address[/mask]\n"
"[!] --ctrepldst address[/mask]\n"
"                               Original/Reply source/destination address\n"
"[!] --ctorigsrcport port\n"
"[!] --ctorigdstport port\n"
"[!] --ctreplsrcport port\n"
"[!] --ctrepldstport port\n"
"                               TCP/UDP/SCTP orig./reply source/destination port\n"
"[!] --ctstatus {NONE|EXPECTED|SEEN_REPLY|ASSURED|CONFIRMED}[,...]\n"
"                               Status(es) to match\n"
"[!] --ctexpire time[:time]     Match remaining lifetime in seconds against\n"
"                               value or range of values (inclusive)\n"
"    --ctdir {ORIGINAL|REPLY}   Flow direction of packet\n");
}

#define s struct xt_conntrack_info /* for v0 */
static const struct xt_option_entry conntrack_mt_opts_v0[] = {
	{.name = "ctstate", .id = O_CTSTATE, .type = XTTYPE_STRING,
	 .flags = XTOPT_INVERT},
	{.name = "ctproto", .id = O_CTPROTO, .type = XTTYPE_PROTOCOL,
	 .flags = XTOPT_INVERT},
	{.name = "ctorigsrc", .id = O_CTORIGSRC, .type = XTTYPE_HOST,
	 .flags = XTOPT_INVERT},
	{.name = "ctorigdst", .id = O_CTORIGDST, .type = XTTYPE_HOST,
	 .flags = XTOPT_INVERT},
	{.name = "ctreplsrc", .id = O_CTREPLSRC, .type = XTTYPE_HOST,
	 .flags = XTOPT_INVERT},
	{.name = "ctrepldst", .id = O_CTREPLDST, .type = XTTYPE_HOST,
	 .flags = XTOPT_INVERT},
	{.name = "ctstatus", .id = O_CTSTATUS, .type = XTTYPE_STRING,
	 .flags = XTOPT_INVERT},
	{.name = "ctexpire", .id = O_CTEXPIRE, .type = XTTYPE_UINT32RC,
	 .flags = XTOPT_INVERT},
	XTOPT_TABLEEND,
};
#undef s

#define s struct xt_conntrack_mtinfo3 /* for v1-v3 */
/* We exploit the fact that v1-v3 share the same layout */
static const struct xt_option_entry conntrack_mt_opts[] = {
	{.name = "ctstate", .id = O_CTSTATE, .type = XTTYPE_STRING,
	 .flags = XTOPT_INVERT},
	{.name = "ctproto", .id = O_CTPROTO, .type = XTTYPE_PROTOCOL,
	 .flags = XTOPT_INVERT},
	{.name = "ctorigsrc", .id = O_CTORIGSRC, .type = XTTYPE_HOSTMASK,
	 .flags = XTOPT_INVERT},
	{.name = "ctorigdst", .id = O_CTORIGDST, .type = XTTYPE_HOSTMASK,
	 .flags = XTOPT_INVERT},
	{.name = "ctreplsrc", .id = O_CTREPLSRC, .type = XTTYPE_HOSTMASK,
	 .flags = XTOPT_INVERT},
	{.name = "ctrepldst", .id = O_CTREPLDST, .type = XTTYPE_HOSTMASK,
	 .flags = XTOPT_INVERT},
	{.name = "ctstatus", .id = O_CTSTATUS, .type = XTTYPE_STRING,
	 .flags = XTOPT_INVERT},
	{.name = "ctexpire", .id = O_CTEXPIRE, .type = XTTYPE_UINT32RC,
	 .flags = XTOPT_INVERT},
	{.name = "ctorigsrcport", .id = O_CTORIGSRCPORT, .type = XTTYPE_PORTRC,
	 .flags = XTOPT_INVERT},
	{.name = "ctorigdstport", .id = O_CTORIGDSTPORT, .type = XTTYPE_PORTRC,
	 .flags = XTOPT_INVERT},
	{.name = "ctreplsrcport", .id = O_CTREPLSRCPORT, .type = XTTYPE_PORTRC,
	 .flags = XTOPT_INVERT},
	{.name = "ctrepldstport", .id = O_CTREPLDSTPORT, .type = XTTYPE_PORTRC,
	 .flags = XTOPT_INVERT},
	{.name = "ctdir", .id = O_CTDIR, .type = XTTYPE_STRING},
	XTOPT_TABLEEND,
};
#undef s

static int
parse_state(const char *state, size_t len, struct xt_conntrack_info *sinfo)
{
	if (strncasecmp(state, "INVALID", len) == 0)
		sinfo->statemask |= XT_CONNTRACK_STATE_INVALID;
	else if (strncasecmp(state, "NEW", len) == 0)
		sinfo->statemask |= XT_CONNTRACK_STATE_BIT(IP_CT_NEW);
	else if (strncasecmp(state, "ESTABLISHED", len) == 0)
		sinfo->statemask |= XT_CONNTRACK_STATE_BIT(IP_CT_ESTABLISHED);
	else if (strncasecmp(state, "RELATED", len) == 0)
		sinfo->statemask |= XT_CONNTRACK_STATE_BIT(IP_CT_RELATED);
	else if (strncasecmp(state, "UNTRACKED", len) == 0)
		sinfo->statemask |= XT_CONNTRACK_STATE_UNTRACKED;
	else if (strncasecmp(state, "SNAT", len) == 0)
		sinfo->statemask |= XT_CONNTRACK_STATE_SNAT;
	else if (strncasecmp(state, "DNAT", len) == 0)
		sinfo->statemask |= XT_CONNTRACK_STATE_DNAT;
	else
		return 0;
	return 1;
}

static void
parse_states(const char *arg, struct xt_conntrack_info *sinfo)
{
	const char *comma;

	while ((comma = strchr(arg, ',')) != NULL) {
		if (comma == arg || !parse_state(arg, comma-arg, sinfo))
			xtables_error(PARAMETER_PROBLEM, "Bad ctstate \"%s\"", arg);
		arg = comma+1;
	}
	if (!*arg)
		xtables_error(PARAMETER_PROBLEM, "\"--ctstate\" requires a list of "
					      "states with no spaces, e.g. "
					      "ESTABLISHED,RELATED");
	if (strlen(arg) == 0 || !parse_state(arg, strlen(arg), sinfo))
		xtables_error(PARAMETER_PROBLEM, "Bad ctstate \"%s\"", arg);
}

static bool
conntrack_ps_state(struct xt_conntrack_mtinfo3 *info, const char *state,
                   size_t z)
{
	if (strncasecmp(state, "INVALID", z) == 0)
		info->state_mask |= XT_CONNTRACK_STATE_INVALID;
	else if (strncasecmp(state, "NEW", z) == 0)
		info->state_mask |= XT_CONNTRACK_STATE_BIT(IP_CT_NEW);
	else if (strncasecmp(state, "ESTABLISHED", z) == 0)
		info->state_mask |= XT_CONNTRACK_STATE_BIT(IP_CT_ESTABLISHED);
	else if (strncasecmp(state, "RELATED", z) == 0)
		info->state_mask |= XT_CONNTRACK_STATE_BIT(IP_CT_RELATED);
	else if (strncasecmp(state, "UNTRACKED", z) == 0)
		info->state_mask |= XT_CONNTRACK_STATE_UNTRACKED;
	else if (strncasecmp(state, "SNAT", z) == 0)
		info->state_mask |= XT_CONNTRACK_STATE_SNAT;
	else if (strncasecmp(state, "DNAT", z) == 0)
		info->state_mask |= XT_CONNTRACK_STATE_DNAT;
	else
		return false;
	return true;
}

static void
conntrack_ps_states(struct xt_conntrack_mtinfo3 *info, const char *arg)
{
	const char *comma;

	while ((comma = strchr(arg, ',')) != NULL) {
		if (comma == arg || !conntrack_ps_state(info, arg, comma - arg))
			xtables_error(PARAMETER_PROBLEM,
			           "Bad ctstate \"%s\"", arg);
		arg = comma + 1;
	}

	if (strlen(arg) == 0 || !conntrack_ps_state(info, arg, strlen(arg)))
		xtables_error(PARAMETER_PROBLEM, "Bad ctstate \"%s\"", arg);
}

static int
parse_status(const char *status, size_t len, struct xt_conntrack_info *sinfo)
{
	if (strncasecmp(status, "NONE", len) == 0)
		sinfo->statusmask |= 0;
	else if (strncasecmp(status, "EXPECTED", len) == 0)
		sinfo->statusmask |= IPS_EXPECTED;
	else if (strncasecmp(status, "SEEN_REPLY", len) == 0)
		sinfo->statusmask |= IPS_SEEN_REPLY;
	else if (strncasecmp(status, "ASSURED", len) == 0)
		sinfo->statusmask |= IPS_ASSURED;
#ifdef IPS_CONFIRMED
	else if (strncasecmp(status, "CONFIRMED", len) == 0)
		sinfo->statusmask |= IPS_CONFIRMED;
#endif
	else
		return 0;
	return 1;
}

static void
parse_statuses(const char *arg, struct xt_conntrack_info *sinfo)
{
	const char *comma;

	while ((comma = strchr(arg, ',')) != NULL) {
		if (comma == arg || !parse_status(arg, comma-arg, sinfo))
			xtables_error(PARAMETER_PROBLEM, "Bad ctstatus \"%s\"", arg);
		arg = comma+1;
	}

	if (strlen(arg) == 0 || !parse_status(arg, strlen(arg), sinfo))
		xtables_error(PARAMETER_PROBLEM, "Bad ctstatus \"%s\"", arg);
}

static bool
conntrack_ps_status(struct xt_conntrack_mtinfo3 *info, const char *status,
                    size_t z)
{
	if (strncasecmp(status, "NONE", z) == 0)
		info->status_mask |= 0;
	else if (strncasecmp(status, "EXPECTED", z) == 0)
		info->status_mask |= IPS_EXPECTED;
	else if (strncasecmp(status, "SEEN_REPLY", z) == 0)
		info->status_mask |= IPS_SEEN_REPLY;
	else if (strncasecmp(status, "ASSURED", z) == 0)
		info->status_mask |= IPS_ASSURED;
	else if (strncasecmp(status, "CONFIRMED", z) == 0)
		info->status_mask |= IPS_CONFIRMED;
	else
		return false;
	return true;
}

static void
conntrack_ps_statuses(struct xt_conntrack_mtinfo3 *info, const char *arg)
{
	const char *comma;

	while ((comma = strchr(arg, ',')) != NULL) {
		if (comma == arg || !conntrack_ps_status(info, arg, comma - arg))
			xtables_error(PARAMETER_PROBLEM,
			           "Bad ctstatus \"%s\"", arg);
		arg = comma + 1;
	}

	if (strlen(arg) == 0 || !conntrack_ps_status(info, arg, strlen(arg)))
		xtables_error(PARAMETER_PROBLEM, "Bad ctstatus \"%s\"", arg);
}

static void conntrack_parse(struct xt_option_call *cb)
{
	struct xt_conntrack_info *sinfo = cb->data;

	xtables_option_parse(cb);
	switch (cb->entry->id) {
	case O_CTSTATE:
		parse_states(cb->arg, sinfo);
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_STATE;
		break;
	case O_CTPROTO:
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_PROTO;
		sinfo->tuple[IP_CT_DIR_ORIGINAL].dst.protonum = cb->val.protocol;

		if (sinfo->tuple[IP_CT_DIR_ORIGINAL].dst.protonum == 0
		    && (sinfo->invflags & XT_INV_PROTO))
			xtables_error(PARAMETER_PROBLEM,
				   "rule would never match protocol");

		sinfo->flags |= XT_CONNTRACK_PROTO;
		break;
	case O_CTORIGSRC:
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_ORIGSRC;
		sinfo->tuple[IP_CT_DIR_ORIGINAL].src.ip = cb->val.haddr.ip;
		sinfo->flags |= XT_CONNTRACK_ORIGSRC;
		break;
	case O_CTORIGDST:
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_ORIGDST;
		sinfo->tuple[IP_CT_DIR_ORIGINAL].dst.ip = cb->val.haddr.ip;
		sinfo->flags |= XT_CONNTRACK_ORIGDST;
		break;
	case O_CTREPLSRC:
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_REPLSRC;
		sinfo->tuple[IP_CT_DIR_REPLY].src.ip = cb->val.haddr.ip;
		sinfo->flags |= XT_CONNTRACK_REPLSRC;
		break;
	case O_CTREPLDST:
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_REPLDST;
		sinfo->tuple[IP_CT_DIR_REPLY].dst.ip = cb->val.haddr.ip;
		sinfo->flags |= XT_CONNTRACK_REPLDST;
		break;
	case O_CTSTATUS:
		parse_statuses(cb->arg, sinfo);
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_STATUS;
		sinfo->flags |= XT_CONNTRACK_STATUS;
		break;
	case O_CTEXPIRE:
		sinfo->expires_min = cb->val.u32_range[0];
		sinfo->expires_max = cb->val.u32_range[0];
		if (cb->nvals >= 2)
			sinfo->expires_max = cb->val.u32_range[1];
		if (cb->invert)
			sinfo->invflags |= XT_CONNTRACK_EXPIRES;
		sinfo->flags |= XT_CONNTRACK_EXPIRES;
		break;
	}
}

static void conntrack_mt_parse(struct xt_option_call *cb, uint8_t rev)
{
	struct xt_conntrack_mtinfo3 *info = cb->data;

	xtables_option_parse(cb);
	switch (cb->entry->id) {
	case O_CTSTATE:
		conntrack_ps_states(info, cb->arg);
		info->match_flags |= XT_CONNTRACK_STATE;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_STATE;
		break;
	case O_CTPROTO:
		info->l4proto = cb->val.protocol;
		if (info->l4proto == 0 && (info->invert_flags & XT_INV_PROTO))
			xtables_error(PARAMETER_PROBLEM, "conntrack: rule would "
			           "never match protocol");

		info->match_flags |= XT_CONNTRACK_PROTO;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_PROTO;
		break;
	case O_CTORIGSRC:
		info->origsrc_addr = cb->val.haddr;
		info->origsrc_mask = cb->val.hmask;
		info->match_flags |= XT_CONNTRACK_ORIGSRC;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_ORIGSRC;
		break;
	case O_CTORIGDST:
		info->origdst_addr = cb->val.haddr;
		info->origdst_mask = cb->val.hmask;
		info->match_flags |= XT_CONNTRACK_ORIGDST;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_ORIGDST;
		break;
	case O_CTREPLSRC:
		info->replsrc_addr = cb->val.haddr;
		info->replsrc_mask = cb->val.hmask;
		info->match_flags |= XT_CONNTRACK_REPLSRC;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_REPLSRC;
		break;
	case O_CTREPLDST:
		info->repldst_addr = cb->val.haddr;
		info->repldst_mask = cb->val.hmask;
		info->match_flags |= XT_CONNTRACK_REPLDST;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_REPLDST;
		break;
	case O_CTSTATUS:
		conntrack_ps_statuses(info, cb->arg);
		info->match_flags |= XT_CONNTRACK_STATUS;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_STATUS;
		break;
	case O_CTEXPIRE:
		info->expires_min = cb->val.u32_range[0];
		info->expires_max = cb->val.u32_range[0];
		if (cb->nvals >= 2)
			info->expires_max = cb->val.u32_range[1];
		info->match_flags |= XT_CONNTRACK_EXPIRES;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_EXPIRES;
		break;
	case O_CTORIGSRCPORT:
		info->origsrc_port = cb->val.port_range[0];
		info->origsrc_port_high = cb->val.port_range[cb->nvals >= 2];
		info->match_flags |= XT_CONNTRACK_ORIGSRC_PORT;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_ORIGSRC_PORT;
		break;
	case O_CTORIGDSTPORT:
		info->origdst_port = cb->val.port_range[0];
		info->origdst_port_high = cb->val.port_range[cb->nvals >= 2];
		info->match_flags |= XT_CONNTRACK_ORIGDST_PORT;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_ORIGDST_PORT;
		break;
	case O_CTREPLSRCPORT:
		info->replsrc_port = cb->val.port_range[0];
		info->replsrc_port_high = cb->val.port_range[cb->nvals >= 2];
		info->match_flags |= XT_CONNTRACK_REPLSRC_PORT;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_REPLSRC_PORT;
		break;
	case O_CTREPLDSTPORT:
		info->repldst_port = cb->val.port_range[0];
		info->repldst_port_high = cb->val.port_range[cb->nvals >= 2];
		info->match_flags |= XT_CONNTRACK_REPLDST_PORT;
		if (cb->invert)
			info->invert_flags |= XT_CONNTRACK_REPLDST_PORT;
		break;
	case O_CTDIR:
		if (strcasecmp(cb->arg, "ORIGINAL") == 0) {
			info->match_flags  |= XT_CONNTRACK_DIRECTION;
			info->invert_flags &= ~XT_CONNTRACK_DIRECTION;
		} else if (strcasecmp(cb->arg, "REPLY") == 0) {
			info->match_flags  |= XT_CONNTRACK_DIRECTION;
			info->invert_flags |= XT_CONNTRACK_DIRECTION;
		} else {
			xtables_param_act(XTF_BAD_VALUE, "conntrack", "--ctdir", cb->arg);
		}
		break;
	}
}

#define cinfo_transform(r, l) \
	do { \
		memcpy((r), (l), offsetof(typeof(*(l)), state_mask)); \
		(r)->state_mask  = (l)->state_mask; \
		(r)->status_mask = (l)->status_mask; \
	} while (false);

static void conntrack1_mt_parse(struct xt_option_call *cb)
{
	struct xt_conntrack_mtinfo1 *info = cb->data;
	struct xt_conntrack_mtinfo3 up;

	memset(&up, 0, sizeof(up));
	cinfo_transform(&up, info);
	up.origsrc_port_high = up.origsrc_port;
	up.origdst_port_high = up.origdst_port;
	up.replsrc_port_high = up.replsrc_port;
	up.repldst_port_high = up.repldst_port;
	cb->data = &up;
	conntrack_mt_parse(cb, 3);
	if (up.origsrc_port != up.origsrc_port_high ||
	    up.origdst_port != up.origdst_port_high ||
	    up.replsrc_port != up.replsrc_port_high ||
	    up.repldst_port != up.repldst_port_high)
		xtables_error(PARAMETER_PROBLEM,
			"conntrack rev 1 does not support port ranges");
	cinfo_transform(info, &up);
	cb->data = info;
}

static void conntrack2_mt_parse(struct xt_option_call *cb)
{
#define cinfo2_transform(r, l) \
		memcpy((r), (l), offsetof(typeof(*(l)), sizeof(*info));

	struct xt_conntrack_mtinfo2 *info = cb->data;
	struct xt_conntrack_mtinfo3 up;

	memset(&up, 0, sizeof(up));
	memcpy(&up, info, sizeof(*info));
	up.origsrc_port_high = up.origsrc_port;
	up.origdst_port_high = up.origdst_port;
	up.replsrc_port_high = up.replsrc_port;
	up.repldst_port_high = up.repldst_port;
	cb->data = &up;
	conntrack_mt_parse(cb, 3);
	if (up.origsrc_port != up.origsrc_port_high ||
	    up.origdst_port != up.origdst_port_high ||
	    up.replsrc_port != up.replsrc_port_high ||
	    up.repldst_port != up.repldst_port_high)
		xtables_error(PARAMETER_PROBLEM,
			"conntrack rev 2 does not support port ranges");
	memcpy(info, &up, sizeof(*info));
	cb->data = info;
#undef cinfo2_transform
}

static void conntrack3_mt_parse(struct xt_option_call *cb)
{
	conntrack_mt_parse(cb, 3);
}

static void conntrack_mt_check(struct xt_fcheck_call *cb)
{
	if (cb->xflags == 0)
		xtables_error(PARAMETER_PROBLEM, "conntrack: At least one option "
		           "is required");
}

static void
print_state(unsigned int statemask)
{
	const char *sep = " ";

	if (statemask & XT_CONNTRACK_STATE_INVALID) {
		printf("%sINVALID", sep);
		sep = ",";
	}
	if (statemask & XT_CONNTRACK_STATE_BIT(IP_CT_NEW)) {
		printf("%sNEW", sep);
		sep = ",";
	}
	if (statemask & XT_CONNTRACK_STATE_BIT(IP_CT_RELATED)) {
		printf("%sRELATED", sep);
		sep = ",";
	}
	if (statemask & XT_CONNTRACK_STATE_BIT(IP_CT_ESTABLISHED)) {
		printf("%sESTABLISHED", sep);
		sep = ",";
	}
	if (statemask & XT_CONNTRACK_STATE_UNTRACKED) {
		printf("%sUNTRACKED", sep);
		sep = ",";
	}
	if (statemask & XT_CONNTRACK_STATE_SNAT) {
		printf("%sSNAT", sep);
		sep = ",";
	}
	if (statemask & XT_CONNTRACK_STATE_DNAT) {
		printf("%sDNAT", sep);
		sep = ",";
	}
}

static void
print_status(unsigned int statusmask)
{
	const char *sep = " ";

	if (statusmask & IPS_EXPECTED) {
		printf("%sEXPECTED", sep);
		sep = ",";
	}
	if (statusmask & IPS_SEEN_REPLY) {
		printf("%sSEEN_REPLY", sep);
		sep = ",";
	}
	if (statusmask & IPS_ASSURED) {
		printf("%sASSURED", sep);
		sep = ",";
	}
	if (statusmask & IPS_CONFIRMED) {
		printf("%sCONFIRMED", sep);
		sep = ",";
	}
	if (statusmask == 0)
		printf("%sNONE", sep);
}

static void
conntrack_dump_addr(const union nf_inet_addr *addr,
                    const union nf_inet_addr *mask,
                    unsigned int family, bool numeric)
{
	if (family == NFPROTO_IPV4) {
		if (!numeric && addr->ip == 0) {
			printf(" anywhere");
			return;
		}
		if (numeric)
			printf(" %s%s",
			       xtables_ipaddr_to_numeric(&addr->in),
			       xtables_ipmask_to_numeric(&mask->in));
		else
			printf(" %s%s",
			       xtables_ipaddr_to_anyname(&addr->in),
			       xtables_ipmask_to_numeric(&mask->in));
	} else if (family == NFPROTO_IPV6) {
		if (!numeric && addr->ip6[0] == 0 && addr->ip6[1] == 0 &&
		    addr->ip6[2] == 0 && addr->ip6[3] == 0) {
			printf(" anywhere");
			return;
		}
		if (numeric)
			printf(" %s%s",
			       xtables_ip6addr_to_numeric(&addr->in6),
			       xtables_ip6mask_to_numeric(&mask->in6));
		else
			printf(" %s%s",
			       xtables_ip6addr_to_anyname(&addr->in6),
			       xtables_ip6mask_to_numeric(&mask->in6));
	}
}

static void
print_addr(const struct in_addr *addr, const struct in_addr *mask,
           int inv, int numeric)
{
	char buf[BUFSIZ];

	if (inv)
		printf(" !");

	if (mask->s_addr == 0L && !numeric)
		printf(" %s", "anywhere");
	else {
		if (numeric)
			strcpy(buf, xtables_ipaddr_to_numeric(addr));
		else
			strcpy(buf, xtables_ipaddr_to_anyname(addr));
		strcat(buf, xtables_ipmask_to_numeric(mask));
		printf(" %s", buf);
	}
}

static void
matchinfo_print(const void *ip, const struct xt_entry_match *match, int numeric, const char *optpfx)
{
	const struct xt_conntrack_info *sinfo = (const void *)match->data;

	if(sinfo->flags & XT_CONNTRACK_STATE) {
        	if (sinfo->invflags & XT_CONNTRACK_STATE)
			printf(" !");
		printf(" %sctstate", optpfx);
		print_state(sinfo->statemask);
	}

	if(sinfo->flags & XT_CONNTRACK_PROTO) {
        	if (sinfo->invflags & XT_CONNTRACK_PROTO)
			printf(" !");
		printf(" %sctproto", optpfx);
		printf(" %u", sinfo->tuple[IP_CT_DIR_ORIGINAL].dst.protonum);
	}

	if(sinfo->flags & XT_CONNTRACK_ORIGSRC) {
		if (sinfo->invflags & XT_CONNTRACK_ORIGSRC)
			printf(" !");
		printf(" %sctorigsrc", optpfx);

		print_addr(
		    (struct in_addr *)&sinfo->tuple[IP_CT_DIR_ORIGINAL].src.ip,
		    &sinfo->sipmsk[IP_CT_DIR_ORIGINAL],
		    false,
		    numeric);
	}

	if(sinfo->flags & XT_CONNTRACK_ORIGDST) {
		if (sinfo->invflags & XT_CONNTRACK_ORIGDST)
			printf(" !");
		printf(" %sctorigdst", optpfx);

		print_addr(
		    (struct in_addr *)&sinfo->tuple[IP_CT_DIR_ORIGINAL].dst.ip,
		    &sinfo->dipmsk[IP_CT_DIR_ORIGINAL],
		    false,
		    numeric);
	}

	if(sinfo->flags & XT_CONNTRACK_REPLSRC) {
		if (sinfo->invflags & XT_CONNTRACK_REPLSRC)
			printf(" !");
		printf(" %sctreplsrc", optpfx);

		print_addr(
		    (struct in_addr *)&sinfo->tuple[IP_CT_DIR_REPLY].src.ip,
		    &sinfo->sipmsk[IP_CT_DIR_REPLY],
		    false,
		    numeric);
	}

	if(sinfo->flags & XT_CONNTRACK_REPLDST) {
		if (sinfo->invflags & XT_CONNTRACK_REPLDST)
			printf(" !");
		printf(" %sctrepldst", optpfx);

		print_addr(
		    (struct in_addr *)&sinfo->tuple[IP_CT_DIR_REPLY].dst.ip,
		    &sinfo->dipmsk[IP_CT_DIR_REPLY],
		    false,
		    numeric);
	}

	if(sinfo->flags & XT_CONNTRACK_STATUS) {
        	if (sinfo->invflags & XT_CONNTRACK_STATUS)
			printf(" !");
		printf(" %sctstatus", optpfx);
		print_status(sinfo->statusmask);
	}

	if(sinfo->flags & XT_CONNTRACK_EXPIRES) {
        	if (sinfo->invflags & XT_CONNTRACK_EXPIRES)
			printf(" !");
		printf(" %sctexpire ", optpfx);

        	if (sinfo->expires_max == sinfo->expires_min)
			printf("%lu", sinfo->expires_min);
        	else
			printf("%lu:%lu", sinfo->expires_min, sinfo->expires_max);
	}

	if (sinfo->flags & XT_CONNTRACK_DIRECTION) {
		if (sinfo->invflags & XT_CONNTRACK_DIRECTION)
			printf(" %sctdir REPLY", optpfx);
		else
			printf(" %sctdir ORIGINAL", optpfx);
	}

}

static void
conntrack_dump_ports(const char *prefix, const char *opt,
		     u_int16_t port_low, u_int16_t port_high)
{
	if (port_high == 0 || port_low == port_high)
		printf(" %s%s %u", prefix, opt, port_low);
	else
		printf(" %s%s %u:%u", prefix, opt, port_low, port_high);
}

static void
conntrack_dump(const struct xt_conntrack_mtinfo3 *info, const char *prefix,
               unsigned int family, bool numeric, bool v3)
{
	if (info->match_flags & XT_CONNTRACK_STATE) {
		if (info->invert_flags & XT_CONNTRACK_STATE)
			printf(" !");
		printf(" %sctstate", prefix);
		print_state(info->state_mask);
	}

	if (info->match_flags & XT_CONNTRACK_PROTO) {
		if (info->invert_flags & XT_CONNTRACK_PROTO)
			printf(" !");
		printf(" %sctproto %u", prefix, info->l4proto);
	}

	if (info->match_flags & XT_CONNTRACK_ORIGSRC) {
		if (info->invert_flags & XT_CONNTRACK_ORIGSRC)
			printf(" !");
		printf(" %sctorigsrc", prefix);
		conntrack_dump_addr(&info->origsrc_addr, &info->origsrc_mask,
		                    family, numeric);
	}

	if (info->match_flags & XT_CONNTRACK_ORIGDST) {
		if (info->invert_flags & XT_CONNTRACK_ORIGDST)
			printf(" !");
		printf(" %sctorigdst", prefix);
		conntrack_dump_addr(&info->origdst_addr, &info->origdst_mask,
		                    family, numeric);
	}

	if (info->match_flags & XT_CONNTRACK_REPLSRC) {
		if (info->invert_flags & XT_CONNTRACK_REPLSRC)
			printf(" !");
		printf(" %sctreplsrc", prefix);
		conntrack_dump_addr(&info->replsrc_addr, &info->replsrc_mask,
		                    family, numeric);
	}

	if (info->match_flags & XT_CONNTRACK_REPLDST) {
		if (info->invert_flags & XT_CONNTRACK_REPLDST)
			printf(" !");
		printf(" %sctrepldst", prefix);
		conntrack_dump_addr(&info->repldst_addr, &info->repldst_mask,
		                    family, numeric);
	}

	if (info->match_flags & XT_CONNTRACK_ORIGSRC_PORT) {
		if (info->invert_flags & XT_CONNTRACK_ORIGSRC_PORT)
			printf(" !");
		conntrack_dump_ports(prefix, "ctorigsrcport",
				     v3 ? info->origsrc_port : ntohs(info->origsrc_port),
				     v3 ? info->origsrc_port_high : 0);
	}

	if (info->match_flags & XT_CONNTRACK_ORIGDST_PORT) {
		if (info->invert_flags & XT_CONNTRACK_ORIGDST_PORT)
			printf(" !");
		conntrack_dump_ports(prefix, "ctorigdstport",
				     v3 ? info->origdst_port : ntohs(info->origdst_port),
				     v3 ? info->origdst_port_high : 0);
	}

	if (info->match_flags & XT_CONNTRACK_REPLSRC_PORT) {
		if (info->invert_flags & XT_CONNTRACK_REPLSRC_PORT)
			printf(" !");
		conntrack_dump_ports(prefix, "ctreplsrcport",
				     v3 ? info->replsrc_port : ntohs(info->replsrc_port),
				     v3 ? info->replsrc_port_high : 0);
	}

	if (info->match_flags & XT_CONNTRACK_REPLDST_PORT) {
		if (info->invert_flags & XT_CONNTRACK_REPLDST_PORT)
			printf(" !");
		conntrack_dump_ports(prefix, "ctrepldstport",
				     v3 ? info->repldst_port : ntohs(info->repldst_port),
				     v3 ? info->repldst_port_high : 0);
	}

	if (info->match_flags & XT_CONNTRACK_STATUS) {
		if (info->invert_flags & XT_CONNTRACK_STATUS)
			printf(" !");
		printf(" %sctstatus", prefix);
		print_status(info->status_mask);
	}

	if (info->match_flags & XT_CONNTRACK_EXPIRES) {
		if (info->invert_flags & XT_CONNTRACK_EXPIRES)
			printf(" !");
		printf(" %sctexpire ", prefix);

		if (info->expires_max == info->expires_min)
			printf("%u", (unsigned int)info->expires_min);
		else
			printf("%u:%u", (unsigned int)info->expires_min,
			       (unsigned int)info->expires_max);
	}

	if (info->match_flags & XT_CONNTRACK_DIRECTION) {
		if (info->invert_flags & XT_CONNTRACK_DIRECTION)
			printf(" %sctdir REPLY", prefix);
		else
			printf(" %sctdir ORIGINAL", prefix);
	}
}

static void conntrack_print(const void *ip, const struct xt_entry_match *match,
                            int numeric)
{
	matchinfo_print(ip, match, numeric, "");
}

static void
conntrack1_mt4_print(const void *ip, const struct xt_entry_match *match,
                     int numeric)
{
	const struct xt_conntrack_mtinfo1 *info = (void *)match->data;
	struct xt_conntrack_mtinfo3 up;

	cinfo_transform(&up, info);
	conntrack_dump(&up, "", NFPROTO_IPV4, numeric, false);
}

static void
conntrack1_mt6_print(const void *ip, const struct xt_entry_match *match,
                     int numeric)
{
	const struct xt_conntrack_mtinfo1 *info = (void *)match->data;
	struct xt_conntrack_mtinfo3 up;

	cinfo_transform(&up, info);
	conntrack_dump(&up, "", NFPROTO_IPV6, numeric, false);
}

static void
conntrack2_mt_print(const void *ip, const struct xt_entry_match *match,
                    int numeric)
{
	conntrack_dump((const void *)match->data, "", NFPROTO_IPV4, numeric, false);
}

static void
conntrack2_mt6_print(const void *ip, const struct xt_entry_match *match,
                     int numeric)
{
	conntrack_dump((const void *)match->data, "", NFPROTO_IPV6, numeric, false);
}

static void
conntrack3_mt_print(const void *ip, const struct xt_entry_match *match,
                    int numeric)
{
	conntrack_dump((const void *)match->data, "", NFPROTO_IPV4, numeric, true);
}

static void
conntrack3_mt6_print(const void *ip, const struct xt_entry_match *match,
                     int numeric)
{
	conntrack_dump((const void *)match->data, "", NFPROTO_IPV6, numeric, true);
}

static void conntrack_save(const void *ip, const struct xt_entry_match *match)
{
	matchinfo_print(ip, match, 1, "--");
}

static void conntrack3_mt_save(const void *ip,
                               const struct xt_entry_match *match)
{
	conntrack_dump((const void *)match->data, "--", NFPROTO_IPV4, true, true);
}

static void conntrack3_mt6_save(const void *ip,
                                const struct xt_entry_match *match)
{
	conntrack_dump((const void *)match->data, "--", NFPROTO_IPV6, true, true);
}

static void conntrack2_mt_save(const void *ip,
                               const struct xt_entry_match *match)
{
	conntrack_dump((const void *)match->data, "--", NFPROTO_IPV4, true, false);
}

static void conntrack2_mt6_save(const void *ip,
                                const struct xt_entry_match *match)
{
	conntrack_dump((const void *)match->data, "--", NFPROTO_IPV6, true, false);
}

static void
conntrack1_mt4_save(const void *ip, const struct xt_entry_match *match)
{
	const struct xt_conntrack_mtinfo1 *info = (void *)match->data;
	struct xt_conntrack_mtinfo3 up;

	cinfo_transform(&up, info);
	conntrack_dump(&up, "--", NFPROTO_IPV4, true, false);
}

static void
conntrack1_mt6_save(const void *ip, const struct xt_entry_match *match)
{
	const struct xt_conntrack_mtinfo1 *info = (void *)match->data;
	struct xt_conntrack_mtinfo3 up;

	cinfo_transform(&up, info);
	conntrack_dump(&up, "--", NFPROTO_IPV6, true, false);
}

static struct xtables_match conntrack_mt_reg[] = {
	{
		.version       = XTABLES_VERSION,
		.name          = "conntrack",
		.revision      = 0,
		.family        = NFPROTO_IPV4,
		.size          = XT_ALIGN(sizeof(struct xt_conntrack_info)),
		.userspacesize = XT_ALIGN(sizeof(struct xt_conntrack_info)),
		.help          = conntrack_mt_help,
		.x6_parse      = conntrack_parse,
		.x6_fcheck     = conntrack_mt_check,
		.print         = conntrack_print,
		.save          = conntrack_save,
		.x6_options    = conntrack_mt_opts_v0,
	},
	{
		.version       = XTABLES_VERSION,
		.name          = "conntrack",
		.revision      = 1,
		.family        = NFPROTO_IPV4,
		.size          = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo1)),
		.userspacesize = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo1)),
		.help          = conntrack_mt_help,
		.x6_parse      = conntrack1_mt_parse,
		.x6_fcheck     = conntrack_mt_check,
		.print         = conntrack1_mt4_print,
		.save          = conntrack1_mt4_save,
		.x6_options    = conntrack_mt_opts,
	},
	{
		.version       = XTABLES_VERSION,
		.name          = "conntrack",
		.revision      = 1,
		.family        = NFPROTO_IPV6,
		.size          = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo1)),
		.userspacesize = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo1)),
		.help          = conntrack_mt_help,
		.x6_parse      = conntrack1_mt_parse,
		.x6_fcheck     = conntrack_mt_check,
		.print         = conntrack1_mt6_print,
		.save          = conntrack1_mt6_save,
		.x6_options    = conntrack_mt_opts,
	},
	{
		.version       = XTABLES_VERSION,
		.name          = "conntrack",
		.revision      = 2,
		.family        = NFPROTO_IPV4,
		.size          = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo2)),
		.userspacesize = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo2)),
		.help          = conntrack_mt_help,
		.x6_parse      = conntrack2_mt_parse,
		.x6_fcheck     = conntrack_mt_check,
		.print         = conntrack2_mt_print,
		.save          = conntrack2_mt_save,
		.x6_options    = conntrack_mt_opts,
	},
	{
		.version       = XTABLES_VERSION,
		.name          = "conntrack",
		.revision      = 2,
		.family        = NFPROTO_IPV6,
		.size          = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo2)),
		.userspacesize = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo2)),
		.help          = conntrack_mt_help,
		.x6_parse      = conntrack2_mt_parse,
		.x6_fcheck     = conntrack_mt_check,
		.print         = conntrack2_mt6_print,
		.save          = conntrack2_mt6_save,
		.x6_options    = conntrack_mt_opts,
	},
	{
		.version       = XTABLES_VERSION,
		.name          = "conntrack",
		.revision      = 3,
		.family        = NFPROTO_IPV4,
		.size          = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo3)),
		.userspacesize = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo3)),
		.help          = conntrack_mt_help,
		.x6_parse      = conntrack3_mt_parse,
		.x6_fcheck     = conntrack_mt_check,
		.print         = conntrack3_mt_print,
		.save          = conntrack3_mt_save,
		.x6_options    = conntrack_mt_opts,
	},
	{
		.version       = XTABLES_VERSION,
		.name          = "conntrack",
		.revision      = 3,
		.family        = NFPROTO_IPV6,
		.size          = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo3)),
		.userspacesize = XT_ALIGN(sizeof(struct xt_conntrack_mtinfo3)),
		.help          = conntrack_mt_help,
		.x6_parse      = conntrack3_mt_parse,
		.x6_fcheck     = conntrack_mt_check,
		.print         = conntrack3_mt6_print,
		.save          = conntrack3_mt6_save,
		.x6_options    = conntrack_mt_opts,
	},
};

void _init(void)
{
	xtables_register_matches(conntrack_mt_reg, ARRAY_SIZE(conntrack_mt_reg));
}

redpajama_set_name: RedPajamaGithub


Where are the self study guide (books) for CG license?
I guess signing up an on-line course would be easier for most people. But are there any online free sites or books one can do it on their own fpr preparing the exams.
Re: Where are the self study guide (books) for CG license?
Not much in the free realm, but for a few dollars you can get UpgradeU app for iPhone and iPad for $20 one time purchase and it's good for all the licenses. Also, Marine Advancement program has a good review, it's what I have for studying my chief mate unlimited.. It's a USB that plugs into a Windows computer, doesn't need Internet. That runs you just under $100. Might be less for the lower licenses, mine was that much.
Books are the Capt Murphy line of study books and there is another I can't think of..
Thanks, I guess I will buy an online course.
Also, lapware is a paid service.. Very nice..
Another...A free sight I use at times.


text:
Laura Stevenson & the Cans
New York City, New York, United States | INDIE
Band Folk Rock
Share Laura Stevenson & the Cans's EPK!
"PunkNews - Laura Stevenson: A Record"
Call me a sap if you must, but I've become a complete sucker for a woman who can sing. Quality lyrical content helps a ton, too, but as long as the voice delivering said lyrical content is at least somewhat angelic in nature, well, she could be reciting verses from the Necronomicon for all I care. Actually, that might be kind of cool.
Right now, Laura Stevenson is my songstress of choice and her new release, Laura Stevenson: A Record is a quick, breezy, blissful eight track mini-album that combines extremely impressive vocal stylings and diverse musical arrangements to create one of the better records I've heard recently.
It's actually kind of crazy how ambitious A Record is, in that it's not an album that can be pigeonholed based on only a couple of songs. There are quiet, minimal numbers like "The Pretty One" and "Nervous Rex," the former seeing Stevenson employing a combination of banjo, mandolin, violin and echoey vocals that sound worlds better than its description, and the latter a slightly more somber track built around surprisingly intricate finger-picking and subtle vocal harmonies. Stevenson follows a similar path in "A Shine to It" but ditches the acoustic instruments in favor of an electric guitar that's strummed just lightly enough to get the point across.
The rock is brought on the frantic "Landslide Song / The Dig," with loud, jagged guitars and horns serving as the backdrop for Stevenson's soothing vocals. It's an interesting juxtaposition, and one that doesn't hinder the song as much as one might think. "Source and the Sound" features a heavy dose of distorted keys and guitars, but the vocals here are muffled and difficult to decipher -- which surely was the intention, but the choice in production make it a slight misstep; still, it's nothing you should be inclined to skip.
A Record closes in the most ultimate of fashions with "Beets Untitled," a vast, five-minute opus that is an amalgamation of sounds heard in the subsequent seven tracks. Like two sides of a pendulum, the piano utilized in the song adds quite a bit of weight while the horns add a sense of whimsy that lighten things up, keeping the song from sounding too serious, while Stevenson howls over everything with a vocal range and command that's pretty mind-blowing. And the lyrics would undoubtedly be far less interesting if anyone other than Stevenson herself knew what was she really singing about: "Beets bleed and tables have legs / I boiled up a feast and the table it ran away a bloody mess / I need to stop singing in code / to start ringing true only because true rings only." Please, don't ever stop singing in code.
As previously mentioned, A Record is only eight tracks which decreases filler and increases replay value. Best of all, Quote Unquote Records released it which means you can choose how much you want to pay for it. Hell, you don't even have to pay for it if you're a cheap bastard. If you enjoy unpretentious, indie-tinged pop music, Laura Stevenson: A Record would fit in with your collection quite nicely. And even if you're not, there's simply no reason to not check out this album. - punknews.org
"Time Out New York - Review"
"...reminds us of how Joanna Newsom sounded before she went utterly baroque."
- Time Out New York
"NME Videos"
http://www.nme.com/artists/laura-stevenson-and-the-cans - NME
"Kata Rokkar Blog - Laura Stevenson and The Cans"
I was waiting for a good day to post about her. It seems as though Earth Day felt like the most appropriate day to do so. Maybe it's because there's something organic and natural about the way Laura Stevenson And The Cans present their music. Despite the amazing talent exerting from Laura and her crew, their entire first album entitled A Record, is available for download here, free of charge. The music off this record is stripped down yet layered over itself in smart harmonies draped in sadness and sprinkles of innocent joy. There seems to be a Regina Spektor-like playfulness mixed with the vulnerable honesty of Neutral Milk Hotel. - Kata Rokkar Blog
"Alternative Press - Tweet"
And @TheFestFL is underway! Laura Stevenson & The Cans are kicking things off fantastically. Imagine a female-fronted Weakerthans.
http://twitter.com/AltPress/status/5299251681 - Alternative Press
2008 - A Record - Quote Unquote Records/Asian Man Records
2009 - Bomb the Music Industry - Split 7" - Kiss of Death Records
2009 - Holy Ghost 7" - Mandible Records
Laura Stevenson was raised in Nassau County, New York, where she was introduced to music at an early age. Her grandfather, Harry Simeone, was a successful pianist and composer whose works included "The Little Drummer Boy" and "Do You Hear What I Hear?". Simeone's wife (and Laura's grandmother), Margaret McCravy was a singer for the jazz bandleader Benny Goodman. Not until leaving her home for college, did Laura turn away from the piano to begin both playing guitar and writing songs.
Stevenson's classical music upbringing is complemented by a deep involvement with today's punk community. The folk(ish) artist is a keyboardist for Bomb The Music Industry!, one of the noisiest punk bands around today. But while she has served that role she also has been performing her solo material that is leagues apart from the over-compressed, thousand beats-per-minute, shriek-howls that denote BTMI!'s sound.
With her first release, "A Record" (recorded with her backing band, a loose and free-flowing collective known as the Cans), out on donation-based download label Quote Unquote Records, she sticks out amongst the myriad punk rock bands that make up its roster. Luckily she doesn't seem to mind.
Stevenson's sound can be all over the map. "A Record" sees her transitioning from hushed acoustic/banjo balladeering to 20 second interstitial tracks to crunchy electric guitarded rock songs.
She frequently writes about herself, her insecurities, the impact a personality or attitude can have on a relationship. On the surface that may sound like fairly typical singer-songwriter fare, but Stevenson's unique lyrical style, well-crafted harmonies, and stunning vocal performance place her as one of the most respected up and coming songwriters in Brooklyn.
"A Record" is set to be re-released on Asian Man Records in the spring of 2010 and "Holy Ghost!", her latest 7" was just released on Brooklyn's Mandible Records.

redpajama_set_name: RedPajamaCommonCrawl


Whether it's a career issue or a personal relationship or wanting to find fulfillment in life, what do you do when planning and hoping and wishing doesn't work? Our guests found a spiritual approach to be the answer. They found that doing it "God's way" was the way that worked. First, hear how a woman dealt with what appeared to be an insurmountable obstacle in her career—and how she found she had to get back to the basics.


text:
The Kurrajong electorate is one of the five electorates for the unicameral 25-member Australian Capital Territory Legislative Assembly. It elected five members at the 2016 ACT election.

History
Kurrajong was created in 2016, when the five-electorate, 25-member Hare-Clark electoral system was first introduced for the Australian Capital Territory (ACT)  Legislative Assembly, replacing the previous three-electorate, 17-member system. The name "Kurrajong" is derived from an Aboriginal word for the tree (Brachychiton populneus, meaning "shade tree", and also Kurrajong Hill, the name early settlers used for Capital Hill, the location of Parliament House.

Location
The Kurrajong electorate currently comprises the majority of the district of Canberra Central, including the suburbs of Acton, Ainslie, Barton, Braddon, Campbell, Civic, Dickson, Downer, Forrest, Griffith, Hackett, Kingston, Lyneham, Narrabundah, O'Connor, Red Hill, Reid, Turner, Watson, and the entirety of the Jerrabomberra, Kowen and Majura districts including the suburbs of Beard, Hume, Oaks Estate, Pialligo and Symonston.

On the original boundaries contested in 2016 Kurrajong additionally included the suburbs of Deakin and Yarralumla. However the boundary redistribution conducted in 2019 transferred both these suburbs to the Murrumbidgee electorate.

Members

1 Steve Doszpot (Liberal) died on 25 November 2017. Candice Burch (Liberal) was elected as his replacement on a countback on 13 December 2017.

See also
 Australian Capital Territory Electoral Commission
 Australian Capital Territory Legislative Assembly

References

External links
 ACT Electoral Commission

Electorates of the Australian Capital Territory

redpajama_set_name: RedPajamaWikipedia


This download (cddvddr.exe) was tested thoroughly and was found 100% clean. Click "Report Spyware" link on the top if you found this software contains any form of malware, including but not limited to: spyware, viruses, trojans and backdoors.
ConvertXtoDVD 5.0.0.45 - Convert and burn your avi, divx, and other such files to DVD in 1 click.
DiskInternals CD and DVD Recovery 3.5 - Recover files lost during CD/DVD recording session. Simple, one-button solution.
ImTOO DVD Creator 7.1.3.20130709 - Create DVD movie, DVD folder or ISO file from various video files.


text:
A Lacht El Bahhtar zenekar 1986 őszén lépett színpadra először a budapesti Képző és Iparművészeti Szakközépiskolában.
1987 telén, a Naconxipán fesztiválon mutatkoztak be a szélesebb nyilvánosság előtt.

A következő 5 évben minden jelentős budapesti underground klubban és fesztiválon játszottak, és 1991-ben egy fesztiválon léptek fel hollandiai Groningenben olyan zenekarok társaságában, mint a Kispál és a Borz, Ugatha Christie vagy az Andersen.

A LEB zenéje meglepő, friss, depresszív hangulatával gyakran megütközést váltott ki, egyedülálló produkciójuk révén. Évek alatt mégis kialakult a saját közönség, 1990-es, – kazettán megjelent – első albumuk 3000 példányban kelt el.
A felállásuk: dobgép, szintetizátor, cselló, gitárok, és ének.

A zenekar második, Romantika című 1991-es albumából 20 házilag készült műsoros kazetta készült, amelyet a zenekar elvitt magával Groningenbe, és azokat mind megvették.

Az együttesben játszottak 1986 - 1993 között:
Lengyel Zoltán (gitár, dobprogramok)
Nagy Péter (billentyűs hangszerek, dobprogramok)
Rákosi Attila (ütősök)
Réczey Zoltán (ének)
Salamon Eszter (cselló)
Szabó Gergely (basszusgitár, dobprogramok)
Szabó Győző (ének)
Szvoboda Viki (ének)

Albumok

 1990, 1990.
 Romantika, 1991.

Jegyzetek

Források
Allmusic.hu
Földalatti.hu
Az 1991-es Romantika című album hanganyaga
https://www.discogs.com/artist/3132889-Lacht-El-Bahhtar

Külső hivatkozás

Magyar könnyűzenei együttesek
1986-ban alakult együttesek


YAOUNDE, Feb. 7 (Xinhua) -- The Chinese embassy to Cameroon confirmed on Thursday that the Singapore-flagged oil tanker, seized by Cameroon military over commercial dispute since Feb. 1, has been released with all its 26 crew members on board, including two Chinese nationals.
The ship is managed by Singapore-based Eastern Pacific Shipping. In a statement published Wednesday, the company said the vessel departed Cameroon's western port of Limbe on Tuesday with all 26 crew members safe and unharmed.
A Cameroon navy official who preferred not to be named confirmed this information to Xinhua on Thursday.
According to the Chinese embassy, Cameroon military took control of the Singaporean vessel on the evening of Feb. 1 when it was about to leave the Limbe port after discharge operations. The ship was forbidden to leave the port and the crew members were forbidden to leave the ship.


"Don't think so. Dad and I are up front, pilot and co-pilot. You and Shiloh in the back, our crew." Sarah tried to smile.
On highway forty-one to Winneconne for putt-putt, the family's Tahoe tires spun so fast they looked motionless.
Atop the deserted overpass, two boys leaned over the hot metal railing.
"Nice shot. That was a thick one," Tyler said, his blonde mop dangling over his eyes.
"Yeah, phlegm and ketchup spit really help the loogie." Carl hawked another. "Runs in the family, ya know. Granddaddy Adolf Anderssen, a loogie master." Carl spat another, missing a car below.
"I'm bored." Carl kicked the gravel. "Loogieing cars is too easy. Without any ketchup left, it's stupid, and I'm thirsty." Littered around them were empty ketchup bottles. Carl looked over the cracked cement until something caught his eye. He pointed to the other side of the road.
"Dude, check it out." He ran towards the basketball-shaped rock. "It's so freaking round." They rubbed their hands against the rock.
Silence fell over the vehicle.
"I know I can hit a car," Tyler said.
Tyler leaned over the railing, hawked a big one. It splattered on a Buick's windshield like a bug. Tyler smiled. Proud.
Carl yelled, "Make way for C.J.!" He lifted the rock between his legs, and ran bow-legged. He tossed the basketball-rock, granny-style, over the railing.
Below, the highway's calm rumble exploded into chaos. Tahoe tires screeched, drawing a black line across the highway into the grass. The Tahoe accordioned into the fence, and the husband's weight fell on the horn. Shiloh slammed against the dashboard, and little Michael, buckled in silent shock, reached to touch his beautiful mother. His hand felt a wet rock littered with shards and warm red.
The boys ran until, years later, they finally collapsed.
Dan Anderson's first novel, Drunk in the Warm Glow, is forthcoming with Creators Publishing. His writing is also found in cream city review and Poetry Quarterly. Formerly the poetry editor at the Wisconsin Review, he now teaches creative writing and English classes at Fond du Lac High School. When not teaching, he gives guitar lessons and leads tours with his students all over America and Europe (this summer: Greece and Italy). Also, he once found a kitten outside a grocery store double-wrapped in plastic bags. They now live together in sitcom-fashion.


text:
Tag Archives: viola
Four Views of Berlin
Posted by Edward McCue in Audio Recordings, Bach's Successors, Music Education, Other Artists, World View
acoustics, Berlin, Berlin Cathedral, Berlin Wall, Berlin Wall Memorial, Berliner Schloss, Bundestag, Carl Philipp Emanuel Bach, cello, David Chipperfield, Erich Honecker, Frank Reinecke, Friedrich August Stüler, German Democratic Republic, Hackesche Höfe, Jugendstil, Konzerthaus, landmine, Leipzig, Marzahn, Michael Dervan, Morton Feldman, Museum der Gegenwart, Musikgymnasium Carl-Philipp-Emanuel-Bach, Nefertiti, Neues Museum, Peter Eisenman, Philharmonie, Prenzlauer Berg, rabbit, Schwerin, Spree, Stasi, Stefan Fehlandt, Stephan Forck, The Irish Times, Tim Vogler, viola, violin, violoncello, Vogler Quartet
The Berlin Cathedral and Television Tower
When Frank Reinecke calls to pick me up, it is, he says, a kind of homecoming. Entirely by accident I am staying in the former East Berlin, around the corner from the Musikgymnasium Carl-Philipp-Emanuel-Bach on Brunnenstraße, where he and his friends all went to school.
Our conversation plunges us back into the heart of a divided Germany, when East Berlin was notorious for its grayness, and the notorious Berlin Wall was within a stone's throw. A childhood game was to see how many times anyone could run up and down to touch it before the police would come to shoo them away. The nearby former Bernauer Straße U-Bahn station has become the Berlin Wall Memorial, a small section chillingly preserved with watchtower, another area with tunnel paths marked out in slabs on the ground – escape tunnels, and also a Stasi tunnel for secreting spies to the West. Later, as we walk past a building opposite the Bundestag, he tells of editing a recording in its basement and commenting on how remarkably quiet it was – the wall ran just outside the window. Yes, said the sound engineer, except when a rabbit hits a landmine.
I had asked each member of the Vogler Quartet to reveal their favorite cultural haunts, museums, galleries, buildings – or their least-favorite one – and what they missed from the East Berlin they grew up in. That last was the easiest. Nothing, apart from the moments of special camaraderie in a culture that eschewed materialism. They all remember the excitement of their first experience of the lights and smells of the West on the way to a music competition, and their conflict about playing before Erich Honecker in the dying days of the East German state. They sent a letter of protest about conditions in the country, which resulted in a serious security encounter.
I spent most time with Frank Reinecke and the quartet's leader Tim Vogler, with Reinecke venturing out to the public park that was Tempelhof airport, and cooling down on what had been the hottest day of the year in Peter Eisenman's controversial Memorial to the Murdered Jews of Europe, a forest of tall concrete slabs, like a maze in which you can't get lost. Vogler heads first to Oderberger Straße in Prenzlauer Berg, where his parents lived before he was born, and where they again live now. It's a handsome, quiet street, lined with international eateries (his favorite is a Greek restaurant). At the northern end there's a second-hand shop, VEBorange, specializing in objects from the German Democratic Republic. Its window display has dolls wearing the scarves and uniforms of youth organizations, a lurid orange hand-mixer, toys, lamps and knick-knacks, some of them long enough in the tooth to be back in fashion.
Like Reinecke, who headed south to Leipzig after the breakup of his first marriage, Vogler has also moved, north to Schwerin, but keeps an apartment in Berlin, close to his children and ex-wife. He presents a nature-loving front, pointing out that in Schwerin he has three lakes to choose from for his morning swim.
We pass the celebrated apartment complexes of the Karl-Marx-Allee, an architectural statement of socialist grandeur. What are they like to live in? Pretty good, he says, they even have bidets, and points to some generous penthouse balconies. Time doesn't permit a visit to the Gärten der Welt (Gardens Of the World) in Marzahn, or that suburb's notorious vast housing estates from the 1970s and 1980s.The green Vogler has made up his mind about the threats facing the longest surviving stretch of the wall, on the Mühlenstraße in Friedrichshain. He wants it to go. It blocks the view of Berlin's great waterway, the river Spree, which he finds unforgivable.
Every member of the quartet mentions the city's Museuminsel (Museum Island). It's Vogler who takes me there, to the Neues Museum, with its colored bust of Queen Nefertiti, serene and magnetically attractive. He's not just in awe of the art, but of the building, which was allowed to lie in ruins until its 2009 reopening in a restoration by David Chipperfield, which juxtaposes twenty-first-century modernity and the remnants of Friedrich August Stüler's mid-nineteenth-century original with moving starkness. Vogler's bête noire is the pink Alexa Shopping Center at Alexanderplatz.
Berlin's Konzerthaus, where the Voglers have their own series, is a glorious restoration of the latter days of the German Democratic Republic. The Voglers play in the Kleiner Saal, which looks big from the stage, but, says Tim Vogler, feels small when it is full. It's not the easiest of halls to play in, he says, the sound being dry enough that players definitely have to work that bit harder at projecting. They all seem to prefer the Konzerthaus to the in-the-round layout of the Philharmonie, home of the Berlin Philharmonic.
Viola-player Stefan Fehlandt takes me to the Hackesche Höfe, a network of arts and crafts courtyards with restaurants, its Jugendstil glazed brickwork glowing in gorgeously saturated colors, and to the Hamburger Bahnhof, a Renaissance-style 1847 railway station that's been a museum for more than a century. As the Museum der Gegenwart, it's now visited for Joseph Beuys and Andy Warhol, and its exterior is lit by a neon installation by Dan Flavin. It's also where the Voglers took the four-hour-plus plunge into the micro-gestural world of Morton Feldman's Second String Quartet. They never did manage to have a full run-through in advance, says Fehlandt, and the much-debated topic of loo-breaks was never an issue.
Cellist Stephan Forck is in awe of Berlin's main railway station, the multi-level Hauptbahnhof, which centralized north/south and east/west connections in 2006, and simplified his life when he had to commute to teach in Stuttgart. It has a kind of efficient modern calm that you never find, say, in the major stations in London.
At the other end of the scale, he loathes the boxy information center on the building site where the demolished East German Palast der Republik (Palace of the Republic) is being replaced by a rebuild of the Berliner Stadtschloss, the royal palace that stood there until 1950. It was with Forck, a bishop's son, that I got to see the cross that – horror of horrors to the East German authorities – the play of light creates on the sphere of the Television Tower they built in 1969. Could this have been mere coincidence?
Michael Dervan – The Irish Times
Thru-Line on the G-Train
Posted by Edward McCue in Bach's Works, Interviews, Other Artists
accordion, Alex Ross, cello, Jim Holt, Make Music New York, Make Music Winter, MATA, New York, New Yorker, subway, television, The Knights, Twilight Zone, viola, violin, violoncello
For this year's Make Music Winter, Jim Holt is back with another version of his subway piece Thru-Line, which New Yorker critic Alex Ross calls "deeply charming." If you play violin, viola, accordion, or any other portable instrument, Make Music New York (MMNY) is still accepting participants: click here to join!
MMNY spoke with Jim about the project:
What will G-train riders experience on 21 December 2012?
If you are riding in the front car of any G-train (from any station) between 2-3pm, you will experience what might feel like an episode of the Twilight Zone. Imagine riding the train and suddenly a musician begins playing Bach; it's not a big deal. But what if that musician stepped OFF the train at the next stop and a different musician stepped ON and began playing the same piece? And then this happens over and over again at every single station – one musician leaves, one arrives, always playing the same unforgettable music.
Why the G line?
One of the reasons I chose the F-line last year is because it went through Queens, Manhattan, and Brooklyn. We wanted to switch up the subway line this year but also wanted to keep Queens and Brooklyn in the mix. The G-line is one of the few lines that operates in both Queens and Brooklyn.
How did you come up with the idea?
This is actually a variation of a Make Music Winter project from last year, which I did with The Knights and MATA. In 2011 we had musicians performing this same Bach piece on nearly all of the Brooklyn-bound F-train stations. The idea was that the musicians would stay in place and the public would discover them at each station. This year we are flipping it – we will come to the public rather than the other way around.
What will it be like from the musicians' perspective?
The musicians will need to be mobile in a way that they probably never have been before. Over the course of an hour, they'll only travel the distance of five stations. They will be stepping on the train, playing Bach until the next station, then stepping off the train and waiting for the next one.
What did the musicians last year think?
All of them had a great time! A few of them shared some great stories – one musician commented on how the train conductors had "the best seat" and that they had never seen them so happy. Another musician ended up striking up a conversation with the father of a Los Angeles Laker! One of my favorites though was someone who told one of our musicians at the end of the hour, "Over already? I've heard one of you every stop from way up in Queens!"
– Make Music New York
The New Brandenburg Project at Boulder's Chautauqua
Posted by Edward McCue in Bach's Predecessors, Bach's Successors, Bach's Works, Other Artists
A Brandenburg Autumn, Aaron Grad, Aaron Jay Kernis, aria, bass, Berlin, Brandenburg, Brandenburg Concertos, Carl Philipp Emanuel Bach, cello, chant, Charlottenburg, Christopher Theofanidis, Colorado Music Festival, concerto, Concerto with Echoes, dance, English horn, English Suites, Frederick the Great, harpsichord, horn, Michael Christie, Muse, New Brandenburg Project, Nun komm der Heiden Heiland, Orpheus Chamber Orchestra, percussion, Potsdam, ricercar, Stephen Hartke, suite, toccata, trumpet, Veni redemptor gentium, viola
In 2006, the Orpheus Chamber Orchestra began the New Brandenburg Project, an effort to commission six new works inspired by Bach's original Brandenburg Concertos (BWV 1046-51). Under the direction of Michael Christie, the Colorado Music Festival Chamber Orchestra will present Bach's Brandenburg Concertos nos. 1, 3 and 6 (BWV 1046, 1048 and 1051), along with three works from the New Brandenburg Project; A Brandenburg Autumn by Stephen Hartke, Muse by Christopher Theofanidis, and Concerto with Echoes by Aaron Jay Kernis; on Sunday, 29 July 2012 at 7:30pm at Chautauqua Auditorium in Boulder.
A Brandenburg Autumn was composed in response to a request from Orpheus for a new work using the same instrumentation as the first of Bach's Brandenburg Concertos. This had, in fact, long been a particular project that I had wanted to pursue, and, as fortune would have it, I found myself in Germany as a Fellow at the American Academy in Berlin at the very time I had to compose it. Thus the piece emerged as something of a musical diary of my impressions of living not far from the palace of Charlottenburg where the dedicatee of Bach's Brandenburgs himself lived.
The area of Brandenburg itself is, in fact, a land of lakes, and my studio was quite close to the Wannsee, the lake that borders on western Berlin as well as Potsdam, the capital of Brandenburg. The first movement – Nocturne: Barcarolle – is a musical sketch of the lake, even incorporating suggestions of the sound of halyards striking against the masts of the sailboats moored at a nearby marina.
The second movement is a more playful piece – Scherzo: Colloquy – about conversation and, more particularly, the speech rhythms and dynamic of a dinner table discussion among scholars. Against a background of polite expectation, a proposition is set forth, then elaborated, questioned perhaps, even misunderstood, and so forth. Other ideas arise, some only tangentially related to the topic, and each in a different mode of speech. In the end there has been some transformation but of an inconclusive sort and the underlying politeness of the encounter prevails by quietly drawing a halt to the proceedings (coffee is served in the next room?)
The third movement – Sarabande: Palaces – is the most autumnal of the movements, being very much about my strolling through the parks of Potsdam admiring the many Hohenzollern palaces and other buildings there. It is all very beautiful, especially that time of year with the trees changing color and the sky dark and feeling so very close. It was hard not to think about Bach coming here to visit his son Carl Philipp Emanuel, who was working at court, and, in the end, the movement came to have a few more overt references to the Baroque period. The idea of doing a sarabande came from my regular recreational playing-through of the Bach keyboard suites, in particular the English Suites – my favorite being the one in D minor (BWV 811). The harpsichord textures in this movement, then, spring from those of the Sarabande Double in that suite. A harmonic juxtaposition in the opening seems to have led me to quote a Hohenzollern melody: the theme by Frederick the Great that Bach elaborated in the Musical Offering (BWV 1089).
Lastly, the fourth movement – Rejouissance: Hornpipe – was inspired by a desire to hear three English horns playing in unison fortissimo, and thus it begins, setting off a celebratory dance that I hope is reminiscent in spirit of the more outdoor sort of orchestral pieces of the High Baroque.
Stephen Hartke
Upon hearing the music of Christopher Theofanidis for the first time, one likely will not be surprised that it has been performed more than that of any other living American composer in recent years. His vocabulary is at once sophisticated and guileless; with his affinity for blurred consonances, he conveys the repose of standing in a medieval church in the middle of a modern city.
Much of Theofanidis' music does in fact reference early music and liturgy, so in a sense he and Bach have dipped from the same wellspring. In Muse, the newest contribution to Orpheus' New Brandenburg Project, Theofanidis ruminates on where Bach came from as well as where he arrived. With an instrumentation based on the Brandenburg Concerto no. 3, Muse further subdivides the triplicate string parts and grants the harpsichord an independent and prominent role.
The brisk first movement seems to expand on Bach's own kaleidoscopic prelude style. Theofanidis establishes a dark, neo-Gothic harmonic spectrum of old church modes darting through surprising pivots and chord changes, all whirled together with nearly perpetual motion handed off among the sections. The second movement, marked with the indication to perform it "with a light touch, ornate," is quintessential Theofanidis: note its cascading major scales and arpeggios, nostalgic ornaments, and patient elaboration of material. The third movement explores directly Bach's relationship to the past, specifically the Gregorian chant Veni, redemptor gentium which was adapted into the Bach chorale Nun komm, der Heiden Heiland (BWV 599).
Aaron Grad
The essential element in Bach's Brandenburg Concerto no. 6 that inspired Concerto with Echoes comes from the very first measure: the opening passage with two spiraling solo violas, like identical twins following each other breathlessly through a hall of mirrors. I also had in mind other Bach works that I think of constantly, such as the Ricercare, keyboard Toccatas, and the organ Passacaglia in C minor (BWV 582). The concerto also echoes some of my own recent works, as well as other composers I love who have paid homage to Bach in their music.
Each of the Brandenburg Concertos is exceptional in its use of instruments. This concerto mirrors the sixth by using only violas, cellos and basses, while gradually adding reeds and horns to loop back to the sound world of the first Brandenburg Concerto (and extending it with trumpet and percussion).
The first movement begins with a soft introduction that lays out some of the important building blocks of the concerto's harmony, followed by a fiery, toccata-like virtuosic display. The lines in the movement are constantly mirrored and layered in a maze of sound. The heart of the piece, the slow movement, is essentially a Passacaglia built on slowly moving bass lines, mirrored layers of melody, and open harmonic spaces. Strongly consonant, its harmonies are built in imitative spirals, while the more angular climax uses compressions of the work's opening harmonies. Rather than closing with a faster dance movement, the brief, slow Aria suggests a courtly dance, and is expressive and pensive, ending with a sigh rather than a flourish.
Aaron Jay Kernis
Orpheus Chamber Orchestra – The New Brandenburgs
A French Fantasy for Organ
Posted by Edward McCue in Bach's Predecessors, Bach's Works, Festival Events
Aria in F Major, Boulder Bach Festival, Couperin, d'Anglebert, Dieupart, en ravalement, English Suites, Fantasia in G Major, First Congregational Church, French, French Suites, fugue, Grigny, Johann Nicolaus Forkel, Lüneburg, organ, overture, Overture in B minor, Overture in F Major, Pièce d'orgue, Rick Erickson, suite, viola, violin, violone, Weimar
Bach's biographer Johann Nicolaus Forkel, who was often critical of French music and musicians, judged the French composers whom Bach studied to have been "masters of harmony and fugue." Although he did not list these composers, we know that Bach copied music by Grigny, d'Anglebert and Dieupart and arranged a portion of L'Impériale from Couperin's Les Nations to create the Aria in F Major (BWV 587). Bach's interest in French music is especially evident in his English and French Suites (BWV 806-811 and 812-817) and Overtures (BWV 820 and 831), and French practices can be detected in at least one of his organ works.
Bach's Fantasia in G Major (BWV 572) makes reference to the French style in several ways. The French title, Pièce d'orgue, is given to it in several sources, and its three movements are also titled in French: Très vitement, Gravement, Lentement. It includes a low B pedal note that would have been found only in the extended compass of French organs en ravalement, and the work has a middle section in five voices that appear to correspond to the two violin, two viola and violone instrumentation preferred by French composers for the string orchestra. It is likely that the Fantasia was composed in Weimar, about ten years after Bach had first encountered the French style in Lüneburg.
Boulder Bach Festival music director and organist Rick Erickson will perform the Fantasia in G Major at a Benefit Concert at 6:30pm on 24 May 2012 at First Congregational Church in Boulder.
Posted by Edward McCue in Bach's Works, Festival Events, Video Recordings
acoustics, Alexander Chen, Boulder Bach Festival, cello, frequency, music notation, suite, Suite in G Major, viola, violoncello, Zachary Carrettin
Alexander Chen writes, "Classical notation is convenient and concise code. But visually, it's completely disconnected from any actual physical characteristics of sound. String lengths, on the other hand, are visual representations of the frequencies they produce." Chen has produced a visualization of the prelude from the Suite in G Major (BWV 1007) using techniques described here.
Boulder Bach Festival concertmaster Zachary Carrettin will perform the entire Suite in G Major on viola at a Benefit Concert at 6:30pm on 24 May 2012 at First Congregational Church in Boulder.
The Suites for Violoncello
Posted by Edward McCue in Audio Recordings, Bach's Life, Bach's Works, Festival Events, Organology, Other Artists, Video Recordings
Anna Magdalena Bach, Boulder Bach Festival, Cöthen, cello, da gamba, da spalla, dance, First Congregational Church, La Petite Bande, Ryo Terakado, Sergey Malov, Sigiswald Kuijken, Sonatas and Partitas for Violin, suite, Suite in D Major, Suite in G Major, Suites for Unaccompanied Violoncello, viola, violoncello, violoncello da spalla, Zachary Carrettin
Bach's six Suites for solo violoncello (BWV 1007-12) are among the most frequently performed compositions written for an unaccompanied stringed instrument. Each suite consists of six dance movements, and the entire collection is carefully conceived as a cycle as opposed to an arbitrary series of pieces.
Violoncello da spalla by Dmitry Badiarov
Most likely composed during Bach's Cöthen period, the lack of an autographed manuscript results in uncertainty as to whether the suites were composed before or after the 1720 Sonatas and Partitas for solo violin (BWV 1001-6), and the vagueness of the early use of the term "violoncello" ("small large viol") does not suggest whether the pieces were to be played on an instrument held da gamba (between the legs) or da spalla (on the shoulder).
Bach's second wife, Anna Magdalena, prepared a copy of the suites and indicated that the sixth was to be performed on an instrument with a fifth string tuned a perfect fifth above the top string of our modern cello. Cellists wishing to play this Suite in D Major (BWV 1012) on a four-string cello must employ high positions to execute many of the notes, while performers of period instruments can choose either a five-string Baroque cello held da gamba or a da spalla form of the instrument.
Sigiswald Kuijken has recorded all six suites on the violoncello da spalla, as has Ryo Terakado, also of La Petite Bande. Sergey Malov, violinist, violist and relative newcomer to the violoncello da spalla, offers an online performance of the gigue from the Suite in G Major (BWV 1007).


Borch-Jacobsen began teaching at the department of psychoanalysis at Vincennes University in Paris in 1981. In 1986 he emigrated to the United States. Since then, he holds the position of a professor of French and comparative literature at the University of Washington in Seattle.
src="/web/img/loading.gif" data-src="/web/show-photo.jpg?id=1917764&cache=false" alt="Other photo of Mikkel Borch-Jacobsen" class="gallery__img" height="167"
src="/web/img/loading.gif" data-src="/web/show-photo.jpg?id=1917766&cache=false" alt="Other photo of Mikkel Borch-Jacobsen" class="gallery__img" height="167"
src="/web/img/loading.gif" data-src="/web/show-photo.jpg?id=1917775&cache=false" alt="Other photo of Mikkel Borch-Jacobsen" class="gallery__img" height="167"
data-src="/web/show-photo.jpg?id=1917764&cache=false" src="" alt="" class="gallery-slider__img" height="495"
data-src="/web/show-photo.jpg?id=1917766&cache=false" src="" alt="" class="gallery-slider__img" height="495"
data-src="/web/show-photo.jpg?id=1917775&cache=false" src="" alt="" class="gallery-slider__img" height="495"
Just what is the subject in Freud? The author draws on a wide range of French critical thought to argue that the subject is always fundamentally identification, in an even more radical sense than has previously been postulated. Rigorously examining the texts of Freud, he arrives at compelling rereadings of familiar concepts, concluding with a disturbing new analysis of the social bond.
The eight essays collected here extend the author's re-evaluation of the philosophical underpinnings of psychoanalysis and thereby develop his arguments for increased attention to the role of affect - of the emotional tie, in our conceptions of the psychoanalytic subject. The author analyses the political and ethical implications of Freud's work in the first part 'Freudian Politics'. In the second section, 'From Psychoanalysis to Hypnosis', he shows what might be gained by reinstating hypnosis as central to psychoanalytic questioning. The third section, 'The Unconscious and Philosophy', examines Freud's relation to a tradition of philosophical interpretation. The author devotes special attention to where the unconscious fits, how it comes to be a mode of explanation, within such an interpretation. This book will appeal to anyone interested in the relations between philosophy and literature and in psychoanalytic theory generally. It may also be of interest to practising analysts.
Remembering Anna O. offers a devastating examination of the very foundations of psychoanalytic theory and practice, which was born with the publication of Breuer and Freud's Studies on Hysteria in 1895. Breuer described the case of Anna O., a young woman afflicted with a severe hysteria whom he had cured of her symptoms by having her recount under hypnosis the traumatic events that precipitated her illness. Drawing on the most recent Freud scholarship and on long-secret documents, Borch-Jacobsen demonstrates, however, that Anna O. (Bertha Pappenheim) was never cured by Breuer's "talking cure" and that both Breuer and Freud knowingly falsified the historical record. Borch-Jacobsen points out the numerous inconsistencies in Breuer's account that suggests that Anna O.'s symptoms were simulated to meet Breuer's theoretical expectations and that her famed "reminiscences" were in fact fictitious memories induced by Breuer in the course of a hypnotic treatment.
A perfect gift for the psychoanalyst in your life and which will also be of interest to anyone concerned with debunking any illusion of the past about them. This book will be the pride and joy of the psychoanalyst for many years to come.
Why do "maladies of the soul" such as hysteria, anxiety disorders, or depression wax and wane over time? Through a study of the history of psychiatry, Mikkel Borch-Jacobsen provocatively argues that most mental illnesses are not, in fact, diseases but the product of varying expectations shared and negotiated by therapists and patients. With a series of fascinating historical vignettes, stretching from Freud's creation of false memories of sexual abuse in his early hysterical patients to today's promotion and marketing of depression by drug companies, Making Minds and Madness offers a powerful critique of all the theories, such as psychoanalysis and biomedical psychiatry, that claim to discover facts about the human psyche while, in reality, producing them. Borch-Jacobsen proposes such objectivizing approaches should be abandoned in favor of a constructionist and relativist psychology that recognizes the artifactual and interactive character of psychic productions instead of attempting to deny or control it.
Mikkel Borch-Jacobsen is a Danish-born American educator and author. He holds the position of professor of comparative literature and French at the University of Washington in Seattle.
Mikkel Borch-Jacobsen was born in 1951, in Denmark.
Borch-Jacobsen studied philosophy with Philippe Lacoue-Labarthe and Jean-Luc Nancy, two philosophers close in thought to, and in dialogue with, Jacques Derrida and Jacques Lacan.
In 1981, he obtained his doctorate from the University of Strasbourg.
From his base as professor of French at the University of Washington in Seattle, Mikkel Borch-Jacobsen has written, in French, many works on the history and philosophy of psychiatry, psychoanalysis and hypnosis. His work includes such books as Le Sujet freudien ("The Freudian Subject"), Hypnoses, Hypnose et psychanalyse ("Hypnosis and psychoanalysis"), Lacan, le maître absolu ("Lacan, the absolute master"), Le lien affectif ("The Emotional Tie"), Souvenirs d'Anna O.: une mystification centenaire ("Memoirs of Anna O.: A 100-year old mystery"), Folies à plusieurs : de l'hystérie à la dépression ("Many madnesses: from hysteria to depression"), Le Livre noir de la psychanalyse ("The Black Book of psychoanalysis"), and Le dossier Freud. Enquête sur l'histoire de la psychoanalyse ("Freud's dossier. An inquiry on the history of psychoanalysis").
Borch-Jacobsen is known for his positions in virulent debates about psychoanalysis – called the Freud Wars – especially with regard to his 2005 publication of Le Livre noir de la psychanalyse ("The Black Book of Psychoanalysis").


text:
Good Riddance/Ill Repute is een split-ep van de hardcore punk-bands Good Riddance en Ill Repute. Het album werd in 1996 uitgegeven door het label It's Alive Records. De nummers van Good Riddance zijn oorspronkelijk twee van de zeven demo's die zijn opgenomen tijdens de opnamesessies voor het studioalbum A Comprehensive Guide to Moderne Rebellion. Deze zeven demo's zijn echter niet op het album te horen.

Nummers
Kant A (Good Riddance)
 "Lame Duck Arsenal" - 2:15
 "Off the Wagon" - 2:39

Kant B (Ill Repute)
<li> "Bleed"
<li> "Roots"

Muzikanten
Good Riddance
 Russ Rankin - zang
 Luke Pabich - gitaar
 Chuck Platt - basgitaar
 Sean Sellers - drums

Muziekalbum van Good Riddance
Punkalbum
Extended play uit 1996


text:
Schlegels frankolijn (Campocolinus schlegelii; synoniemen: Peliperdix schlegelii en Francolinus schlegelii) is een vogel uit de familie fazantachtigen (Phasianidae). De wetenschappelijke naam van de soort is voor het eerst geldig gepubliceerd in 1863 door Theodor von Heuglin en als eerbetoon vernoemd naar Hermann Schlegel.

Voorkomen
De soort komt voor in het midden van Afrika, met name van Kameroen tot Soedan.

Beschermingsstatus
Op de Rode Lijst van de IUCN heeft de soort de status veilig.

Phasianidae
Dier uit het Afrotropisch gebied
IUCN-status niet bedreigd


Adult size Cricket Bat for Hard Tennis Ball. This large size wooden bat is crafted from Kashmir willow and is made to play with hard tennis balls. The long handle is equipped with rubber grip.
Size: Large. Full Sized Bat for Adults.
Note: The product may have some variation from the picture.
This item in Outdoor Indian Games category was first added to our catalog on 02-22-2016.
Buy Adult Size Cricket Bat for Hard Tennis Ball, sold & shipped by Gandhi Appliances where you can shop online for Indian Mixie, Wet Grinder, Pressure Cooker, Mixer Blender & Sports Store.
This Outdoor collection has been tagged as Free Shipping Indian Cricket Bat, Outdoor Game, Buy Cricket Bat Online.


UM true freshman defensive end Chad Thomas, a 6-5, 265-pound star recruit out of Miami Booker T. Washington High, stayed home this weekend because of "muscle spasms,'' according to UM.
When Thomas was spotted at a Booker T. football game Friday night, UM's Twitter world erupted, wondering why he didn't travel to the game. Thomas has two tackles in three games.
UM noted Friday night after the frenzy that Thomas wasn't suspended.
WQAM 560 AM reported the Thomas' spasms were in his back.
Eichorst is the Nebraska athletic director who unexpectedly bolted UM just before the weekend in early October 2012 that the Hurricanes were about to meet Notre Dame at Chicago's Soldier Field. He almost immediately was named the Cornhuskers' 14th director of athletics — after replacing former UM athletic director Kirby Hocutt (now at Texas Tech) in April 2011.
Eichorst accepted a five-year contract to succeed former Nebraska AD and legendary football coach Tom Osborne, who was honored Saturday in celebration of the 20th anniversary of the Huskers' national title team that defeated Miami in the Orange Bowl.
Another UM-Nebraska connection is current UM athletic director Blake James. He worked at Nebraska as an athletic development officer in 1997 and '98.
The Golden Cane Society, consisting of the most prolific donors of the Hurricane Club, took their annual football trip this weekend to Nebraska.
UM chartered a plane for 150 people — 75 Golden Canes and their guests, said UM associate athletic director for development Jesse Marks, who organized the trip.
A UM spokesman said UM sold 3,850 tickets to the Nebraska game, though more UM fans were expected to buy tickets from other outlets.
▪ Paul Kelly, a graduate transfer, spent the past two seasons as the long snapper for UM, but now is the backup snapper for Nebraska. Kelly is from Davie and graduated from Southwest Ranches Archbishop McCarthy.
▪ Miami took it to the end zone on its first possession for the third consecutive week. In each game the Hurricanes have scored within five minutes of the opening kickoff. Against Nebraska, the Hurricanes' first drive went 75 yards on nine plays, lasting 4 minutes 34 seconds.
▪ For the fourth consecutive game to start his career, Miami freshman quarterback Brad Kaaya threw an interception. With the Hurricanes driving into Nebraska territory midway through the first quarter, Nebraska junior linebacker David Santos picked Kaaya off at the Husker 5-yard line.
▪ Once again, Kaaya threw for a touchdown pass when he connected with senior tight end Clive Walford for a 6-yard strike early in the second quarter. It was the freshman's eighth touchdown pass of the year. He has thrown at least one touchdown pass in every game.
▪ Throughout the first half, Kaaya had some troubles getting plays off on time in front of the largest crowd in Nebraska history. The Hurricanes were twice flagged for delay-of-game penalties. On two other occasions, Miami had to burn timeouts to avoid a similar fate.


text:
'Marriage Story' deals with divorce but affirms commitment
'Underwater' ends up all wet
'1917' is a great movie about the Great War
In 'Arise,' gamers move through times of old man's life
Idea of remorse takes a hit in stunning 'The Irishman'
Writer's Southern roots inspire 'radical faith' element to her fiction
'The Current War' puts charge into race for electric power
Benedict Cumberbatch stars in scene from the movie "The Current War: Director's Cut." (CNS photo/101 Studios)
By John Mulderig • Catholic News Service • Posted October 29, 2019
NEW YORK (CNS) — It's inventor Thomas Edison in one corner and industrialist George Westinghouse in the other in the intriguing historical drama "The Current War: Director's Cut" (101 Studios).
Some of the language employed in this recounting of the bitter contest that saw the two titans racing to spread electricity across the United States in the last decades of the 19th century makes it inappropriate for kids. But its educational value may convince many parents that it's suitable for mature teens.
Benedict Cumberbatch plays Edison. Already a popular idol for his many previous breakthroughs, he's determined to replace the gas lamp with the lightbulb and believes Westinghouse (Michael Shannon) is merely stealing his ideas. Yet Westinghouse is championing alternating current, a far more efficient means of conveying electricity across long distances than Edison's direct current.
Caught between the rival sides is eccentric Serbian-American tech whiz Nikola Tesla (Nicholas Hoult). A brilliant misfit, Tesla works briefly for Edison before setting out on his own and eventually allying himself with Westinghouse. Edison, for his part, has the significant support of banker J.P. Morgan (Matthew Macfadyen) and the devoted service of his young secretary, Samuel Insull (Tom Holland).
Along with the paradox of a genius who is stubbornly in the wrong on one point, Edison, as portrayed here, presents the spectacle of an upright person driven to do what he knows is wrong.
Early scenes have him turning down a lucrative deal to develop munitions for the military on the grounds that he will not invent devices to kill people. Yet his determination to prove to the public that AC is dangerous — something he himself doesn't really believe — later prompts him to participate in the design of the electric chair, provided it will be powered by a Westinghouse generator.
Edison, moreover, although deeply bound to his wife, Mary (Tuppence Middleton), and their two children, is so preoccupied by his work that he tends to neglect them. Westinghouse is more attentive to his clever spouse, Marguerite (Katherine Waterston).
Director Alfonso Gomez-Rejon's film does occasionally drag. But, overall, the high stakes, a sophisticated exploration of moral themes, the colorful period settings and impressive performances, especially from Cumberbatch, make this an appealing retrospective.
The film contains brief gore, a few profanities, several mild oaths and a crass term. The Catholic News Service classification is A-III — adults. The Motion Picture Association of America rating is PG-13 — parents strongly cautioned. Some material may be inappropriate for children under 13.
PREVIOUS: Astronaut's earthbound life veers off course in 'Lucy in the Sky'
NEXT: 'By the Grace of God' explores clerical abuse with honesty, intelligence


text:
New Exhibition in Birmingham Explores our Relationship With Nature
GemmaKH
Published on February 10th 2020
by GemmaKH. All rights reserved
Love plants? So do we.
Download the app to see more photos from the Candide community.
If you had the opportunity to write a letter to nature, what would you say? Ikon Gallery's brand new exhibition explores exactly that and our relationship with the natural world.
The major showcase exemplifies Birmingham-born John Newling's strong environmental proposition, while pushing the boundaries of what defines art. In March, visitors are invited to gain an exclusive insight into the artist's concerns for our environment and the implications our actions are having on it.
Director of the Ikon Gallery, Jonathan Watkins says: 'Nature is connected to everything. Art contributes other voices to a global conversation, but it certainly is not or should not be a privileged one.'
Download Candide to your phone to get your daily gardening news
John Newling, Dear Nature (2018), Courtesy the artist.
At the heart of the exhibition is Dear Nature – a book published in 2018 – comprising of letters John wrote to nature every day for 81 days. Alongside his letters, audiences are treated to 'a miracle of life' – photographs of a growing flax seedling, cultivated in John's own studio.
Earlier in his career, the 67-year-old worked with flax farmers in France who provided him with thousands of seeds sourced from India.
'I came [home] and wanted to experience what they experience,' he says, 'so I converted my garden into a flax field and planted them, then studied them.
'While I was doing that, I began to write the letters. With each letter, I pulled up a plant from the garden, pressed it and [put it in the book], so what you see is 81 days of a flax plant growing,' he adds.
Common Flax
John explains that for almost three months he was 'locked into writing the letters' and the first thing he wrote was an apology to nature. But why 81 days? 'That [applies] to a lot of my work,' he claims, 'there's mathematics in a lot of it and nine by nine is 81, plus when I reached the last letter it felt like I had covered all the thoughts I had been having for years and the right time to stop.'
John is an artist who belongs to a generation that grew up with Conceptual Art, Land Art and Arte Povera in the 1960s. During his time in America in 1985, as the first recipient of a Fulbright fellowship in visual arts, he produced works of art in hotels, swimming pools, burnt out cars and on the streets of Los Angeles, San Francisco, Washington DC and New York. This experience marked the beginning of an interest in the meaning of 'place' for John.
'I was trying to work out a way in which art can spread from the gallery into other spaces, where it has a different set of relationships to the space [it's in] and the people experiencing it,' he says.
'I'm interested in the archeology and geology of place and how people refer to it. An example would be how we associate place with time. In a garden you are forced to slow down because that's what nature does. Particularly in forests and walking through nature, your heartbeat improves and your whole sense of being is much more connected to the [earth].'
Living in a three storey house consisting of a lower floor studio space parallel to the garden, curiosity of the relationship between indoor and outdoor and the idea of repurposing waste has been constant for the gardener come artist.
John Newling, Waste Land Soil (2018), Mixed media, Courtesy the artist.
In 2018, John produced Waste Land Soil which involved him shredding several hundred copies of T. S. Eliot's poem The Waste Land, combined with coffee grounds and other kitchen scraps to make a soil that can sustain vegetative growth – thus the opposite of waste. In a reverse process, he used the soil to make paper for his Eliot's Note Books (2017), 434 paper sheets reflecting the 434 lines in Eliot's poem that, if placed in the earth, would grow and sustain life.
A further work Soil Books (2019), involves the artist creating books made with soil from his garden to embody the idea of the Anthropocene – our current geological age in which human impact is evident. The Soil Books are sculptures, derived from John's everyday experience of walking from his house into his back garden, picking up leaves along the way. The result is book-like stacks of panels of processed soil with the leaves, pressed and gilded, on the surfaces which are then stained with watercolour. The order of the books is crucial, indicating seasonal change.
John Newling, Eliot's Note Books (2017), Mixed media, Courtesy the artist.
John believes more people should consider our environmental impact, something which he hopes to encourage through his work.
'We need to slow down and enjoy the wonder of [the natural world]. If we forget about that and plough on with arrogance and concede, then we are in terrible trouble. We have to change.'
He hopes visitors to his exhibition will leave with a greater sense of connectedness to the earth and human inventiveness as well as having seen extraordinary things not seen before.
Meanwhile, Jonathan Watkins urges gardeners among others to visit the exhibition.
'John is one of them,' he exclaims, 'to paraphrase Voltaire, I like the way John cultivates his own garden – literally! He is refreshingly unpretentious with his ecological proposition.'
This content is hosted by YouTube
By showing this content you agree to the terms & conditions of youtube.com.
To see YouTube videos without this popup please update your cookie preferences.
Watch Dear Nature by John Newling on YouTube
The exhibition extends beyond the gallery space, with readings of Dear Nature resounding throughout Ikon's staircase and further works sited nearby in the cherry trees in Oozells Square, Brindleyplace.
Ikon is holding a live reading of Dear Nature by John Newling as part of the Launch Night. The exhibition will run from 4 March – 31 May 2020. Find out more.
Valentine's Day: Best Houseplants to Gift
Candide_TV
From the allotment
Renovating Overgrown Apple and Pear Trees
If your apple or pear tree hasn't been pruned for a while, then you may need to do renovating cuts.
A Quick Guide to the Allotment Year
Plant: Save stacks on shop-bought garlic by sowing your own bulbs. Break into cloves, make a shallow hole and drop in a clove...
allotmentalice


text:
RYE BROOK-PORT CHESTER
Port Chester: Man injured escaping apartment fire
Flames broke out at 45 Traverse Ave.
PORT CHESTER - A man was injured escaping a fire that destroyed an apartment in Port Chester early Wednesday, police said.
Flames broke out in an apartment on the fifth floor of the seven-story building at 45 Traverse Ave. in the village around 1:45 a.m., Port Chester police said. A man was taken to Greenwich Hospital after injuring his arm breaking a window to escape the apartment that was on fire, police said.
Caroline Sherwin, a Red Cross spokeswoman, said one apartment was destroyed and another apartment had water damage. Red Cross volunteers were called to the scene around 4 a.m., she said, and two families were displaced by the fire.
Fire officials could not immediately be reached for comment.