text:
Interview 48. – Ian Rowland
Ian Rowland (The Mind Man) helps people and companies to be more successful. He is a freelance writer and corporate speaker based in London. Ian is also a Member of the Inner Magic Circle, and an expert on cold reading and related persuasion psychology.
Twitter: @IanRowland1
Website: www.ianrowland.com
Describe something that has recently amazed you and how it made you feel.
I see amazing things around me all the time. Mostly, I suppose these 'amazing' things fall into two categories. One is nature and the outdoors, beautiful scenery and especially the magic of early morning light, sounds and scents. When I go for early morning walks through woodlands and greenery it always makes me feel that there's an enduring enchantment about life and nature, and that anything is possible.
The second category covers all the incredibly talented people I know and the things they can do. Only the other week I went to see the latest show by 'Hermetic Arts', the production company formed by my friends Chris Lince and Carrie Marx. The show, called 'April', was an incredible theatrical production, great fun yet also impossibly clever and intriguing, and Carrie's performance was just sensational — the equal of anything else I've ever seen in live theatre. Not long after that I saw guitarist Ana Vidovic in concert. Her technique is beyond amazing and to see her playing Bach, for example, really encourages me to believe there are no limits.
On a more personal level, I've just completed an amazing 18 months in my own life when I finally learned how to overcome an addiction (sugar) that had dogged me all my adult life, lost over 36kg in weight and got fit, running 20km per week. This could well be the most amazing experience of my life. I learned so much and it made me feel that I could achieve almost anything.
How would you personally define wonder, awe and curiosity? And how do they relate to each other?
I don't know. I think you'd have to ask a philosopher. It seems to me that wonder is the joy of the gap between what we experience and what we understand.
Someone once said that all of science comes down to those moments when someone notices something and says, "Oh, that's odd… I wonder why that happens?" I think something similar happens in the creative and performing arts. Most creative people say they value the time they spend just 'playing around', which occasionally leads to an idea or theme that they think is worth working on and developing.
Curiosity is the intention to follow that initial sense of wonder and see where it leads, what it will reveal and teach us.
What inspires you to be creative? Do you have any 'rituals' or an environment that aids your creativity?
I don't regard myself as creative so I can't really give you an answer.
What do you love about magic?
In my view, it's the ultimate performing art. A good magician has to look good, have good stage craft, know how to write a script and deliver it well, be creative in terms of coming up with material and presentations, be likeable and (in most cases) at least occasionally funny or humorous, engage with the audience, involve and work with members of the audience and, on top of all that, perform whatever secret stuff is involved in creating the 'impossible' experience, the moment of wonder. The deception has to be achieved in real time, with no second chances or re-takes.
This is a very tough challenge, or combination of challenges, and there are very few people who can do it all and do it well. This is why I find it so much more satisfying to watch good magic performed well than I do to watch almost any other kind of performing art. I have great admiration for all performers, including singers, comedians and variety acts, but it still seems to me that the magician faces the greatest combined set of challenges of them all.
The other thing I have always loved about magic is the ingenuity involved. Most magicians develop a 'twin track' mode of thinking. It starts with the relationship between the effect (what the observer perceives) and the method (what's actually going on). But you can extrapolate from this to many other aspects of life, such as the way someone behaves and the underlying emotional history that leads to that behaviour.
This is why I think most magicians develop very flexible, agile minds. 'Lateral thinking' comes very naturally to us because it's the essence of creative deception. It's only by being able to think in unusual ways that we can devise the methods we use.
What do you think hinders an audience from experiencing wonder when watching a magician?
Magic leads to wonder, methods lead to knowledge. So anything in a magical performance that acknowledges the method, or even that a method is involved, detracts from the wonder.
Where do you think our sense of wonder comes from and what can we do to cultivate it?
I have to start from what I said before: wonder is the joy of the gap between what we experience and what we understand. If this is the case, then cultivating a sense of wonder would involve two steps.
The first is to be open to experiences, especially new experiences, rather than remaining inside the prison of the known, the safe and the familiar. Without fresh experience there can never be fresh wonder.
The second step would be to focus on, and to celebrate, what we don't understand or can't fully account for. In history, there have been people who have shied away from the unknown, regarding it as or a threat to their own power and authority. But others were attracted to the unknown and fascinated by it, which led to all the amazing discoveries we've made. This is how we created the incredible world of magic technology that we are all currently privileged to enjoy.
Tell me about Ian Cards (www.iancards.com). How did you start making them and what's the fascination for you?
Everyone knows about origami: folding paper into shapes and patterns. Kirigami is the same except it involves preliminary slits and cuts as well as folds. A puzzle enthusiast and genius called Angus Lavery was the first to think of kirigami with playing cards. He pioneered the idea and came up with an amazing series of designs. I was lucky enough to be taught the basic principles by him and I just took it from there. I was fascinated by this very limited 'canvas' and what might be possible to achieve within it.
I don't have any skill or talent for it except clumsily trying 99 ideas that don't work and go nowhere before blindly stumbling across one idea that might work. For me, the fascination stems from these happy, fluke discoveries of what's possible.
You literally wrote the book on Cold Reading, how deep can you go with "reading" someone's mind and have you had any scary moments?
Thank you, but I think it's fairer to say I wrote a book on cold reading. There are many others, some of which may be considered better than mine depending on each reader's personal preferences.
There aren't really any limits to cold reading. You can tell people about almost any aspect of their life in considerable detail. This is necessarily the case because of how cold reading works: you provide the words but the client provides the meaning or significance. So there is no limit except the client's own awareness of their own life, feelings and potential.
I haven't had any scary moments and, I may be missing something, but I don't think cold reading has anything to do with scary moments. But in a broader sense, I don't fear anything anyway, so nothing 'scares' me as such.
Recently you told me you were a "recovering skeptic". Can you explain what you mean by that? Are there parts of the skeptic movement that frustrate you?
There was a chapter in my life when I was drawn to the skeptical community and wanted to be part of it. I felt it was doing important work, combatting pseudo-science and so on. Over a period of time, I came to feel that their views and mine didn't really align, and that most of the people I'd met within that community were just as irrational as the people they were keen to criticise.
I was also filled with a sense of futility. Michael Weber put it very well when he said, 'For every TV show debunking something, there are two more rebunking it.' I remember a time when I'd just returned from a big skeptics conference and was feeling inspired by all the talks and lectures. Then I opened a supposed 'quality' broadsheet newspaper and saw a lengthy article, splashed across two full pages, about how companies could use graphology as a useful recruitment tool. And we still have astrology columns in newspapers.
The fact that people are still having debates about astrology, ESP, assorted gods and related emotional trinkets should be a clue that whatever the skeptical community thinks it's doing, it isn't making a great deal of progress and perhaps ought to change its strategy. But this never happens. They're still locked into 'us v. them' thinking and flawed debates between black and white. I think that if someone asks the question, 'Do psychic powers exist?', they're fundamentally missing the point and haven't a clue what they're talking about. However, these are unpopular opinions and probably not very well considered. So these days I just keep quiet and keep my distance.
Interview 47. – Maria Cork
Interview 49. – Neil Kelso
One thought on "Interview 48. – Ian Rowland"
Pingback: Jonny Mellor – rapper, writer, church leader (#91) – Words on Wonder


Command & Conquer Red Alert 2 NEUWARE UK Kaufen!
Integrate the power of top-secret technology into your strategy.
Select from Soviet Cloning Vats and Allied time-travel devices and use an arsenal consisting of Prism Tanks, Tesla Troopers, Terror Drones, Desolators, Giant Squid and Psychic Mind Readers and more.
More ways to wage war than ever before! Play either side in the full solo play campaign or play as one of 9 nations in 8 modes of multiplay and skirmish mode.
Take your campaign over land, sea and air to utilise over 80 units and structures to deliver your fury.
Wreak havoc with a friend through the specially designed co-op campaign.


LG,s new lsai phone has affordable price ,Good looking shape,easy to use and many more function,s.
This good phone five.5 in. Quad HD show, 534ppi pel density on the dust proof and water proof are. LG initial introduced by the powerful LG Isai American state devise one.15mm bezels, Quad HD show with 500ppi pel density with and came. Isai VL refresh this LG smartphone version is being same.
LG's new phone it had be the right addition to the already existing list of mobile .
One of LG's new name was introduced device lsai that email address 3GB of RAM and dways VoLTE are the primary time in some countries.


Made of precise hardened alloy steel. Point hardened to 50-55 HRC 1/2′ diameter hardened shank, knurled for easy handling Adjustable Tension Spring 3/16′ Hardened tension pin For execution, the center's body should be gripped in a drill chuck or collet, while the hardened point is inserted into the middle of the tapping handle. The stroke of the center will follow the tap, assuring straight and accurate hand tapped threads. One universal size for all tapping applications.


text:
#include "builtin.h"
#include "cache.h"
#include "dir.h"
#include "parse-options.h"
#include "refs.h"
#include "string-list.h"
#include "quote.h"
#include "column.h"
#include "color.h"
#include "pathspec.h"

static int force = -1; /* unset */
static int interactive;
static struct string_list del_list = STRING_LIST_INIT_DUP;
static unsigned int colopts;

static const char *const builtin_clean_usage[] = {
	N_("git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."),
	NULL
};

static const char *msg_remove = N_("Removing %s\n");
static const char *msg_would_remove = N_("Would remove %s\n");
static const char *msg_skip_git_dir = N_("Skipping repository %s\n");
static const char *msg_would_skip_git_dir = N_("Would skip repository %s\n");
static const char *msg_warn_remove_failed = N_("failed to remove %s");

static int clean_use_color = -1;
static char clean_colors[][COLOR_MAXLEN] = {
	GIT_COLOR_RESET,
	GIT_COLOR_NORMAL,	/* PLAIN */
	GIT_COLOR_BOLD_BLUE,	/* PROMPT */
	GIT_COLOR_BOLD,		/* HEADER */
	GIT_COLOR_BOLD_RED,	/* HELP */
	GIT_COLOR_BOLD_RED,	/* ERROR */
};
enum color_clean {
	CLEAN_COLOR_RESET = 0,
	CLEAN_COLOR_PLAIN = 1,
	CLEAN_COLOR_PROMPT = 2,
	CLEAN_COLOR_HEADER = 3,
	CLEAN_COLOR_HELP = 4,
	CLEAN_COLOR_ERROR = 5
};

#define MENU_OPTS_SINGLETON		01
#define MENU_OPTS_IMMEDIATE		02
#define MENU_OPTS_LIST_ONLY		04

struct menu_opts {
	const char *header;
	const char *prompt;
	int flags;
};

#define MENU_RETURN_NO_LOOP		10

struct menu_item {
	char hotkey;
	const char *title;
	int selected;
	int (*fn)();
};

enum menu_stuff_type {
	MENU_STUFF_TYPE_STRING_LIST = 1,
	MENU_STUFF_TYPE_MENU_ITEM
};

struct menu_stuff {
	enum menu_stuff_type type;
	int nr;
	void *stuff;
};

static int parse_clean_color_slot(const char *var)
{
	if (!strcasecmp(var, "reset"))
		return CLEAN_COLOR_RESET;
	if (!strcasecmp(var, "plain"))
		return CLEAN_COLOR_PLAIN;
	if (!strcasecmp(var, "prompt"))
		return CLEAN_COLOR_PROMPT;
	if (!strcasecmp(var, "header"))
		return CLEAN_COLOR_HEADER;
	if (!strcasecmp(var, "help"))
		return CLEAN_COLOR_HELP;
	if (!strcasecmp(var, "error"))
		return CLEAN_COLOR_ERROR;
	return -1;
}

static int git_clean_config(const char *var, const char *value, void *cb)
{
	if (starts_with(var, "column."))
		return git_column_config(var, value, "clean", &colopts);

	/* honors the color.interactive* config variables which also
	   applied in git-add--interactive and git-stash */
	if (!strcmp(var, "color.interactive")) {
		clean_use_color = git_config_colorbool(var, value);
		return 0;
	}
	if (starts_with(var, "color.interactive.")) {
		int slot = parse_clean_color_slot(var +
						  strlen("color.interactive."));
		if (slot < 0)
			return 0;
		if (!value)
			return config_error_nonbool(var);
		color_parse(value, var, clean_colors[slot]);
		return 0;
	}

	if (!strcmp(var, "clean.requireforce")) {
		force = !git_config_bool(var, value);
		return 0;
	}

	/* inspect the color.ui config variable and others */
	return git_color_default_config(var, value, cb);
}

static const char *clean_get_color(enum color_clean ix)
{
	if (want_color(clean_use_color))
		return clean_colors[ix];
	return "";
}

static void clean_print_color(enum color_clean ix)
{
	printf("%s", clean_get_color(ix));
}

static int exclude_cb(const struct option *opt, const char *arg, int unset)
{
	struct string_list *exclude_list = opt->value;
	string_list_append(exclude_list, arg);
	return 0;
}

static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
		int dry_run, int quiet, int *dir_gone)
{
	DIR *dir;
	struct strbuf quoted = STRBUF_INIT;
	struct dirent *e;
	int res = 0, ret = 0, gone = 1, original_len = path->len, len;
	unsigned char submodule_head[20];
	struct string_list dels = STRING_LIST_INIT_DUP;

	*dir_gone = 1;

	if ((force_flag & REMOVE_DIR_KEEP_NESTED_GIT) &&
			!resolve_gitlink_ref(path->buf, "HEAD", submodule_head)) {
		if (!quiet) {
			quote_path_relative(path->buf, prefix, &quoted);
			printf(dry_run ?  _(msg_would_skip_git_dir) : _(msg_skip_git_dir),
					quoted.buf);
		}

		*dir_gone = 0;
		return 0;
	}

	dir = opendir(path->buf);
	if (!dir) {
		/* an empty dir could be removed even if it is unreadble */
		res = dry_run ? 0 : rmdir(path->buf);
		if (res) {
			quote_path_relative(path->buf, prefix, &quoted);
			warning(_(msg_warn_remove_failed), quoted.buf);
			*dir_gone = 0;
		}
		return res;
	}

	if (path->buf[original_len - 1] != '/')
		strbuf_addch(path, '/');

	len = path->len;
	while ((e = readdir(dir)) != NULL) {
		struct stat st;
		if (is_dot_or_dotdot(e->d_name))
			continue;

		strbuf_setlen(path, len);
		strbuf_addstr(path, e->d_name);
		if (lstat(path->buf, &st))
			; /* fall thru */
		else if (S_ISDIR(st.st_mode)) {
			if (remove_dirs(path, prefix, force_flag, dry_run, quiet, &gone))
				ret = 1;
			if (gone) {
				quote_path_relative(path->buf, prefix, &quoted);
				string_list_append(&dels, quoted.buf);
			} else
				*dir_gone = 0;
			continue;
		} else {
			res = dry_run ? 0 : unlink(path->buf);
			if (!res) {
				quote_path_relative(path->buf, prefix, &quoted);
				string_list_append(&dels, quoted.buf);
			} else {
				quote_path_relative(path->buf, prefix, &quoted);
				warning(_(msg_warn_remove_failed), quoted.buf);
				*dir_gone = 0;
				ret = 1;
			}
			continue;
		}

		/* path too long, stat fails, or non-directory still exists */
		*dir_gone = 0;
		ret = 1;
		break;
	}
	closedir(dir);

	strbuf_setlen(path, original_len);

	if (*dir_gone) {
		res = dry_run ? 0 : rmdir(path->buf);
		if (!res)
			*dir_gone = 1;
		else {
			quote_path_relative(path->buf, prefix, &quoted);
			warning(_(msg_warn_remove_failed), quoted.buf);
			*dir_gone = 0;
			ret = 1;
		}
	}

	if (!*dir_gone && !quiet) {
		int i;
		for (i = 0; i < dels.nr; i++)
			printf(dry_run ?  _(msg_would_remove) : _(msg_remove), dels.items[i].string);
	}
	string_list_clear(&dels, 0);
	return ret;
}

static void pretty_print_dels(void)
{
	struct string_list list = STRING_LIST_INIT_DUP;
	struct string_list_item *item;
	struct strbuf buf = STRBUF_INIT;
	const char *qname;
	struct column_options copts;

	for_each_string_list_item(item, &del_list) {
		qname = quote_path_relative(item->string, NULL, &buf);
		string_list_append(&list, qname);
	}

	/*
	 * always enable column display, we only consult column.*
	 * about layout strategy and stuff
	 */
	colopts = (colopts & ~COL_ENABLE_MASK) | COL_ENABLED;
	memset(&copts, 0, sizeof(copts));
	copts.indent = "  ";
	copts.padding = 2;
	print_columns(&list, colopts, &copts);
	strbuf_release(&buf);
	string_list_clear(&list, 0);
}

static void pretty_print_menus(struct string_list *menu_list)
{
	unsigned int local_colopts = 0;
	struct column_options copts;

	local_colopts = COL_ENABLED | COL_ROW;
	memset(&copts, 0, sizeof(copts));
	copts.indent = "  ";
	copts.padding = 2;
	print_columns(menu_list, local_colopts, &copts);
}

static void prompt_help_cmd(int singleton)
{
	clean_print_color(CLEAN_COLOR_HELP);
	printf_ln(singleton ?
		  _("Prompt help:\n"
		    "1          - select a numbered item\n"
		    "foo        - select item based on unique prefix\n"
		    "           - (empty) select nothing") :
		  _("Prompt help:\n"
		    "1          - select a single item\n"
		    "3-5        - select a range of items\n"
		    "2-3,6-9    - select multiple ranges\n"
		    "foo        - select item based on unique prefix\n"
		    "-...       - unselect specified items\n"
		    "*          - choose all items\n"
		    "           - (empty) finish selecting"));
	clean_print_color(CLEAN_COLOR_RESET);
}

/*
 * display menu stuff with number prefix and hotkey highlight
 */
static void print_highlight_menu_stuff(struct menu_stuff *stuff, int **chosen)
{
	struct string_list menu_list = STRING_LIST_INIT_DUP;
	struct strbuf menu = STRBUF_INIT;
	struct strbuf buf = STRBUF_INIT;
	struct menu_item *menu_item;
	struct string_list_item *string_list_item;
	int i;

	switch (stuff->type) {
	default:
		die("Bad type of menu_staff when print menu");
	case MENU_STUFF_TYPE_MENU_ITEM:
		menu_item = (struct menu_item *)stuff->stuff;
		for (i = 0; i < stuff->nr; i++, menu_item++) {
			const char *p;
			int highlighted = 0;

			p = menu_item->title;
			if ((*chosen)[i] < 0)
				(*chosen)[i] = menu_item->selected ? 1 : 0;
			strbuf_addf(&menu, "%s%2d: ", (*chosen)[i] ? "*" : " ", i+1);
			for (; *p; p++) {
				if (!highlighted && *p == menu_item->hotkey) {
					strbuf_addstr(&menu, clean_get_color(CLEAN_COLOR_PROMPT));
					strbuf_addch(&menu, *p);
					strbuf_addstr(&menu, clean_get_color(CLEAN_COLOR_RESET));
					highlighted = 1;
				} else {
					strbuf_addch(&menu, *p);
				}
			}
			string_list_append(&menu_list, menu.buf);
			strbuf_reset(&menu);
		}
		break;
	case MENU_STUFF_TYPE_STRING_LIST:
		i = 0;
		for_each_string_list_item(string_list_item, (struct string_list *)stuff->stuff) {
			if ((*chosen)[i] < 0)
				(*chosen)[i] = 0;
			strbuf_addf(&menu, "%s%2d: %s",
				    (*chosen)[i] ? "*" : " ", i+1, string_list_item->string);
			string_list_append(&menu_list, menu.buf);
			strbuf_reset(&menu);
			i++;
		}
		break;
	}

	pretty_print_menus(&menu_list);

	strbuf_release(&menu);
	strbuf_release(&buf);
	string_list_clear(&menu_list, 0);
}

static int find_unique(const char *choice, struct menu_stuff *menu_stuff)
{
	struct menu_item *menu_item;
	struct string_list_item *string_list_item;
	int i, len, found = 0;

	len = strlen(choice);
	switch (menu_stuff->type) {
	default:
		die("Bad type of menu_stuff when parse choice");
	case MENU_STUFF_TYPE_MENU_ITEM:

		menu_item = (struct menu_item *)menu_stuff->stuff;
		for (i = 0; i < menu_stuff->nr; i++, menu_item++) {
			if (len == 1 && *choice == menu_item->hotkey) {
				found = i + 1;
				break;
			}
			if (!strncasecmp(choice, menu_item->title, len)) {
				if (found) {
					if (len == 1) {
						/* continue for hotkey matching */
						found = -1;
					} else {
						found = 0;
						break;
					}
				} else {
					found = i + 1;
				}
			}
		}
		break;
	case MENU_STUFF_TYPE_STRING_LIST:
		string_list_item = ((struct string_list *)menu_stuff->stuff)->items;
		for (i = 0; i < menu_stuff->nr; i++, string_list_item++) {
			if (!strncasecmp(choice, string_list_item->string, len)) {
				if (found) {
					found = 0;
					break;
				}
				found = i + 1;
			}
		}
		break;
	}
	return found;
}

/*
 * Parse user input, and return choice(s) for menu (menu_stuff).
 *
 * Input
 *     (for single choice)
 *         1          - select a numbered item
 *         foo        - select item based on menu title
 *                    - (empty) select nothing
 *
 *     (for multiple choice)
 *         1          - select a single item
 *         3-5        - select a range of items
 *         2-3,6-9    - select multiple ranges
 *         foo        - select item based on menu title
 *         -...       - unselect specified items
 *         *          - choose all items
 *                    - (empty) finish selecting
 *
 * The parse result will be saved in array **chosen, and
 * return number of total selections.
 */
static int parse_choice(struct menu_stuff *menu_stuff,
			int is_single,
			struct strbuf input,
			int **chosen)
{
	struct strbuf **choice_list, **ptr;
	int nr = 0;
	int i;

	if (is_single) {
		choice_list = strbuf_split_max(&input, '\n', 0);
	} else {
		char *p = input.buf;
		do {
			if (*p == ',')
				*p = ' ';
		} while (*p++);
		choice_list = strbuf_split_max(&input, ' ', 0);
	}

	for (ptr = choice_list; *ptr; ptr++) {
		char *p;
		int choose = 1;
		int bottom = 0, top = 0;
		int is_range, is_number;

		strbuf_trim(*ptr);
		if (!(*ptr)->len)
			continue;

		/* Input that begins with '-'; unchoose */
		if (*(*ptr)->buf == '-') {
			choose = 0;
			strbuf_remove((*ptr), 0, 1);
		}

		is_range = 0;
		is_number = 1;
		for (p = (*ptr)->buf; *p; p++) {
			if ('-' == *p) {
				if (!is_range) {
					is_range = 1;
					is_number = 0;
				} else {
					is_number = 0;
					is_range = 0;
					break;
				}
			} else if (!isdigit(*p)) {
				is_number = 0;
				is_range = 0;
				break;
			}
		}

		if (is_number) {
			bottom = atoi((*ptr)->buf);
			top = bottom;
		} else if (is_range) {
			bottom = atoi((*ptr)->buf);
			/* a range can be specified like 5-7 or 5- */
			if (!*(strchr((*ptr)->buf, '-') + 1))
				top = menu_stuff->nr;
			else
				top = atoi(strchr((*ptr)->buf, '-') + 1);
		} else if (!strcmp((*ptr)->buf, "*")) {
			bottom = 1;
			top = menu_stuff->nr;
		} else {
			bottom = find_unique((*ptr)->buf, menu_stuff);
			top = bottom;
		}

		if (top <= 0 || bottom <= 0 || top > menu_stuff->nr || bottom > top ||
		    (is_single && bottom != top)) {
			clean_print_color(CLEAN_COLOR_ERROR);
			printf_ln(_("Huh (%s)?"), (*ptr)->buf);
			clean_print_color(CLEAN_COLOR_RESET);
			continue;
		}

		for (i = bottom; i <= top; i++)
			(*chosen)[i-1] = choose;
	}

	strbuf_list_free(choice_list);

	for (i = 0; i < menu_stuff->nr; i++)
		nr += (*chosen)[i];
	return nr;
}

/*
 * Implement a git-add-interactive compatible UI, which is borrowed
 * from git-add--interactive.perl.
 *
 * Return value:
 *
 *   - Return an array of integers
 *   - , and it is up to you to free the allocated memory.
 *   - The array ends with EOF.
 *   - If user pressed CTRL-D (i.e. EOF), no selection returned.
 */
static int *list_and_choose(struct menu_opts *opts, struct menu_stuff *stuff)
{
	struct strbuf choice = STRBUF_INIT;
	int *chosen, *result;
	int nr = 0;
	int eof = 0;
	int i;

	chosen = xmalloc(sizeof(int) * stuff->nr);
	/* set chosen as uninitialized */
	for (i = 0; i < stuff->nr; i++)
		chosen[i] = -1;

	for (;;) {
		if (opts->header) {
			printf_ln("%s%s%s",
				  clean_get_color(CLEAN_COLOR_HEADER),
				  _(opts->header),
				  clean_get_color(CLEAN_COLOR_RESET));
		}

		/* chosen will be initialized by print_highlight_menu_stuff */
		print_highlight_menu_stuff(stuff, &chosen);

		if (opts->flags & MENU_OPTS_LIST_ONLY)
			break;

		if (opts->prompt) {
			printf("%s%s%s%s",
			       clean_get_color(CLEAN_COLOR_PROMPT),
			       _(opts->prompt),
			       opts->flags & MENU_OPTS_SINGLETON ? "> " : ">> ",
			       clean_get_color(CLEAN_COLOR_RESET));
		}

		if (strbuf_getline(&choice, stdin, '\n') != EOF) {
			strbuf_trim(&choice);
		} else {
			eof = 1;
			break;
		}

		/* help for prompt */
		if (!strcmp(choice.buf, "?")) {
			prompt_help_cmd(opts->flags & MENU_OPTS_SINGLETON);
			continue;
		}

		/* for a multiple-choice menu, press ENTER (empty) will return back */
		if (!(opts->flags & MENU_OPTS_SINGLETON) && !choice.len)
			break;

		nr = parse_choice(stuff,
				  opts->flags & MENU_OPTS_SINGLETON,
				  choice,
				  &chosen);

		if (opts->flags & MENU_OPTS_SINGLETON) {
			if (nr)
				break;
		} else if (opts->flags & MENU_OPTS_IMMEDIATE) {
			break;
		}
	}

	if (eof) {
		result = xmalloc(sizeof(int));
		*result = EOF;
	} else {
		int j = 0;

		/*
		 * recalculate nr, if return back from menu directly with
		 * default selections.
		 */
		if (!nr) {
			for (i = 0; i < stuff->nr; i++)
				nr += chosen[i];
		}

		result = xcalloc(nr + 1, sizeof(int));
		for (i = 0; i < stuff->nr && j < nr; i++) {
			if (chosen[i])
				result[j++] = i;
		}
		result[j] = EOF;
	}

	free(chosen);
	strbuf_release(&choice);
	return result;
}

static int clean_cmd(void)
{
	return MENU_RETURN_NO_LOOP;
}

static int filter_by_patterns_cmd(void)
{
	struct dir_struct dir;
	struct strbuf confirm = STRBUF_INIT;
	struct strbuf **ignore_list;
	struct string_list_item *item;
	struct exclude_list *el;
	int changed = -1, i;

	for (;;) {
		if (!del_list.nr)
			break;

		if (changed)
			pretty_print_dels();

		clean_print_color(CLEAN_COLOR_PROMPT);
		printf(_("Input ignore patterns>> "));
		clean_print_color(CLEAN_COLOR_RESET);
		if (strbuf_getline(&confirm, stdin, '\n') != EOF)
			strbuf_trim(&confirm);
		else
			putchar('\n');

		/* quit filter_by_pattern mode if press ENTER or Ctrl-D */
		if (!confirm.len)
			break;

		memset(&dir, 0, sizeof(dir));
		el = add_exclude_list(&dir, EXC_CMDL, "manual exclude");
		ignore_list = strbuf_split_max(&confirm, ' ', 0);

		for (i = 0; ignore_list[i]; i++) {
			strbuf_trim(ignore_list[i]);
			if (!ignore_list[i]->len)
				continue;

			add_exclude(ignore_list[i]->buf, "", 0, el, -(i+1));
		}

		changed = 0;
		for_each_string_list_item(item, &del_list) {
			int dtype = DT_UNKNOWN;

			if (is_excluded(&dir, item->string, &dtype)) {
				*item->string = '\0';
				changed++;
			}
		}

		if (changed) {
			string_list_remove_empty_items(&del_list, 0);
		} else {
			clean_print_color(CLEAN_COLOR_ERROR);
			printf_ln(_("WARNING: Cannot find items matched by: %s"), confirm.buf);
			clean_print_color(CLEAN_COLOR_RESET);
		}

		strbuf_list_free(ignore_list);
		clear_directory(&dir);
	}

	strbuf_release(&confirm);
	return 0;
}

static int select_by_numbers_cmd(void)
{
	struct menu_opts menu_opts;
	struct menu_stuff menu_stuff;
	struct string_list_item *items;
	int *chosen;
	int i, j;

	menu_opts.header = NULL;
	menu_opts.prompt = N_("Select items to delete");
	menu_opts.flags = 0;

	menu_stuff.type = MENU_STUFF_TYPE_STRING_LIST;
	menu_stuff.stuff = &del_list;
	menu_stuff.nr = del_list.nr;

	chosen = list_and_choose(&menu_opts, &menu_stuff);
	items = del_list.items;
	for (i = 0, j = 0; i < del_list.nr; i++) {
		if (i < chosen[j]) {
			*(items[i].string) = '\0';
		} else if (i == chosen[j]) {
			/* delete selected item */
			j++;
			continue;
		} else {
			/* end of chosen (chosen[j] == EOF), won't delete */
			*(items[i].string) = '\0';
		}
	}

	string_list_remove_empty_items(&del_list, 0);

	free(chosen);
	return 0;
}

static int ask_each_cmd(void)
{
	struct strbuf confirm = STRBUF_INIT;
	struct strbuf buf = STRBUF_INIT;
	struct string_list_item *item;
	const char *qname;
	int changed = 0, eof = 0;

	for_each_string_list_item(item, &del_list) {
		/* Ctrl-D should stop removing files */
		if (!eof) {
			qname = quote_path_relative(item->string, NULL, &buf);
			printf(_("remove %s? "), qname);
			if (strbuf_getline(&confirm, stdin, '\n') != EOF) {
				strbuf_trim(&confirm);
			} else {
				putchar('\n');
				eof = 1;
			}
		}
		if (!confirm.len || strncasecmp(confirm.buf, "yes", confirm.len)) {
			*item->string = '\0';
			changed++;
		}
	}

	if (changed)
		string_list_remove_empty_items(&del_list, 0);

	strbuf_release(&buf);
	strbuf_release(&confirm);
	return MENU_RETURN_NO_LOOP;
}

static int quit_cmd(void)
{
	string_list_clear(&del_list, 0);
	printf_ln(_("Bye."));
	return MENU_RETURN_NO_LOOP;
}

static int help_cmd(void)
{
	clean_print_color(CLEAN_COLOR_HELP);
	printf_ln(_(
		    "clean               - start cleaning\n"
		    "filter by pattern   - exclude items from deletion\n"
		    "select by numbers   - select items to be deleted by numbers\n"
		    "ask each            - confirm each deletion (like \"rm -i\")\n"
		    "quit                - stop cleaning\n"
		    "help                - this screen\n"
		    "?                   - help for prompt selection"
		   ));
	clean_print_color(CLEAN_COLOR_RESET);
	return 0;
}

static void interactive_main_loop(void)
{
	while (del_list.nr) {
		struct menu_opts menu_opts;
		struct menu_stuff menu_stuff;
		struct menu_item menus[] = {
			{'c', "clean",			0, clean_cmd},
			{'f', "filter by pattern",	0, filter_by_patterns_cmd},
			{'s', "select by numbers",	0, select_by_numbers_cmd},
			{'a', "ask each",		0, ask_each_cmd},
			{'q', "quit",			0, quit_cmd},
			{'h', "help",			0, help_cmd},
		};
		int *chosen;

		menu_opts.header = N_("*** Commands ***");
		menu_opts.prompt = N_("What now");
		menu_opts.flags = MENU_OPTS_SINGLETON;

		menu_stuff.type = MENU_STUFF_TYPE_MENU_ITEM;
		menu_stuff.stuff = menus;
		menu_stuff.nr = sizeof(menus) / sizeof(struct menu_item);

		clean_print_color(CLEAN_COLOR_HEADER);
		printf_ln(Q_("Would remove the following item:",
			     "Would remove the following items:",
			     del_list.nr));
		clean_print_color(CLEAN_COLOR_RESET);

		pretty_print_dels();

		chosen = list_and_choose(&menu_opts, &menu_stuff);

		if (*chosen != EOF) {
			int ret;
			ret = menus[*chosen].fn();
			if (ret != MENU_RETURN_NO_LOOP) {
				free(chosen);
				chosen = NULL;
				if (!del_list.nr) {
					clean_print_color(CLEAN_COLOR_ERROR);
					printf_ln(_("No more files to clean, exiting."));
					clean_print_color(CLEAN_COLOR_RESET);
					break;
				}
				continue;
			}
		} else {
			quit_cmd();
		}

		free(chosen);
		chosen = NULL;
		break;
	}
}

int cmd_clean(int argc, const char **argv, const char *prefix)
{
	int i, res;
	int dry_run = 0, remove_directories = 0, quiet = 0, ignored = 0;
	int ignored_only = 0, config_set = 0, errors = 0, gone = 1;
	int rm_flags = REMOVE_DIR_KEEP_NESTED_GIT;
	struct strbuf abs_path = STRBUF_INIT;
	struct dir_struct dir;
	struct pathspec pathspec;
	struct strbuf buf = STRBUF_INIT;
	struct string_list exclude_list = STRING_LIST_INIT_NODUP;
	struct exclude_list *el;
	struct string_list_item *item;
	const char *qname;
	struct option options[] = {
		OPT__QUIET(&quiet, N_("do not print names of files removed")),
		OPT__DRY_RUN(&dry_run, N_("dry run")),
		OPT__FORCE(&force, N_("force")),
		OPT_BOOL('i', "interactive", &interactive, N_("interactive cleaning")),
		OPT_BOOL('d', NULL, &remove_directories,
				N_("remove whole directories")),
		{ OPTION_CALLBACK, 'e', "exclude", &exclude_list, N_("pattern"),
		  N_("add <pattern> to ignore rules"), PARSE_OPT_NONEG, exclude_cb },
		OPT_BOOL('x', NULL, &ignored, N_("remove ignored files, too")),
		OPT_BOOL('X', NULL, &ignored_only,
				N_("remove only ignored files")),
		OPT_END()
	};

	git_config(git_clean_config, NULL);
	if (force < 0)
		force = 0;
	else
		config_set = 1;

	argc = parse_options(argc, argv, prefix, options, builtin_clean_usage,
			     0);

	memset(&dir, 0, sizeof(dir));
	if (ignored_only)
		dir.flags |= DIR_SHOW_IGNORED;

	if (ignored && ignored_only)
		die(_("-x and -X cannot be used together"));

	if (!interactive && !dry_run && !force) {
		if (config_set)
			die(_("clean.requireForce set to true and neither -i, -n, nor -f given; "
				  "refusing to clean"));
		else
			die(_("clean.requireForce defaults to true and neither -i, -n, nor -f given;"
				  " refusing to clean"));
	}

	if (force > 1)
		rm_flags = 0;

	dir.flags |= DIR_SHOW_OTHER_DIRECTORIES;

	if (read_cache() < 0)
		die(_("index file corrupt"));

	if (!ignored)
		setup_standard_excludes(&dir);

	el = add_exclude_list(&dir, EXC_CMDL, "--exclude option");
	for (i = 0; i < exclude_list.nr; i++)
		add_exclude(exclude_list.items[i].string, "", 0, el, -(i+1));

	parse_pathspec(&pathspec, 0,
		       PATHSPEC_PREFER_CWD,
		       prefix, argv);

	fill_directory(&dir, &pathspec);

	for (i = 0; i < dir.nr; i++) {
		struct dir_entry *ent = dir.entries[i];
		int matches = 0;
		struct stat st;
		const char *rel;

		if (!cache_name_is_other(ent->name, ent->len))
			continue;

		if (lstat(ent->name, &st))
			die_errno("Cannot lstat '%s'", ent->name);

		if (pathspec.nr)
			matches = dir_path_match(ent, &pathspec, 0, NULL);

		if (pathspec.nr && !matches)
			continue;

		if (S_ISDIR(st.st_mode) && !remove_directories &&
		    matches != MATCHED_EXACTLY)
			continue;

		rel = relative_path(ent->name, prefix, &buf);
		string_list_append(&del_list, rel);
	}

	if (interactive && del_list.nr > 0)
		interactive_main_loop();

	for_each_string_list_item(item, &del_list) {
		struct stat st;

		if (prefix)
			strbuf_addstr(&abs_path, prefix);

		strbuf_addstr(&abs_path, item->string);

		/*
		 * we might have removed this as part of earlier
		 * recursive directory removal, so lstat() here could
		 * fail with ENOENT.
		 */
		if (lstat(abs_path.buf, &st))
			continue;

		if (S_ISDIR(st.st_mode)) {
			if (remove_dirs(&abs_path, prefix, rm_flags, dry_run, quiet, &gone))
				errors++;
			if (gone && !quiet) {
				qname = quote_path_relative(item->string, NULL, &buf);
				printf(dry_run ? _(msg_would_remove) : _(msg_remove), qname);
			}
		} else {
			res = dry_run ? 0 : unlink(abs_path.buf);
			if (res) {
				qname = quote_path_relative(item->string, NULL, &buf);
				warning(_(msg_warn_remove_failed), qname);
				errors++;
			} else if (!quiet) {
				qname = quote_path_relative(item->string, NULL, &buf);
				printf(dry_run ? _(msg_would_remove) : _(msg_remove), qname);
			}
		}
		strbuf_reset(&abs_path);
	}

	strbuf_release(&abs_path);
	strbuf_release(&buf);
	string_list_clear(&del_list, 0);
	string_list_clear(&exclude_list, 0);
	return (errors != 0);
}

redpajama_set_name: RedPajamaGithub


ISLAMABAD: Ambassador of Saudi Arabia Nawaf Saeed Al-Malkiy on Friday formally handed over 150 tons dates to the representative of Pakistan government. It is a gift by the Kingdom of Saudi Arabia for Pakistanis in continuation of the annual tradition.
"The government of the Kingdom of Saudi Arabia is pleased to provide a quantity of 150 tons dates to its brothers in the Islamic Republic of Pakistan on the recommendation of the saga leadership of the Custodian of the Two Holy Mosques Prince Mohammad Bin Salman," a press release by the Saudi embassy said.


text:
Tag: gig economy
Progressive Capitalism
Torn dollar bill image source and license.
We've been looking at economic winners and losers in the zero-sum economy — particularly in the context of higher education, where cultural belief in the importance of college and post-graduate degrees on upward mobility and success in the job market is driving behavior that harms both parents (the college admissions scandal) and the economic and mental health of their children (student loan debt, general anxiety disorder, depression, suicide).
This series of blog posts is now in its third year — throughout, we've seen how hyper-competitive capitalism and its staunch faith in the implicit justice of the "free" market is causing other economic loses. For example:
the stagnation of middle class real incomes;
the rise of the numbers of statistically poor people in the U.S.;
the dismantling of compassionate social safety nets in favor of expensive, counterproductive, and humiliating replacements;
the rise of the "rentier" economy in which formerly public benefits have been privatized, making them accessible only to those who can afford them through the payment of economic "rents";
the end of the American ideal of upward social and economic mobility;
the high cost of housing and the death of the American dream of home ownership;
the elimination of "normal" jobs through off-shoring, outsourcing, and the delegation of productivity to intelligent machines;
the advent of the short-term, contract-based "gig economy" with its lack of fringe benefits and its precarious prospects for sustainable income;
economic inequality that favors the wealthiest of capitalists at the expense of the bottom 90% (or 99%, or 99.9%, depending on your data and point of view);
the creation instead of an insular top-level "meritocrat" socio-economic class;
the new state of "total work" and the "monetization" of goods and services;
rising rates of career burnout, mental illness, and suicide resulting from social isolation and the vain struggle to find meaning and purpose at work;
the rise of corporate nation-states with economic and policy-making power that dwarfs that of many governmental nation-states;
the private (non-democratic) social policy-making initiatives of the wealthiest elites;
Nobody meant economic policy to do this, but it has, for roughly the past 30-40 years. Good intentions; unplanned results.
We've seen that both plutocrats and progressives advocate for systemic change, while status quo inertia weighs in on the side of those who don't see what all the fuss is about, since capitalism is undeniably the best economic option and always has been, and besides it's still working just fine, thank you very much. Instead of meaningful discourse, we have a predominant nostalgic, populist doubling down on the neoliberal socio-economic cultural ideology that jet-propelled post-WWII recovery but finished running its course in the 1970s, while the retrenchers and the media slap those who beg to differ with the kiss-of-death label "progressive." As a result, we're left with incessant lobbing from one end of the polarized spectrum to the other of ideological bombs that originate in data and analysis skewed by cognitive biases, intentional blindness, and fake news . Economic policy-making resembles WWI trench warfare — a tactical grinding down of the opposition and the numbing and dumbing of everyone else. It was a bad idea then, and it's still a bad idea now.
I had no idea this is what I was getting into when I decided three years ago to research and write about the new economy and the future of work.
It's in the context of this toxic environment that Economics Nobel Laureate Joseph E. Stiglitz, offered his "progressive capitalism" alternative, based on "the power of the market to serve society." Progressive Capitalism Is Not an Oxymoron: We can save our broken economic system from itself, New York Times (April 19, 2019). His article, like virtually all of the economics books and articles I read these days, begins with a long parade of evils and ends with a handful of policy ideas. His version of the former is by now quite familiar:
"Despite the lowest unemployment rates since the late 1960s, the American economy is failing its citizens. Some 90 percent have seen their incomes stagnate or decline in the past 30 years.
"This is not surprising, given that the United States has the highest level of inequality among the advanced countries and one of the lowest levels of opportunity — with the fortunes of young Americans more dependent on the income and education of their parents than elsewhere.
"There is a broader social compact that allows a society to work and prosper together, and that, too, has been fraying. America created the first truly middle-class society; now, a middle-class life is increasingly out of reach for its citizens.
"We confused the hard work of wealth creation with wealth-grabbing (or, as economists call it, rent-seeking).
"Just as forces of globalization and technological change were contributing to growing inequality, we adopted policies that worsened societal inequities.
"Even as economic theories like information economics (dealing with the ever-present situation where information is imperfect), behavioral economics and game theory arose to explain why markets on their own are often not efficient, fair, stable or seemingly rational, we relied more on markets and scaled back social protections.
"Politics has played a big role in the increase in corporate rent-seeking and the accompanying inequality.
"Markets don't exist in a vacuum; they have to be structured by rules and regulations, and those rules and regulations must be enforced.
"We are now in a vicious cycle: Greater economic inequality is leading, in our money-driven political system, to more political inequality, with weaker rules and deregulation causing still more economic inequality.
"If we don't change course matters will likely grow worse, as machines (artificial intelligence and robots) replace an increasing fraction of routine labor, including many of the jobs of the several million Americans.
"The prescription follows from the diagnosis: It begins by recognizing the vital role that the state plays in making markets serve society.
"Progressive capitalism is based on a new social contract between voters and elected officials, between workers and corporations, between rich and poor, and between those with jobs and those who are un- or underemployed.
"Part of this new social contract is an expanded public option for many programs now provided by private entities or not at all
"This new social contract will enable most Americans to once again have a middle-class life.
"The neoliberal fantasy that unfettered markets will deliver prosperity to everyone should be put to rest.
"America arrived at this sorry state of affairs because we forgot that the true source of the wealth of a nation is the creativity and innovation of its people."
His point seems to be that merely reciting litanies of economic woes won't bring about systemic relief — for that, we need to embrace an essential factor:
Paradigms only shift when culture shifts:
new ideas require new culture to receive them,
and new culture requires new belief systems.
Systemic change requires cultural change — remodeled institutions and revised social contracts that tether ideas to real life. Trying to patch policy ideas into the existing socio-economic system is like what would happen if a firm were to abruptly change its products, services, and strategic and marketing plans without bothering to change its mission statement, values and beliefs, and firm culture.
Like that's going to work.
Coming up, we'll look beyond policy bombs to the higher ground of revised cultural beliefs, starting with next week's search for the "public" that's gone missing from the Republic.
Author Kevin RhodesPosted on October 31, 2019 October 30, 2019 Categories The New Economy, Work, Jobs, CareerTags belief systems, Capitalism, career, college admission scandal, competitive, competitive capitalism, cultural belief systems, culture, economic inequality, economic policy, economic rents, economics, gig economy, inequality, jobs, Neoliberal capitalism, Neoliberal Economics, Neoliberalism, populism, populist, progressive, student loans, upward mobility1 Comment on Progressive Capitalism
Can Capitalism Buy Happiness?
Over two years ago, the first blog post in this series asked, "Can money buy happiness?" Today's question looks past the medium of economic exchange to the more foundational sociological and psychological implications of contemporary hyper-competitive capitalism — a good example of which is the "meritocracy trap" we looked at last time, which clearly is not making capitalism's elite happy, but instead is driving maladaptive behavior like the college admissions scandal.
The scandal evokes the kind of horrified fascination you get from reading the National Enquirer headlines in the checkout line:
"A teenage girl who did not play soccer magically became a star soccer recruit at Yale. Cost to her parents: $1.2 million.
"A high school boy eager to enroll at the University of Southern California was falsely deemed to have a learning disability so he could take his standardized test with a complicit proctor who would make sure he got the right score. Cost to his parents: at least $50,000.
"A student with no experience rowing won a spot on the U.S.C. crew team after a photograph of another person in a boat was submitted as evidence of her prowess. Her parents wired $200,000 into a special account."
Actresses, Business Leaders and Other Wealthy Parents Charged in U.S. College Entry Fraud, New York Times (March 12, 2019)
The parents who wrote those big checks now face a stiff legal price, but why did they do it in the first place? An ongoing discussion over the past several years[i] suggests an answer: they did it because of the "meritocracy trap" as evident in higher education, — an economic necessity for more than just the elite — where the current dynamics of of how capitalism is practiced are a significant contributor to mental ill health.
A long article on that topic came out last weekend: The Way Universities Are Run Is Making Us Ill': Inside The Student Mental Health Crisis. The Guardian (Sept. 27, 2019). The subhead reads "A surge in anxiety and stress is sweeping UK campuses. What is troubling students, and is it the universities' job to fix it?" The article's U.K. examples mirror those that prompted the USA's college admission scandal,. Predominant mental health issues on both sides of the Atlantic include general anxiety disorder, depression, and "an alarming number of suicides." What's behind all this? Consider these quotes from the article:
"In the drive to make universities profitable, there is a fundamental confusion about what they are for. As a result, there has been a shift from prizing learning as an end in itself to equipping graduates for the job market, in what for some can be a joyless environment.
"Studies have looked at the impact of social media, or lack of sleep caused by electronic devices, as well as the effects of an uncertain job market, personal debt and constricted public services.
"In his book Kids These Days: The Making of Millennials, Malcolm Harris … identifies the pressures of the labour market, rising student debt and a target-driven culture as contributing to steep increases in anxiety and depression among young people.
"Driving our universities to act like businesses doesn't just cannibalise the joy of learning and the social utility of research and teaching; it also makes us ill,' wrote Mark Crawford, then a postgraduate student union officer at UCL, in a 2018 piece for Red Pepper magazine… 'It's self-worth being reduced to academic outcomes, support services being cut, the massive cost of housing,' he says.
"[Mental health authorities] have noticed a fall in participation. It's getting harder to fill up events, most likely a symptom of the sharp increase in students living far away from campus to save money… Others have limited time as they juggle studies with paid work.
"For [Sean Cullen, a student featured in the article], money worries have been a grinding and ever-present aspect of his university experience. In his first year, he socialised more than he does now. But given that a single night out costs as much as a weekly food shop, he soon began to think twice about going out with friends. To complicate matters, the amount he receives from Student Finance England, the body responsible for student loans, changed year by year, with unpredictable amounts and repayment terms. "The financial aid is getting worse and worse, even though the cost of living is going up," he says.
"In 2017, Cullen was elected as the student union's disability officer… He heard accounts of mental health problems from hundreds of other students, many of whose experiences chimed with his own. 'I've not yet met a student that hasn't experienced high levels of stress while studying, whether it's because of deadlines, balancing paid work, or problems with housing,' he says.
"While many students survive more or less on their overdrafts, …many have mental health problems in their final year. 'Nowadays, getting a degree doesn't necessarily guarantee you a job, or not a better job than without one,' he says.
"[The need to work many hours per week] has an impact not only on academic performance but on students' ability to fully participate in university life.
"Students exhausted from working while studying full time, and still struggling to cover their basic living costs, are bound to be more anxious about deadlines and exams. 'It's all the environmental stuff that makes it more stressful… If you're tired, you haven't had time to study, you have to make a long journey to university, it's all cumulative.'"
Cuts in social services, educational and housing costs, social isolation, student loans, constricted access to upward mobility, a stingy job market, precarious prospects for sustainable income, a struggle to find meaning and purpose at work… these are economic issues, not education issues. This series has looked at all of them. Next time we'll look further into what's behind them..
[1] See, for example, this NCBI study: "Anxious? Depressed? You might be suffering from capitalism: Contradictory class locations and the prevalence of depression and anxiety in the United States."
Author Kevin RhodesPosted on October 3, 2019 October 9, 2019 Categories The New Economy, Work, Jobs, CareerTags capitalsim, college admissions scandal, cost of education, economics, economy, education, gig economy, higher education, housing costs, job market, jobs, mental health, precariat, student loans, students, universityLeave a comment on Can Capitalism Buy Happiness?
Anybody else remember when "networking" was something you did at cocktail parties? That was before it became a fact of computerized life — see this pictorial history . The idea of old-style networking mostly gets eye rolls these days — too much objectifying, I'd guess — but it's not dead yet: as this promo for Social Media Marketing World 2020 makes clear.
The standard cocktail party question is, of course, "What do you do?" Turns out we've been asking and answering that question the same way for 114 years — ever since German sociologist and political economist Max Weber published The Protestant Ethic and the Spirit of Capitalism.[1]
"We use the word 'capitalism' today as if its meaning were self-evident, or else as if it came from Marx, but this casualness must be set aside. 'Capitalism' was Weber's own word and he defined it as he saw fit. Its most general meaning was quite simply modernity itself: capitalism was 'the most fateful power in our modern life'. More specifically, it controlled and generated 'modern Kultur', the code of values by which people lived in the 20th-century West, and now live, we may add, in much of the 21st-century globe.
"The idea that people were being ever more defined by the blinkered focus of their employment was one he regarded as profoundly modern and characteristic.
"The blinkered professional ethic was common to entrepreneurs and an increasingly high-wage, skilled labour force, and it was this combination that produced a situation where the 'highest good' was the making of money and ever more money, without any limit. This is what is most readily recognisable as the 'spirit' of capitalism
"It is an extremely powerful analysis, which tells us a great deal about the 20th-century West and a set of Western ideas and priorities that the rest of the world has been increasingly happy to take up since [the end of WWII and the advent of neoliberal economics]."
What Did Max Weber Mean By The 'Spirit' Of Capitalism? Aeon Magazine (June 12, 2018)
"What do you do?" was culturally relevant for most of the 20th Century, when jobs as we normally think of them were still around — but not so much today, especially for the new socio-economic lower class known as "the precariat."
"Globalization, neo-liberal policies, institutional changes and the technological revolution have combined to generate a new global class structure superimposed on preceding class structures. This consists of a tiny plutocracy (perhaps 0.001 per cent) atop a bigger elite, a 'salariat' (in relatively secure salaried jobs, 'proficians' (freelance professionals), a core working class, a precariat and a 'lumpen precariat' at the bottom.
"The precariat, which ranks below the proletariat in income, consists of millions of people obliged to accept a life of unstable labour and living, without an occupational identity or corporate narrative to give to their lives. Their employers come and go, or are expected to do so.
"Many in the precariat are over-qualified for the jobs they must accept; they also have a high ratio of unpaid 'work' in labour — looking and applying for jobs, training and retraining, queuing and form-filling, networking or just waiting around. They also rely mainly on money wages, which are often inadequate, volatile, and unpredictable. They lack access to rights-based state benefits and are losing civil, cultural, social, economic and political rights, making them supplicants if they need help to survive."
The Corruption of Capitalism: Why Rentiers Thrive and Work Does Not Pay, Guy Standing (2017)
I Googled "how to answer 'what do you do?'" and got lots of articles about how to give your answer the right spin and turn the question into meaningful conversation — mostly directed at job applicants and people who hate their jobs — but the question's relevance as an accurate reflection of Kultur is lost to the "gig economy" where the precariat hang out. It could be worse, though: you could be a member of the "lumpen precariat." Again from Guy Standing:
"Below the precariat in the social spectrum is what might be called a 'lumpen-precariat,' an underclass of social victims relying on charity … Their numbers are rising remorselessly; they are a badge of shame on society."
I've written before about how I made an ill-timed (at the height of the Great Recession) and otherwise disastrous exit from law practice for a new creative career that bombed,[2] while at the same time dealing with an as-yet-undiagnosed onset of "Primary Progressive MS" (the most degenerative kind you can get). During those years, I barely slowed down as I crashed through "precariat" on the way down from "salariat," before ending up on the roles of the "disabled," a lumpen subclass. I did some awkward old-style networking during those years, and eventually developed my own Q&A. When asked "what do you do?" I would simply describe what I'd been doing that day. When it was my turn, I simply asked, "Who are you?"
Great conversation starters, as it turned out.
Photo is from Nimble Bar Co., re: how to throw an unforgettable party.
[1] Naturally there's been lots of argument about whether the work ethic was Protestant or Catholic… and if Protestant, if it would be more properly "Calvinist" or "Puritan." Sigh.
[2] For the full story, see my book Life Beyond Reason: A Memoir of Mania, available here as a free download and on Amazon for cheap. It's a short, quick read, I promise.
Author Kevin RhodesPosted on May 23, 2019 May 20, 2019 Categories The New Economy, Work, Jobs, CareerTags Calvinist Work Ethic, Capitalism, computer networking, gig economy, Guy Standing, Kultur, Max Weber, Neoliberal capitalism, Neoliberal Economics, Neoliberalism, networking, precariat, Protestant Work Ethic, Puritan Work Ethic, social networking, spirit of capitalism, The Corruption of Capitalism, What do you do?Leave a comment on "What Do You Do?"
Ambition: Promised Land or Wasteland?
A heap of broken images, where the sun beats,
And the dead tree gives no shelter, the cricket no relief,
And the dry stone no sound of water. Only
There is shadow under this red rock,
(Come in under the shadow of this red rock),
And I will show you something different from either
Your shadow at morning striding behind you
Or your shadow at evening rising to meet you;
I will show you fear in a handful of dust."
T.S. Eliot, The Wasteland
We're exploring how inspiration, motivation, and ambition can help create meaningful work. We found that inspiration is essential, but has a dark side that includes mania and delusional risk taking, and that motivation is a ManagementSpeak relic and a brain stressor. As for ambition, much current commentary focuses on my kids' generation, but there's plenty here for the rest of us if we view it in the larger economic context.
Here's a quick summary: Our parents came of age in the glory years of The Job and a Fair Income for the Middle Class. We Baby Boomers were born into that economic model, customized with our own iconoclastic and utopian social visions. The model weakened in the 70's and 80's, but we were too busy with kids and careers to notice. The Gen Xers got in early enough to ride the upward mobility escalator, but now that the Millennials are young adults the model is bankrupt, leaving them to face a whole new gig — as in "gig economy."
All that happened while most of us didn't know it. Along with our policymakers, we were and still are stuck in the cognitive and cultural bias of the jobs heyday. Back in the day, we showered the Millennials with self-esteem-building, be-all-you-can-be positive thinking, and told them to follow their dreams. But when they came of age the economy wasn't set up to support them. Maybe that's why some parents habitually hedged their advice, urging the kids to have a Plan B and for crying out loud quit with all the cold filtering and get a real job.
(For a remarkable look at the current state of economic opportunity, see "I'm a Millionaire Who Creates Zero Jobs. Why Do I Pay Less Tax Than You?" by Morris Pearl, a career Wall Street One Percenter who is now chairman of the Patriotic Millionaires.)
No wonder people write books like Generation Me: Why Today's Young Americans Are More Confident, Assertive, Entitled–and More Miserable Than Ever Before , by psychology professor Jean M. Twenge. This is from the flyleaf:
"In this provocative and newly revised book, headline-making psychologist Dr. Jean Twenge explores why the young people she calls "Generation Me" are tolerant, confident, open-minded, and ambitious but also disengaged, narcissistic, distrustful, and anxious.
"Born in the '80s, and '90s… the children of the Baby Boomers are … feeling the effects of the recession and the changing job market.
"Her often humorous, eyebrow-raising stories about real people vividly bring to life the hopes, disappointments, and challenges of Generation Me. Engaging, controversial, prescriptive, and funny, Generation Me gives Boomers and GenX'ers new and fascinating insights into their offspring, and helps those in their teens, twenties, and thirties find their road to happiness."
I was okay with the blurb until it got to "happiness." I'm more in tune with the article we looked at last time — You Can Do It, Baby! Our Culture Is Rich With Esteem-Boosting Platitudes For Young Dreamers, But The Assurances Are Dishonest And Dangerous," Aeon Magazine (July 17, 2015):
"Roman Krznaric, founding faculty member of The School of Life in London, says that .. we've seen 'rising expectations among everybody for work that's more than just a salary… You see this among people who are highly educated… and that helps explain why job dissatisfaction tends to rise over the past couple of decades, because people are asking … to use their talents or passions in their work.'
"The shift in expectation has resulted in tremendous anxiety over achieving these goals and, paradoxically, sheer delusion. Point out to parents or teens just how difficult it can be to achieve such a high-level career and you'll likely be treated to a catalogue of all the people who bucked the odds. Not just the Oprahs or the Steve Jobses who achieved super-status but the friend of a friend who just bought a modern all-glass home overlooking San Francisco Bay with his signing bonus, or the daughter of a work colleague who was cast in a new TV show, or the neighbour's son who got a scholarship to Harvard.
"If it's possible for them, we want to believe that it's possible for our children too. Besides, who wants to be the killjoy who has to remind the struggling math student that medicine likely isn't an option? … Besides, technically it is possible. At what point do we abandon possible for probable, and encourage our children to do the same?
"'This links to the cult of positive thinking,' says Krznaric, 'where we're always wanting to feel up and good and send positive messages… and so we feel that we should only be sending good messages and positive messages to our children and to young people. That it's somehow wrong or bad or inappropriate to tell them: actually, it isn't possible.'"
Ambition says it's possible. Current economics says it's not. Now what? Back for more next week.
Author Kevin RhodesPosted on March 28, 2019 April 17, 2019 Categories Work, Jobs, CareerTags ambition, career, economic opportunity, economy, Generation Me, gig economy, inspiration, Jean Twenge, job creation, job market, jobs, Millennials, Morris Pearl, motivation, Patriotic MIllionaires, positive thinking, upward mobilityLeave a comment on Ambition: Promised Land or Wasteland?
The End of the Firm
"The official line is that we all have rights and live in a democracy. Other unfortunates who aren't free like we are have to live in police states. These victims obey orders or else, no matter how arbitrary. The authorities keep them under regular surveillance. State bureaucrats control even the smallest details of everyday life. The officials who push them around are answerable only to higher-ups. Informers report regularly to the authorities. All this is supposed to be a very bad thing — and so it is, although it is nothing but a description of the modern workplace."
Bob Black, The Abolition of Work and Other Essays (1985)
Peter Drucker's famous dictum "If you can't measure it, you can't manage it" established math and management as the indisputable co-sovereigns of the modern workplace. As it turns out, Drucker apparently never actually said that[1], but the concept has dominated the workplace since the advent of factories and railroads, telegraphs and electricity. Consider, for example, what it's like to work at Amazon.
But, while math and management prospered together under the Industrial Revolution's mechanistic worldview, today's digitally-driven marketplace demands a freshly-nuanced management style, or in some cases, no management at all. Either idea challenges an even more foundational historical assumption: that commerce is best conducted by a firm that must be managed. Eliminate the firm and you eliminate the need to manage it. Get rid of both, and you have an unimaginably different "description of the modern workplace" than Bob Black wrote about 33 years ago.
Last time, we looked at an article by science writer and artificial intelligence engineer George Zarkadakis called "The Economy Is More A Messy, Fractal Living Thing Than A Machine." In it, he says this about the firm:
Ever since the invention of the assembly line, corporations have been like medieval cities: building walls around themselves and then trading with other 'cities' and consumers. Companies exist because of the need to protect production from volatile market fluctuations, and because it's generally more efficient to consolidate the costs of getting goods and services to market by putting them together under one roof. So said the British economist Ronald Coase in his paper 'The Nature of the Firm' (1937).
"Why do firms exist?" asks Ryan Avent in his book The Wealth of Humans: Work, Power, and Status in the Twenty-First Century (2016). He provides the same answer as Zarkadakis:
According to a 1937 paper by Nobel Prize- winning economist Ronald Coase, it's to bring all the necessary people, processes, and information under one roof, instead of contracting it all out. In exchange for the convenience of one-stop shopping, one-size-fits-all, employees trade their independence and the possibility of greater personal market returns for the firm' management structure and financial capital, which — as long as they conform to the company culture – the way we do things around here — promises to keep them on task and to deliver a paycheck in return.
Today, however, the new "gig economy" is fast making that unimaginable the new normal — and that's only the beginning, says Zarkadakis:
Now, in an era of Ubers-for-everything, companies are changing into platforms that enable, rather than enact, core business processes. The cost of reaching customers has dropped dramatically thanks to the ubiquity of digital networks, and production is being pushed outside the company wall, on to freelancers and self-employed contractors. Market and price fluctuations have been defanged as machine learning and predictive analytics help companies manage such ructions, and on-demand services for labour, office space and infrastructure allow them to be more responsive to changing conditions. Coase's theory is nearing its expiry date.
The so-called 'gig economy' is only the beginning of a profound economic, social and political transformation. For the moment, these new ways of working are still controlled by old-style businesses models – platforms that essentially sell 'trust' via reviews and verification, or by plugging into existing financial and legal systems. Airbnb, eBay and Uber succeed in making money out of other people's work and assets because they provide guarantees for good seller-buyer behaviour, while connecting to the 'old world' of banks, courts and government. But this hybrid model of doing digital business is about to change.
Avent concurs, and describes two key dynamics of the new anti-firm business model: operating culture and rent: — how a business gets things done, and whether it owns the kinds of assets it can let others use, for a price:
Current workplace trends are bidding fair to tear down the firm model of operating. If you take employees out from under the firm umbrella — make them mostly freelancers, outsource jobs to countries on the make — then what's left of value is mostly the company's way of getting things done and the assets for which it can charge rent, in the economic sense of billing a premium for scarce assets. How assets become scarce becomes an essential policy-making function. These become essential "intangible" or "social" capital, replacing "human" capital.]
We'll be talking more about social capital, rent, and other changing dynamics of the workplace.
[1] According to the Drucker Institute, Drucker never actually said that. And see this Forbes article for a rousing condemnation of the idea.
Author Kevin RhodesPosted on July 5, 2018 July 3, 2018 Categories The New EconomyTags Amazon culture, economic rents, economics, George Zarkadakis, gig economy, Industrial Revolution, Peter Drucker quote, rentier economy, Ronald Coase, Ryan Avent, social capital, The Firm, The Nature of the Firm, workplace, workplace cultureLeave a comment on The End of the Firm
Gonna Be a Bright, Bright, Sunshiny Day
We met Sebastian Thrun last time. He's a bright guy with a sunshiny disposition who's not worried about robots and artificial intelligence taking over all the good jobs, even his own. Instead, he's perfectly okay if technology eliminates most of what he does every day because he believes human ingenuity will fill the vacuum with something better. This is from his conversation with TED curator Chris Anderson:
"If I look at my own job as a CEO, I would say 90 percent of my work is repetitive, I don't enjoy it, I spend about four hours per day on stupid, repetitive email. And I'm burning to have something that helps me get rid of this. Why? Because I believe all of us are insanely creative… What this will empower is to turn this creativity into action.
"We've unleashed this amazing creativity by de-slaving us from farming and later, of course, from factory work and have invented so many things. It's going to be even better, in my opinion. And there's going to be great side effects. One of the side effects will be that things like food and medical supply and education and shelter and transportation will all become much more affordable to all of us, not just the rich people."
Anderson sums it up this way:
"So the jobs that are getting lost, in a way, even though it's going to be painful, humans are capable of more than those jobs. This is the dream. The dream is that humans can rise to just a new level of empowerment and discovery. That's the dream."
Another bright guy with a sunshiny disposition is David Lee, Vice President of Innovation and the Strategic Enterprise Fund for UPS. He, too, shares the dream that technology will turn human creativity loose on a whole new kind of working world. Here's his TED talk (click the image):
Like Sebastian Thrun, he's no Pollyanna: he understands that yes, technology threatens jobs:
"There's a lot of valid concern these days that our technology is getting so smart that we've put ourselves on the path to a jobless future. And I think the example of a self-driving car is actually the easiest one to see. So these are going to be fantastic for all kinds of different reasons. But did you know that 'driver' is actually the most common job in 29 of the 50 US states? What's going to happen to these jobs when we're no longer driving our cars or cooking our food or even diagnosing our own diseases?
"Well, a recent study from Forrester Research goes so far to predict that 25 million jobs might disappear over the next 10 years. To put that in perspective, that's three times as many jobs lost in the aftermath of the financial crisis. And it's not just blue-collar jobs that are at risk. On Wall Street and across Silicon Valley, we are seeing tremendous gains in the quality of analysis and decision-making because of machine learning. So even the smartest, highest-paid people will be affected by this change.
"What's clear is that no matter what your job is, at least some, if not all of your work, is going to be done by a robot or software in the next few years."
But that's not the end of the story. Like Thrun, he believes that the rise of the robots will clear the way for unprecedented levels of human creativity — provided we move fast:
"The good news is that we have faced down and recovered two mass extinctions of jobs before. From 1870 to 1970, the percent of American workers based on farms fell by 90 percent, and then again from 1950 to 2010, the percent of Americans working in factories fell by 75 percent. The challenge we face this time, however, is one of time. We had a hundred years to move from farms to factories, and then 60 years to fully build out a service economy.
"The rate of change today suggests that we may only have 10 or 15 years to adjust, and if we don't react fast enough, that means by the time today's elementary-school students are college-aged, we could be living in a world that's robotic, largely unemployed and stuck in kind of un-great depression.
"But I don't think it has to be this way. You see, I work in innovation, and part of my job is to shape how large companies apply new technologies. Certainly some of these technologies are even specifically designed to replace human workers. But I believe that if we start taking steps right now to change the nature of work, we can not only create environments where people love coming to work but also generate the innovation that we need to replace the millions of jobs that will be lost to technology.
"I believe that the key to preventing our jobless future is to rediscover what makes us human, and to create a new generation of human-centered jobs that allow us to unlock the hidden talents and passions that we carry with us every day."
More from David Lee next time.
If all this bright sunshiny perspective made you think of that old tune, you might treat yourself to a listen. It's short, you've got time.
And for a look at a current legal challenge to the "gig economy" across the pond, check out this Economist article from earlier this week.
Author Kevin RhodesPosted on February 22, 2018 February 20, 2018 Categories The New EconomyTags Artificial Intelligence, David Lee TED talk, freelance, gig economy, gig jobs, job, jobs of the future, machine learning, Robots, Sebastian Thrun TED talk, trends, workLeave a comment on Gonna Be a Bright, Bright, Sunshiny Day

redpajama_set_name: RedPajamaCommonCrawl