text:
namespace google {
namespace protobuf {
namespace io {
namespace {

// As mentioned above, I don't trust ctype.h due to the presence of "locales".
// So, I have written replacement functions here.  Someone please smack me if
// this is a bad idea or if there is some way around this.
//
// These "character classes" are designed to be used in template methods.
// For instance, Tokenizer::ConsumeZeroOrMore<Whitespace>() will eat
// whitespace.

// Note:  No class is allowed to contain '\0', since this is used to mark end-
//   of-input and is handled specially.

#define CHARACTER_CLASS(NAME, EXPRESSION)      \
  class NAME {                                 \
   public:                                     \
    static inline bool InClass(char c) {       \
      return EXPRESSION;                       \
    }                                          \
  }

CHARACTER_CLASS(Whitespace, c == ' ' || c == '\n' || c == '\t' ||
                            c == '\r' || c == '\v' || c == '\f');

CHARACTER_CLASS(Unprintable, c < ' ' && c > '\0');

CHARACTER_CLASS(Digit, '0' <= c && c <= '9');
CHARACTER_CLASS(OctalDigit, '0' <= c && c <= '7');
CHARACTER_CLASS(HexDigit, ('0' <= c && c <= '9') ||
                          ('a' <= c && c <= 'f') ||
                          ('A' <= c && c <= 'F'));

CHARACTER_CLASS(Letter, ('a' <= c && c <= 'z') ||
                        ('A' <= c && c <= 'Z') ||
                        (c == '_'));

CHARACTER_CLASS(Alphanumeric, ('a' <= c && c <= 'z') ||
                              ('A' <= c && c <= 'Z') ||
                              ('0' <= c && c <= '9') ||
                              (c == '_'));

CHARACTER_CLASS(Escape, c == 'a' || c == 'b' || c == 'f' || c == 'n' ||
                        c == 'r' || c == 't' || c == 'v' || c == '\\' ||
                        c == '?' || c == '\'' || c == '\"');

#undef CHARACTER_CLASS

// Given a char, interpret it as a numeric digit and return its value.
// This supports any number base up to 36.
inline int DigitValue(char digit) {
  if ('0' <= digit && digit <= '9') return digit - '0';
  if ('a' <= digit && digit <= 'z') return digit - 'a' + 10;
  if ('A' <= digit && digit <= 'Z') return digit - 'A' + 10;
  return -1;
}

// Inline because it's only used in one place.
inline char TranslateEscape(char c) {
  switch (c) {
    case 'a':  return '\a';
    case 'b':  return '\b';
    case 'f':  return '\f';
    case 'n':  return '\n';
    case 'r':  return '\r';
    case 't':  return '\t';
    case 'v':  return '\v';
    case '\\': return '\\';
    case '?':  return '\?';    // Trigraphs = :(
    case '\'': return '\'';
    case '"':  return '\"';

    // We expect escape sequences to have been validated separately.
    default:   return '?';
  }
}

}  // anonymous namespace

ErrorCollector::~ErrorCollector() {}

// ===================================================================

Tokenizer::Tokenizer(ZeroCopyInputStream* input,
                     ErrorCollector* error_collector)
  : input_(input),
    error_collector_(error_collector),
    buffer_(NULL),
    buffer_size_(0),
    buffer_pos_(0),
    read_error_(false),
    line_(0),
    column_(0),
    token_start_(-1),
    allow_f_after_float_(false),
    comment_style_(CPP_COMMENT_STYLE) {

  current_.line = 0;
  current_.column = 0;
  current_.end_column = 0;
  current_.type = TYPE_START;

  Refresh();
}

Tokenizer::~Tokenizer() {
  // If we had any buffer left unread, return it to the underlying stream
  // so that someone else can read it.
  if (buffer_size_ > buffer_pos_) {
    input_->BackUp(buffer_size_ - buffer_pos_);
  }
}

// -------------------------------------------------------------------
// Internal helpers.

void Tokenizer::NextChar() {
  // Update our line and column counters based on the character being
  // consumed.
  if (current_char_ == '\n') {
    ++line_;
    column_ = 0;
  } else if (current_char_ == '\t') {
    column_ += kTabWidth - column_ % kTabWidth;
  } else {
    ++column_;
  }

  // Advance to the next character.
  ++buffer_pos_;
  if (buffer_pos_ < buffer_size_) {
    current_char_ = buffer_[buffer_pos_];
  } else {
    Refresh();
  }
}

void Tokenizer::Refresh() {
  if (read_error_) {
    current_char_ = '\0';
    return;
  }

  // If we're in a token, append the rest of the buffer to it.
  if (token_start_ >= 0 && token_start_ < buffer_size_) {
    current_.text.append(buffer_ + token_start_, buffer_size_ - token_start_);
    token_start_ = 0;
  }

  const void* data = NULL;
  buffer_ = NULL;
  buffer_pos_ = 0;
  do {
    if (!input_->Next(&data, &buffer_size_)) {
      // end of stream (or read error)
      buffer_size_ = 0;
      read_error_ = true;
      current_char_ = '\0';
      return;
    }
  } while (buffer_size_ == 0);

  buffer_ = static_cast<const char*>(data);

  current_char_ = buffer_[0];
}

inline void Tokenizer::StartToken() {
  token_start_ = buffer_pos_;
  current_.type = TYPE_START;    // Just for the sake of initializing it.
  current_.text.clear();
  current_.line = line_;
  current_.column = column_;
}

inline void Tokenizer::EndToken() {
  // Note:  The if() is necessary because some STL implementations crash when
  //   you call string::append(NULL, 0), presumably because they are trying to
  //   be helpful by detecting the NULL pointer, even though there's nothing
  //   wrong with reading zero bytes from NULL.
  if (buffer_pos_ != token_start_) {
    current_.text.append(buffer_ + token_start_, buffer_pos_ - token_start_);
  }
  token_start_ = -1;
  current_.end_column = column_;
}

// -------------------------------------------------------------------
// Helper methods that consume characters.

template<typename CharacterClass>
inline bool Tokenizer::LookingAt() {
  return CharacterClass::InClass(current_char_);
}

template<typename CharacterClass>
inline bool Tokenizer::TryConsumeOne() {
  if (CharacterClass::InClass(current_char_)) {
    NextChar();
    return true;
  } else {
    return false;
  }
}

inline bool Tokenizer::TryConsume(char c) {
  if (current_char_ == c) {
    NextChar();
    return true;
  } else {
    return false;
  }
}

template<typename CharacterClass>
inline void Tokenizer::ConsumeZeroOrMore() {
  while (CharacterClass::InClass(current_char_)) {
    NextChar();
  }
}

template<typename CharacterClass>
inline void Tokenizer::ConsumeOneOrMore(const char* error) {
  if (!CharacterClass::InClass(current_char_)) {
    AddError(error);
  } else {
    do {
      NextChar();
    } while (CharacterClass::InClass(current_char_));
  }
}

// -------------------------------------------------------------------
// Methods that read whole patterns matching certain kinds of tokens
// or comments.

void Tokenizer::ConsumeString(char delimiter) {
  while (true) {
    switch (current_char_) {
      case '\0':
      case '\n': {
        AddError("String literals cannot cross line boundaries.");
        return;
      }

      case '\\': {
        // An escape sequence.
        NextChar();
        if (TryConsumeOne<Escape>()) {
          // Valid escape sequence.
        } else if (TryConsumeOne<OctalDigit>()) {
          // Possibly followed by two more octal digits, but these will
          // just be consumed by the main loop anyway so we don't need
          // to do so explicitly here.
        } else if (TryConsume('x') || TryConsume('X')) {
          if (!TryConsumeOne<HexDigit>()) {
            AddError("Expected hex digits for escape sequence.");
          }
          // Possibly followed by another hex digit, but again we don't care.
        } else {
          AddError("Invalid escape sequence in string literal.");
        }
        break;
      }

      default: {
        if (current_char_ == delimiter) {
          NextChar();
          return;
        }
        NextChar();
        break;
      }
    }
  }
}

Tokenizer::TokenType Tokenizer::ConsumeNumber(bool started_with_zero,
                                              bool started_with_dot) {
  bool is_float = false;

  if (started_with_zero && (TryConsume('x') || TryConsume('X'))) {
    // A hex number (started with "0x").
    ConsumeOneOrMore<HexDigit>("\"0x\" must be followed by hex digits.");

  } else if (started_with_zero && LookingAt<Digit>()) {
    // An octal number (had a leading zero).
    ConsumeZeroOrMore<OctalDigit>();
    if (LookingAt<Digit>()) {
      AddError("Numbers starting with leading zero must be in octal.");
      ConsumeZeroOrMore<Digit>();
    }

  } else {
    // A decimal number.
    if (started_with_dot) {
      is_float = true;
      ConsumeZeroOrMore<Digit>();
    } else {
      ConsumeZeroOrMore<Digit>();

      if (TryConsume('.')) {
        is_float = true;
        ConsumeZeroOrMore<Digit>();
      }
    }

    if (TryConsume('e') || TryConsume('E')) {
      is_float = true;
      TryConsume('-') || TryConsume('+');
      ConsumeOneOrMore<Digit>("\"e\" must be followed by exponent.");
    }

    if (allow_f_after_float_ && (TryConsume('f') || TryConsume('F'))) {
      is_float = true;
    }
  }

  if (LookingAt<Letter>()) {
    AddError("Need space between number and identifier.");
  } else if (current_char_ == '.') {
    if (is_float) {
      AddError(
        "Already saw decimal point or exponent; can't have another one.");
    } else {
      AddError("Hex and octal numbers must be integers.");
    }
  }

  return is_float ? TYPE_FLOAT : TYPE_INTEGER;
}

void Tokenizer::ConsumeLineComment() {
  while (current_char_ != '\0' && current_char_ != '\n') {
    NextChar();
  }
  TryConsume('\n');
}

void Tokenizer::ConsumeBlockComment() {
  int start_line = line_;
  int start_column = column_ - 2;

  while (true) {
    while (current_char_ != '\0' &&
           current_char_ != '*' &&
           current_char_ != '/') {
      NextChar();
    }

    if (TryConsume('*') && TryConsume('/')) {
      // End of comment.
      break;
    } else if (TryConsume('/') && current_char_ == '*') {
      // Note:  We didn't consume the '*' because if there is a '/' after it
      //   we want to interpret that as the end of the comment.
      AddError(
        "\"/*\" inside block comment.  Block comments cannot be nested.");
    } else if (current_char_ == '\0') {
      AddError("End-of-file inside block comment.");
      error_collector_->AddError(
        start_line, start_column, "  Comment started here.");
      break;
    }
  }
}

// -------------------------------------------------------------------

bool Tokenizer::Next() {
  previous_ = current_;

  // Did we skip any characters after the last token?
  bool skipped_stuff = false;

  while (!read_error_) {
    if (TryConsumeOne<Whitespace>()) {
      ConsumeZeroOrMore<Whitespace>();

    } else if (comment_style_ == CPP_COMMENT_STYLE && TryConsume('/')) {
      // Starting a comment?
      if (TryConsume('/')) {
        ConsumeLineComment();
      } else if (TryConsume('*')) {
        ConsumeBlockComment();
      } else {
        // Oops, it was just a slash.  Return it.
        current_.type = TYPE_SYMBOL;
        current_.text = "/";
        current_.line = line_;
        current_.column = column_ - 1;
        return true;
      }

    } else if (comment_style_ == SH_COMMENT_STYLE && TryConsume('#')) {
      ConsumeLineComment();

    } else if (LookingAt<Unprintable>() || current_char_ == '\0') {
      AddError("Invalid control characters encountered in text.");
      NextChar();
      // Skip more unprintable characters, too.  But, remember that '\0' is
      // also what current_char_ is set to after EOF / read error.  We have
      // to be careful not to go into an infinite loop of trying to consume
      // it, so make sure to check read_error_ explicitly before consuming
      // '\0'.
      while (TryConsumeOne<Unprintable>() ||
             (!read_error_ && TryConsume('\0'))) {
        // Ignore.
      }

    } else {
      // Reading some sort of token.
      StartToken();

      if (TryConsumeOne<Letter>()) {
        ConsumeZeroOrMore<Alphanumeric>();
        current_.type = TYPE_IDENTIFIER;
      } else if (TryConsume('0')) {
        current_.type = ConsumeNumber(true, false);
      } else if (TryConsume('.')) {
        // This could be the beginning of a floating-point number, or it could
        // just be a '.' symbol.

        if (TryConsumeOne<Digit>()) {
          // It's a floating-point number.
          if (previous_.type == TYPE_IDENTIFIER && !skipped_stuff) {
            // We don't accept syntax like "blah.123".
            error_collector_->AddError(line_, column_ - 2,
              "Need space between identifier and decimal point.");
          }
          current_.type = ConsumeNumber(false, true);
        } else {
          current_.type = TYPE_SYMBOL;
        }
      } else if (TryConsumeOne<Digit>()) {
        current_.type = ConsumeNumber(false, false);
      } else if (TryConsume('\"')) {
        ConsumeString('\"');
        current_.type = TYPE_STRING;
      } else if (TryConsume('\'')) {
        ConsumeString('\'');
        current_.type = TYPE_STRING;
      } else {
        NextChar();
        current_.type = TYPE_SYMBOL;
      }

      EndToken();
      return true;
    }

    skipped_stuff = true;
  }

  // EOF
  current_.type = TYPE_END;
  current_.text.clear();
  current_.line = line_;
  current_.column = column_;
  current_.end_column = column_;
  return false;
}

// -------------------------------------------------------------------
// Token-parsing helpers.  Remember that these don't need to report
// errors since any errors should already have been reported while
// tokenizing.  Also, these can assume that whatever text they
// are given is text that the tokenizer actually parsed as a token
// of the given type.

bool Tokenizer::ParseInteger(const string& text, uint64 max_value,
                             uint64* output) {
  // Sadly, we can't just use strtoul() since it is only 32-bit and strtoull()
  // is non-standard.  I hate the C standard library.  :(

//  return strtoull(text.c_str(), NULL, 0);

  const char* ptr = text.c_str();
  int base = 10;
  if (ptr[0] == '0') {
    if (ptr[1] == 'x' || ptr[1] == 'X') {
      // This is hex.
      base = 16;
      ptr += 2;
    } else {
      // This is octal.
      base = 8;
    }
  }

  uint64 result = 0;
  for (; *ptr != '\0'; ptr++) {
    int digit = DigitValue(*ptr);
    GOOGLE_LOG_IF(DFATAL, digit < 0 || digit >= base)
      << " Tokenizer::ParseInteger() passed text that could not have been"
         " tokenized as an integer: " << CEscape(text);
    if (digit > max_value || result > (max_value - digit) / base) {
      // Overflow.
      return false;
    }
    result = result * base + digit;
  }

  *output = result;
  return true;
}

double Tokenizer::ParseFloat(const string& text) {
  const char* start = text.c_str();
  char* end;
  double result = NoLocaleStrtod(start, &end);

  // "1e" is not a valid float, but if the tokenizer reads it, it will
  // report an error but still return it as a valid token.  We need to
  // accept anything the tokenizer could possibly return, error or not.
  if (*end == 'e' || *end == 'E') {
    ++end;
    if (*end == '-' || *end == '+') ++end;
  }

  // If the Tokenizer had allow_f_after_float_ enabled, the float may be
  // suffixed with the letter 'f'.
  if (*end == 'f' || *end == 'F') {
    ++end;
  }

  GOOGLE_LOG_IF(DFATAL, end - start != text.size() || *start == '-')
    << " Tokenizer::ParseFloat() passed text that could not have been"
       " tokenized as a float: " << CEscape(text);
  return result;
}

void Tokenizer::ParseStringAppend(const string& text, string* output) {
  // Reminder:  text[0] is always the quote character.  (If text is
  //   empty, it's invalid, so we'll just return.)
  if (text.empty()) {
    GOOGLE_LOG(DFATAL)
      << " Tokenizer::ParseStringAppend() passed text that could not"
         " have been tokenized as a string: " << CEscape(text);
    return;
  }

  output->reserve(output->size() + text.size());

  // Loop through the string copying characters to "output" and
  // interpreting escape sequences.  Note that any invalid escape
  // sequences or other errors were already reported while tokenizing.
  // In this case we do not need to produce valid results.
  for (const char* ptr = text.c_str() + 1; *ptr != '\0'; ptr++) {
    if (*ptr == '\\' && ptr[1] != '\0') {
      // An escape sequence.
      ++ptr;

      if (OctalDigit::InClass(*ptr)) {
        // An octal escape.  May one, two, or three digits.
        int code = DigitValue(*ptr);
        if (OctalDigit::InClass(ptr[1])) {
          ++ptr;
          code = code * 8 + DigitValue(*ptr);
        }
        if (OctalDigit::InClass(ptr[1])) {
          ++ptr;
          code = code * 8 + DigitValue(*ptr);
        }
        output->push_back(static_cast<char>(code));

      } else if (*ptr == 'x') {
        // A hex escape.  May zero, one, or two digits.  (The zero case
        // will have been caught as an error earlier.)
        int code = 0;
        if (HexDigit::InClass(ptr[1])) {
          ++ptr;
          code = DigitValue(*ptr);
        }
        if (HexDigit::InClass(ptr[1])) {
          ++ptr;
          code = code * 16 + DigitValue(*ptr);
        }
        output->push_back(static_cast<char>(code));

      } else {
        // Some other escape code.
        output->push_back(TranslateEscape(*ptr));
      }

    } else if (*ptr == text[0]) {
      // Ignore quote matching the starting quote.
    } else {
      output->push_back(*ptr);
    }
  }

  return;
}

}  // namespace io
}  // namespace protobuf
}  // namespace google

redpajama_set_name: RedPajamaGithub


Nov.18 (GMM) Spa-Francorchamps has been issued a new operating license.
The popular and historic Belgian grand prix venue had its original license revoked recently by an administrative court, following the complaints of local residents about noise.
But according to rtbf.be, a new license was signed in earlier this week by Philippe Henry, the planning minister of the Wallonia government.
The new operating license is reportedly valid until March 2011.


text:
Q: Responsive text box with GeometryReader I'm trying to create responsive changes to some view parameters (e.g. font size, container box size) based on how much of a given space a text element is occupying at a given moment. The text must also be pushed to the right side of the space, which I'm accomplishing by grouping it with a Spacer() inside an HStack. Because of the space-greediness (and a related behavior I don't understand) of GeometryReader, I'm having a hard time getting the sizing variables I need without breaking the intended structure and behavior of the view.
Here's a version of the view without the responsive changes. The text appears where it should within the rounded rectangle:
struct responsiveTextBox: View {
    @State var text = "Hi. "
    var body: some View {
        VStack {
            ZStack{
                RoundedRectangle(cornerRadius: 5)
                    .stroke()
                HStack {
                    Spacer()
                    Text(text)
                }
            }
            .frame(width: 300, height: 100)
            Button("Add text") {
                text += "Hi. "
            }
            Button("Erase text") {
                text = ""
            }
        }
    }
}

In order to implement functionality that responds to the relative amount of space occupied by the text, I need to know the size of either the Spacer() element or the Text() element itself. Wrapping the Spacer() in a GeometryReader doesn't work, because unlike the Spacer alone, the GeometryReader won't shrink to less than 50% of the HStack's width:
[...]
HStack {
    GeometryReader() {freeSpace in
        Spacer()
    }
    Text(text)
}
[...]

I don't really understand this behavior.
The alternative - wrapping the Text() element in a GeometryReader - also doesn't work, because the GeometryReader's space-greediness overrides the Spacer's, and the text appears on the left side of the rounded rectangle.
HStack {
    Spacer()
    GeometryReader() {textSpace in
        Text(text)
    }
}

What's the right way to do this?

A: In cases like these you can use GeometryReader in an overlay or background of the element you are interested in – so it does not affect the layout.
IMHO you also don't need the Spacer or HStack, just set the alignment on ZStack.
And ultimately you might want to look into the new Layout protocol. It seems to be the way to go for what you want to achieve. Example here
struct ContentView: View {

    @State var text = "Hi. "
    @State var textSize = CGSize.zero

    var body: some View {
        VStack {
            ZStack(alignment: .trailing) {
                RoundedRectangle(cornerRadius: 5)
                    .stroke()
                Text(text)
                    .id(text)
                    .background( GeometryReader { geo in Color.clear.onAppear { textSize = geo.size }})
            }
            .frame(width: 300, height: 100)

            Button("Add text") {
                text += "Hi. "
            }
            Button("Erase text") {
                text = ""
            }
            Text("Width: \(textSize.width), Height: \(textSize.height)")
        }
    }
}

redpajama_set_name: RedPajamaStackExchange


text:
Q: Structural programming - What is this javascript pattern called? Is it okay using it? var contextMenu = {

    isVisible : false,

    open : function()
    {
            //some code here
    },

    close : function()
    {
            //some code here
    }
}

I'm using this pattern heavily in my code. My application can be done using structural programming without need for classes/object instantiation.
First I used to write something like this:
var isContextMenuVisible : false,

function openContextMenu()
{
    //some code here
}

function closeContextMenu()
{
    //some code here
}

Is this okay? What is this pattern called? What are the disadvantages?
EDIT: This is called as Singleton pattern
Btw, is it okay to use capitalized names for the object? Like ContextMenu instead of contextMenu? Would that be a proper convention?

A: It is okay to using that pattern, from what you were writing before, I would say that you were scoping. The advantages is your not creating global variables, which is always a good thing. The disadvantages is that you cannot access any of the values of the object until the entire object is created ( I get caught by this a lot ).
I am not sure this pattern has a name, but I suppose, it's object literal creation.

A: Singleton is a design pattern that forces the classes that implement it to offer only one point of access to them. Usually singletons are used for centralized management of internal or external resources and they provide a global point of access to themselves.http://addyosmani.com/resources/essentialjsdesignpatterns/book/#singletonpatternjavascript

A: If you dont want to use classes|object instantiation, then best way is (from your samples):
function openContextMenu() {
  // some code here
  // you can use 'this' to point to current object
}
function closeContextMenu() {
  // some code here
  // you can use 'this' to point to current object
}
var contextMenu = {
    isVisible : false,
    open : openContextMenu,
    close : closeContextMenu
};
var contextMenu2 = {
    isVisible : false,
    open : openContextMenu,
    close : closeContextMenu
};

This allow you to create more than one object, and minimize memory usage.

But next is more ease:
function ConextMenu() {
}
ConextMenu.prototype.isVisible=false;
ConextMenu.prototype.open=function openContextMenu() {};
ConextMenu.prototype.close=function closeContextMenu() {};

var contextMenu = new ConextMenu;
var contextMenu2 = new ConextMenu; // or new ContextMenu()


text:
Q: mysql string to date conversion Need help to suggest sql query where I have a varchar column called Timing like below
+---------------------+
| Timing         | MO |
+---------------------+
|7/11/2016 20:45 |ABC |
|7/12/2016 20:45 |ABC |
|2016-07-11 00:00|ABC |
|2016-07-12 00:00|ABC |
+---------------------+

I need to extract date from the Timing column but tricky part is the date is not always in same format. I need to output timing column as below
+-------------+
| Timing  | MO|
+-------------+
|7/11/2016|ABC|
|7/12/2016|ABC|
|7/11/2016|ABC|
|7/12/2016|ABC|
+-------------+

A: It's simple enough using substring and replace functions to cast varchar as data and recast them to you required output.
for example
DROP TABLE T;
CREATE TABLE T (TIMING VARCHAR(20),MO VARCHAR(2));
INSERT INTO T VALUES
('7/11/2016 20:45' ,'AB'),
('7/12/2016 20:45' ,'AB'),
('2016-07-11 00:00','AB'),
('2016-07-12 00:00','AB'),
('27/06/2016 20:45' ,'AB'),
('29/05/2016 20:45' ,'AB')
*/

SELECT  *,
            CASE
                WHEN INSTR(TIMING,'/') = 0 THEN
                    CASE WHEN INSTR(TIMING,'-') = 5 THEN  CAST(TIMING AS DATE)
                    end
                WHEN INSTR(TIMING,'/') = 3 THEN
                    CAST(
                    CONCAT(
                    SUBSTRING(CONCAT('0',TIMING),8,4)
                    ,'-'
                    ,SUBSTRING(CONCAT('0',TIMING),5,2)
                    ,'-'
                    ,SUBSTRING(CONCAT('0',TIMING),1,2)
                    )
                    AS DATE
                    )
                WHEN INSTR(TIMING,'/') = 2 THEN
                    CAST(
                    CONCAT(
                    SUBSTRING(CONCAT('0',TIMING),7,4)
                    ,'-'
                    ,SUBSTRING(CONCAT('0',TIMING),4,2)
                    ,'-'
                    ,SUBSTRING(CONCAT('0',TIMING),1,2)
                    )
                    AS DATE
                    )
            END
FROM        T

results in
-----------------------------------------------------------------------------+
| 7/11/2016 20:45  | AB   | 2016-11-07                                                                                |
| 7/12/2016 20:45  | AB   | 2016-12-07                                                                                |
| 2016-07-11 00:00 | AB   | 2016-07-11                                                                                |
| 2016-07-12 00:00 | AB   | 2016-07-12                                                                                |
| 27/06/2016 20:45 | AB   | 2016-06-02                                                                                |
| 29/05/2016 20:45 | AB   | 2016-05-02                                                                                |
+------------------+------+-----------------------------------------------------

You do have to code for every known variant - in this case I have identified that 7/11/2016 needs to left padded with zero and slashes replaced with dashs before date conversion. Hopefully you have a limited number of date variations in your source to code for and you will end up with a large query - but that's life. God luck,


text:
Aung San Suu Kyi: From symbol of human rights to fighting claims of genocide
Monday 6 December 2021 07:59, UK
Aung San Suu Kyi: From hero to the Hague
Aung San Suu Kyi was seen as one of the greatest hopes for human rights around the world for most of her life.
After a long struggle against the country's military rulers and many years under house arrest, she was allowed to run in the first openly-contested election in 25 years in 2015, and won in a landslide.
Aung San Suu Kyi was born in 1945, the daughter of independence hero General Aung San, who was assassinated when she was two years old, just before Myanmar gained independence from British colonial rule in 1948.
Image: The National League for Democracy won November's election
In 1960, she went to India with her mother and four years later she went to Oxford University, where she met her future husband Michael Aris.
After spending time in Japan and Bhutan, she settled in the UK with her husband to raise their two children.
Myanmar: Acting president and army on streets
In 1988 she returned to Yangon to care for her dying mother.
But she became involved in protests against the military. Inspired by the non-violent campaigns of Martin Luther King and Mahatma Gandhi, she organised rallies and called for elections.
More on Aung San Suu Kyi
Aung San Suu Kyi: Myanmar's deposed leader to serve four more years in prison
Aung San Suu Kyi: Myanmar's deposed leader receives two-year jail sentence
Myanmar: More than 5,600 prisoners to be released by junta as Aung San Suu Kyi remains incarcerated
The leaders of the protests were killed or jailed and she was put under house arrest in 1989, where she remained until 2010, with brief periods of release.
Her party - the National League for Democracy - won the 1990 election but the junta refused to hand over control.
In 1991, she was awarded the Nobel Peace Prize but it had to be collected by her eldest son. She was allowed to leave Myanmar but she feared that - if she did - she might not be allowed back in.
May 2018: Rohingya refugees call for an investigation into war crimes
She won the 2015 election after calling for an end to the country's civil war, reducing the army's involvement in politics and courting foreign investment. She also vowed to help the Rohingya Muslims, who had long been targeted for mistreatment.
She became the first state counsellor of Myanmar - the title of the de facto head of government, equivalent to a prime minister.
In 2017, Rohingya militants attacked security forces in Rakhine State, prompting a military response that included killing people, torching villages and forcing hundreds of thousands to flee their homes, actions described by the UN as ethnic cleansing.
Ms Suu Kyi's response was the beginning of her fall from grace in the eyes of the outside world. She blamed "terrorists" for an "iceberg of misinformation", and defended the military, saying soldiers were exercising the "rule of law".
Dec 2019: Aung San Suu Kyi denies Myanmar was engaged in ethnic cleansing or genocide
In November that year, Oxford's council took back the Freedom of the City it had given her in 1997, and in November 2018 she was stripped of Amnesty International's Ambassador Of Conscience award, which she received in 2009 while under house arrest. Both organisations cited her refusal to act over the military's treatment of the Rohingya.
In 2019, she was at the Hague's International Court of Justice to face charges of genocide brought against Myanmar, but said the crackdown had been a legitimate military operation against terrorists.
Despite this, the 75-year-old remains popular at home - in 2020 a survey by the People's Alliance for Credible Elections found that 79% of people trusted her - up from 70% the year before.
In November 2020, she won a landslide victory in the country's election.
On 1 February 2021, during an apparent coup, she was detained by the military in a morning raid.
A number of charges were brought against Ms Suu Kyi and on 6 December 2021 she received a four-year jail sentence as a court delivered the first verdicts in a series of cases which could see her imprisoned for decades.
Charges against the 76-year-old include corruption, possessing unregistered walkie-talkies, and violating the official secrets act, with the combined charges estimated to carry a jail sentence of over 100 years.
Ms Suu Kyi's supporters argue the charges are false and are intended to block her from returning to power.

redpajama_set_name: RedPajamaCommonCrawl


This form will be used to change your Medica Prime Solution® Cost plan, change your Part D Rider, or add a Part D Rider. You typically can only change your Part D Rider or add a Part D Rider during the Annual Election Period (AEP) which is October 15 - December 7, or if you qualify for a Special Enrollment Period (SEP). To make a Part D change or add Part D outside of AEP, you must have a valid SEP reason.
You'll be able to review your information and make changes before you submit your completed change form. Have your Medica member ID card ready, as you will need it when filling out this form. Completing this form will take about 5 to 10 minutes.
Please Note: If your permanent residence address has changed, contact Medica Customer Service at the phone number below to discuss your plan options before completing this form.
If you have any questions or if you need enrollment information in another language or a format (like Braille), please contact Medica Customer Service from 8 a.m. to 8 p.m. Central, seven days a week, toll free at 1-855-857-2039 (TTY: 711). Access to representatives may be limited at times.
Please enter your name exactly the way it appears on your Medica member ID card.
Birthdate (mm/dd/yyyy) The birthdate field format must be mm/dd/yyyy.
Medica member ID Member ID is required.
Group number Group ID is required.
The Group number you have entered is not linked to an individual Medica Prime Solution® Cost plan. Please check your Medica member ID card to ensure you have entered the correct group number.
If you need to request a change from a Group (employer sponsored) Medicare plan to an Individual Medicare plan, you need to submit a new application. Submit a new application.
If you have any questions or if you need enrollment information in another language or a format such as Braille, please contact Medica Customer Service from 8 a.m. to 8 p.m. Central, seven days a week, at 952-992-2345 or toll free at 1-800-906-5432 (TTY: 711). Access to representatives may be limited at times.
Medica is a Cost Plan with a Medicare contract. Enrollment in Medica depends on contract renewal. You must continue to pay your Medicare Part B premium. The formulary may change at any time. You will receive notice when necessary.


text:
Q: Find the modo value I have given a log value Y , i want to calculate the anti log of Y i.e
ans = (Math.pow(10,Y))%mod

where mod = 1e9+7 and the anti log of Y will always be integer i.e Y is calculate as follow Y= log(a)   a is very large integer of range 10^100000
So for given Y i need to calculate ans ? How to do that considering the mod operation.
My Approach
double D = Y -(int)Y
long Pow = (long)Y

  for(int i=1;i<=Pow;i++) ans = (ans*10)%mod;

  ans = (ans*Math.pow(10,D))%mod

But it's not correct can someone suggest be efficient approach here ? BigDecimal can be useful there ?
For Example:
Y = 16.222122660468525

Using the straight forward method and rounding off i.e Math.log(10,Y) give me 1667718169966651 but using loops it's give me 16677181699666510. I am not using mod now just explaining that there is an error.
Here Y is small so direct method works and we can take mod easily. if Y is range of 10000 it will not work and overflow so we have to used mod.

A: I guess it's should work
double D = Y -(int)Y
long Pow = (long)Y

for(int i=1;i<=Pow;i++) ans = (ans*10)%mod;

 ans = (ans*Math.pow(10,D))
 ans = Math.round(ans)
 ans%=mod

A: There is an error in your judgement here - the loop method is not at fault.
The value of a in your example has 17 integer digits. From this stackoverflow post, a double has ~16 significant digits of precision. Thus both the loop and direct calculations are in fact being limited by lack of precision.
(Just to confirm, using a high precision calculator, the value of a is 16677181699666650.8689546562984070600381634077.... Thus both of your values are incorrect - unless you copied them wrongly?)

Thus your loop method is not the problem; you just need a
  higher-precision method to do the last step (calculating pow(10, frac(Y))).

As a side note, there is a more efficient way of doing the loop part - this post has more details.


text:
France institute
France technology
France market
France immigration
Forest Research Institute Malaysia receives prestigious Unesco prize for environmental conservation | Malaysia
By Cathy W. Lathan	 Last updated Nov 20, 2021
The prize is awarded every two years to recognize and reward individuals, a group of individuals, institutions or organizations for their contribution to environmental conservation, in accordance with the policies and objectives of Unesco. – Photo by Bernama
PUTRAJAYA, November 18 – The Forest Research Institute of Malaysia (FRIM) brought honor to the country by yesterday winning the Sultan Qaboos Prize for Environmental Conservation at the 41st General Conference of Unesco in Paris, France .
In a statement released today, Energy and Natural Resources Minister Datuk Seri Takiyuddin Hassan said the country has not won an award like this since its introduction in 1991.
He said FRIM was recommended for the award on the basis of initiatives to monitor and preserve threatened species of national interest.
FRIM has published the "Malaysia Red List: Plants of Peninsular Malaysia." Flight. 1 (2021) "with the aim of monitoring the conservation of critically endangered species, as well as documenting the traditional knowledge of indigenous peoples and local communities.
The prize is awarded every two years to recognize and reward individuals, a group of individuals, institutions or organizations for their contribution to environmental conservation, in accordance with the policies and objectives of Unesco.
FRIM, founded in 1929 in Kepong, Selangor, is a leading tropical forest research institute that studies biodiversity, forest ecosystems, sustainable forest products and conducts pre-marketing activities. – Bernama
Podcast | The common good after COVID – Institute for Fiscal Studies
Bird flu sweeps across Europe
The University of Pune and the Institut français will organize the 3rd India France 2021 Knowledge Summit from November 24 to 26
Udupi: Manipal Institute of Communication organizes 'MAHE Deakin Jana-Pada'
Cathy W. Lathan
SC and Josoor Institute host workshops for community leaders ahead of FIFA Arab Cup
India China Institute Research Seminar Examines Changing Relationships Between Expertise and Policy Making
A * STAR MICROELECTRONICS INSTITUTE AND SOITEC DEVELOP NEXT GENERATION SILICON…
Influenza Virus (H1N1) Vaccine Market Size and Forecast
The Jožef Stefan Institute team makes a breakthrough in Spin liquid
Happy New Year 2022 from the French Institute
A * STAR MICROELECTRONICS INSTITUTE AND SOITEC DEVELOP NEXT GENERATION SILICON CARBIDE SEMICONDUCTORS
AI Governance Market Size, Trends, Forecast to 2029
© 2022 - Cerib. All Rights Reserved.


text:
Brandi Carlile, Brittany Howard & More Speak Against Anti-LGBTQ Legislation at Grammys
By Stephen Daw
Jon Kopaloff/FilmMagic
Brandi Carlile attends the 62nd Annual Grammy Awards at Staples Center on Jan. 26, 2020 in Los Angeles.
In the state of Tennessee, governor Bill Lee recently signed into law HB 836, a bill providing protections for child welfare organizations who to turn away LGBTQ parents looking to adopt children. The Human Rights Campaign denounced the decision, saying that the new legislation "will harm children in Tennessee."
So, GLAAD took to the red carpet of Sunday night's Grammy Awards (Jan. 26) to ask some of the stars what they would say to those who are interested in limiting the rights of LGBTQ people around the country.
Brandi Carlile, who took home a Grammy for best country song for her writing on Tanya Tucker's "Bring My Flowers Now", spoke as a queer woman and a parent when she denounced the new bill. "We just want the right to be a family, to be happy, to bless children that don't already have homes," she said, with Tucker chiming in to say she agreed. "As a woman of faith myself, I cannot see Jesus wanting to disallow any family from an adoption, so I can't stand by it."
Grammys 2020: Billie Eilish Becomes the First Woman to Sweep the Big Four Grammys In One Night
The star added that she would not be boycotting the state of Tennesssee, since she feels a responsibility to be there for the community. But, she sent a call out to straight allies, asking them to step up. "I strongly suggest that people who aren't queer maybe could ... to create an issue, economically."
Brittany Howard, who was nominated twice at the event for her album History Repeats, had a blunt message for anyone who would stand in the way of LGBTQ rights: "I guess we have nothing to talk about. You either get out of the way, or we walk over you."
Billy Ray Cyrus, who scored his first two Grammy wins last night for best pop duo performance and best music video for Lil Nas X's "Old Town Road," made it clear that queer rights are human rights. "A human being is a human being, and you treat everybody right," he said. "All people are created equal in his eyes, so that's just the way it is."
Check out the full clip from GLAAD, featuring more responses from stars like Little Big Town, Angaleena Presley of Pistol Annies and more below:
Spotify on Olivia Rodrigo's Record-Breaking 'Drivers License' | Billboard News


A National Level Technical Symposium organized by the Department of Computer Science and Engineering, Velammal Engineering College, Chennai on 16,Feb,2019.
.This symposium provides a grandeur stage for all the students, of any Engineering discipline, to splurge their ideas and talents in technical and non-technical events. It gives a peer platform for innovation and an entertaining ambience for energetic lads.
This year's event will also make the crowd never get enough of 'OZMENTA' just like every time it did!
Get Hands on experience with Flask - a Micro Framework for Python used in Web Development.
Ambattur-Red Hills Road, Surapet, Chennai.


'We are what we think we are' – our mind is our greatest asset and when harnessed and channelled in a positive direction can help us create the reality of our choice. If we leave our mind to its own devices it can create our own personal hell. When we pick up the reins of personal responsibility we are able to create our own paradise.
All of our recordings are original, both in terms of the music and the script. We're sure that once you've taken this particular journey, it will be one you will want to repeat again and again. Listen to the sample and decide for yourself.


Alice wants to hold a costume party for this Halloween. To make things interesting, and to prevent potential fights, she decided to make sure that all her friends will dress up in different costumes for the party. How she does this is by calling her friends one by one and asking them what they were planning on wearing for the party. If they were planning on wearing a costume that someone Alice has already spoken to was planning on wearing, then Alice tells them to wear something else. Being her best friend, she asks you to keep track of the friends she asks to wear something else (in case they need a reminder later on).
The input file DATA3.txt will contain 5 test cases. Each test case will start with a number 1 <= N <= 20, a number of friends Alice will call, followed by N lines - a pair of words, a friend's name and their costume (each one word).
The output file OUT3.txt will contain 5 lines: lists of friends that were asked to change costumes, in the order that they were called. Each list will be a single line, names separated by spaces. If a list is empty, print SPOOKY instead.
Note: since the judge checks if your line is an exact match, make sure not to end the list with an extra space. That is, the first sample is "jim sam" not "jim sam ".


text:
Supporters of Durham 150: Issue #11
Welcome to the Supporters of Durham 150 newsletter, designed to keep those interested in Durham's sesquicentennial updated on all the planning activities surrounding the yearlong commemoration.
Durham 150 Staff Highlight
As we mentioned last week when we introduced you to Durham 150 project manager, Gineen Cargo, there's an amazing amount of activity taking place behind the scenes to commemorate the City of Durham's 150th anniversary (more than the staff of Discover Durham or the Museum of Durham History could dream of staying on top of on our own!). The Durham 150 staff has been coordinating a grant program, 150+ events, signature events, sponsorships, marketing efforts, historical content, and more.
This week, we'd like to take a moment to introduce Shadé Shakur, Durham 150 project assistant. She has been a Durhamite for a decade who has worked in mental health, K-12 education, and grassroots community collaboration throughout Durham and the country. Shadé owns Approaching Zenith, where she works in youth mental health and vision development and supporting healthy lifestyles for entrepreneurs. She also co-owns The Ink Is Dry LLC, an independent artist, writer, and performance company with her mother and three sisters. She is married with three children.
As the project assistant, Shadé is committed to sharing the vision and events of the sesquicentennial to build community and celebrate Durham.
Got Your Durham 150 Merch?
We love seeing folks around town in Durham 150 gear! If you haven't gotten yours yet, we have t-shirts, hats, magnets, and stickers available at www.Durham150.org/store. If you're a retailer interested in carrying Durham 150 merchandise, let us know.
Taking a Moment to Thank our Sponsors
In June, we thanked our Bicentennial Builders sponsors — businesses and individuals working to ensure Durham's success into our community's 200th year. Here, we'd like to thank the Community & Business Partners committed to helping us achieve the mission of Durham 150.
M&F Bank
Morningstar Law Group
MHAworks
Gateway Building Company
FHI360
American AV
Amy Unell
Their contributions will allow us to work toward our mission to recognize Durham's past, present, and future with a year of events, activities, and community engagement.
You can find a full list of Durham 150 sponsors on our website.
Upcoming Durham 150 Events
There are a host of significant events coming up for people of all ages and walks of life. Many are free and designed to help us all learn more about Durham's past, present, and future. Find a searchable listing of all events here.
Durham Early Jazz and Swing Exhibit Opening
500 W. Main St., Durham, NC 27701
Jimmie Banks Retrospective Opening Reception and Gallery
July 11-September 9
Rubenstein Arts Center
2020 Campus Dr., Durham, NC 27708
Read A Palooza Summer Learning Block Party
Durham 150 Grantee
WG Pearson Center
600 E. Umstead St., Durham, NC 27701
Dimensions of Black: The Founding Fathers of Hayti
Hayti Heritage Center
804 Old Fayetteville St., Durham, NC 27701
Henna: The Unknown History
GMMC Digital/GPazz Live
112 Hunt St., Durham, NC 27701
Pork, Pickles, and Peanuts
Duke Homestead State Historic Site
2828 Duke Homestead Rd., Durham, NC 27705
Full Frame School of Doc
Full Frame Theater at American Tobacco Campus
Blackwell St., Durham, NC 27701
Super/Natural: Stories of Science & The Unknown: Audio Under the Stars
1317 W. Pettigrew Street, Durham, NC 27705
Bull City Roller Derby – First Home Bout
Wheel's Skate Rink
715 N. Hoover Rd., Durham, NC 27703
With the Fourth of July just around the corner, USA Baseball will take on Cuba at the Durham Bulls Athletic Park in what has become an eight-year Independence Day tradition. We thought we'd share a little bit about Durham's role in the origin of baseball cards.
While some might think that bubble gum served as the first distribution method of baseball cards, it was actually tobacco companies that did at the start of the 1900s. It wasn't just any tobacco company that was credited with the cards' rapid rise in popularity, but then one of the largest tobacco companies in the world — American Tobacco Company, headquartered in what today is the American Tobacco Campus.
Do you know what the most valuable baseball card in history is? It's a card dating back to 1909-1911 of Pittsburgh Pirates shortstop Honus Wagner. The card is extremely rare; Honus was upset by the American Tobacco Company using his likeness on an advertisement, and he refused permission almost immediately after production of his card started.
The Museum of Durham History opened an exhibit at the Durham Bulls Athletic Park a few years ago explaining Durham's role in the rise of baseball cards. It was so popular that the exhibit is still up inside the concourse today and also featured on their website.
Do you have a friend, family member or colleague who would be interested in receiving these Durham 150 newsletters? Let them know they can subscribe to updates on Durham 150 here.
Shelly Green & Patrick Mucklow
Co-Chairs, Durham 150


On my way home, a cement truck on 18th Street was blocking an entire lane. There was a workman in the clear lane directing traffic. This was, theoretically, a good idea. However, it was so dark out that all I could see of him was his reflective vest. His hands, which I saw only as I passed directly in front of him, were in feverish motion, alternating between "stop" and "come on, come on, come on."
It felt like a metaphor.


Creative Sound Blaster Live! 5.1 is a bit old and if you are having problem on installing the driver on Windows 7 computer, you can fix this by using our solution below.
If you can't find LiveDrvUni-Pack(ENG), you can also use SB P17X Series Support Pack 2.5 release back from 02/06/2010 (AudigySE/Value/LS_Live24bit_X-Fi XtremeAudio_SB5.1VX. This driver support any Sound Blaster models based on P17X audio controller, including Audigy Value, Audigy SE, Audigy LS, Audigy 2 LS, Live! 24-bit, SB 5.1 VX, X-Fi Xtreme Audio.


text:
The Tetris of European Countries
The tetris of european countries game
Do you like it? Just click on it!
The tetris of the european countries is the union of the classic tetris game and your knowledge about the geography of Europe. You can displace the countries with the arrow keys and rotate them with the space bar. You have 3 levels of difficulty.
Times played:
This game has been played 14734 times online. Ranking 1327 of the best free games.
We like to know what the players think of each game. This game has a rating of other players of 2.
Rate this game
Rating based on 634 opinions of the users
Played 14734 times
geography, classical game, Europe,
What is this game about? This is a free game called The Tetris of European Countries for your browser without having to download or install anything, it is completely reliable. On this website you will be able to play for free this Tetris flash game called The Tetris of European Countries. And remember this is a free game called The Tetris of European Countries and it is related to Tetris. Our new game The Tetris of European Countries is one of the best games of Tetris you can find and you can share it with your friends and contacts on the social networks. This is an online game and video game called The Tetris of European Countries that we invite you to play, enjoy and learn about it as well as to share in the comments and with your friends on the social networks.
Tetris most played games
Jewel tetris
Tetris with a twist! Match the gems in the blocks so as to create groups of 3 or more of the same color in order for them to disappear and clear the game area! Instructions: use the left and right arrow keys to place blocks, and the up arrow key to spin them.
Tetriz
Classic Tetris game in a simpler version. The object of the game is to manipulate the shapes, moving chips and turning with the arrow keys. The objective of the game is to form a horizontal line with no gaps. When a horizontal line is completed, that line disappears and all the pieces that are above down a position, freeing up space game and thus making it easier to place new pieces. The pieces are falling steadily accelerates the longer you have been playing. The game ends when the pieces are p ...
Startris is unique variation of the most classic of all puzzle games. The aim is to rotate and place the falling blocks to make complete rows to clear them away and avoid that the game field fills up. If you create a row that contains stars these will be collected. Rotate and place the blocks to create complete rows that gets cleared away. Collect the enough stars before time runs out to advance to the next level. The game is played over 3 levels. If you manage to collect the needed number of ...


First Strategy: Use "Wasted" Time. All humans waste some time; that is, fail to use all of their time productively or even pleasurably. Sometimes we jump from one diversion to another, without enjoying any of them. Sometimes we become irritated about matters beyond our control. Sometimes we fail to plan well causing us negative consequences we could easily have avoided (for example, we spend time unnecessarily trapped in traffic — though we could have left a half hour earlier and avoided the rush). Sometimes we worry unproductively. Sometimes we spend time regretting what is past. Sometimes we just stare off blankly into space.
Third Strategy: Internalize Intellectual Standards. Each week, develop a heightened awareness of one of the universal intellectual standards (clarity, precision, accuracy, relevance, depth, breadth, logicalness, significance). Focus one week on clarity, the next on accuracy, etc. For example, if you are focusing on clarity for the week, try to notice when you are being unclear in communicating with others. Notice when others are unclear in what they are saying.
When you are reading, notice whether you are clear about what you are reading. When you orally express or write out your views (for whatever reason), ask yourself whether you are clear about what you are trying to say. In doing this, of course, focus on four techniques of clarification : 1) Stating what you are saying explicitly and precisely (with careful consideration given to your choice of words), 2) Elaborating on your meaning in other words, 3) Giving examples of what you mean from experiences you have had, and 4) Using analogies, metaphors, pictures, or diagrams to illustrate what you mean. In other words, you will frequently STATE, ELABORATE, ILLUSTRATE, AND EXEMPLIFY your points. You will regularly ask others to do the same.
Strategy Seven: Redefine the Way You See Things. We live in a world, both personal and social, in which every situation is "defined," that is, given a meaning. How a situation is defined determines not only how we feel about it, but also how we act in it, and what implications it has for us. However, virtually every situation can be defined in more than one way. This fact carries with it tremendous opportunities. In principle, it lies within your power and mine to make our lives more happy and fulfilling than they are. Many of the negative definitions that we give to situations in our lives could in principle be transformed into positive ones. We can be happy when otherwise we would have been sad.
Strategy Nine: Analyze group influences on your life: Closely analyze the behavior that is encouraged, and discouraged, in the groups to which you belong. For any given group, what are you "required" to believe? What are you "forbidden" to do? Every group enforces some level of conformity. Most people live much too much within the view of themselves projected by others. Discover what pressure you are bowing to and think explicitly about whether or not to reject that pressure.


text:
South African Fintech startup Ukheshe Expands to Asia-Pacific
South African Fintech startup Ukheshe Technologies has announced its expansion into the Asia-Pacific region stemming from its introduction of an innovative digital-first payment solution.
Ukheshe has fostered an innovation platform that provides banks and telecoms SMMEs with moderate advanced banking and installment administrations, with customer obtaining, onboarding, and dissemination costs that are a small part of customary merchant accounts.
Ukheshe is able to provide a platform for over 2.2 million applications and processes millions of exchanges each month.
Clayton Hayward, the startup's chief executive officer (CEO), speaking in the development said that the traditional banks and telecoms system in Asia have responded proactively to rapid disruption in the digital payments environment.
"Ukheshe aims to partner with local institutions by offering credible, agile solutions in an ever-changing market. Our payment technologies also solve the problems of expensive acceptance rails and carrying cash, particularly in markets within Asia-Pacific where digital wallets are expected to become the preferred online payment method over the next four years.
"With an increased need for cost-effective digital payment solutions, our value proposition delivers an integrated solution platform for merchants, aggregators, retailers, banks, and their customers".
"We believe we can aid traditional players in re-securing some of their traditional flows by partnering with issuers and acquirers in a dynamic and constantly evolving environment. On the back of tremendous success in Africa, Asia-Pacific offers a similar opportunity to use our talent and experience to deliver world-class payment solutions" he said.
South Africa's Safcoin to be listed for Exchange Offering
Dubawa Inducts 26 Fact-Checkers for 2021 Fellowship


International Shorts Competition. Competitive section for works related to queer issues in a broad sense. Any genre is permitted (fiction, documentary, animation, music video, experimental films) except for commercials and TV jingles and titles.


Location manager Greg "Rocky" Brooks is also suing the film's director and producers for unspecified damages in the lawsuit filed Friday in Los Angeles County Superior Court.
In the movie, "City of Lies," set for U.S. release Sept. 7, the 55-year-old Depp plays a Los Angeles police detective who for years investigated the still-unsolved 1997 death of the rapper Notorious B.I.G., also known as Biggie Smalls, whose real name is Christopher Wallace.
Brooks alleges that in April 2017, when the film was shooting under the title "Labyrinth" in and around the Barclay Hotel in downtown LA, he informed the director Brad Furman that an upcoming take featuring Depp would have to be the last outdoor shot of the night because of legal permits.
The lawsuit says Furman forced Brooks to go beyond his duties and tell Depp himself that shooting had to end. Brooks said he was seeking out the off-duty sheriff's deputy serving as set security when Depp found him first.
Brooks said Depp smelled of alcohol and appeared intoxicated as he shouted obscenities then "angrily and forcefully" punched Brooks twice in the rib cage.
Depp then yelled "I will give you one hundred thousand dollars to punch me in the face right now!" at Brooks when he showed little reaction, according to the lawsuit, before the actor's bodyguards pulled him away.
Brooks said he returned to work the following Monday and was asked by a producer to write and sign a declaration saying he wouldn't sue over the incident. Brooks says he was fired on the spot when he refused.


What services does Trust-Verified offer?
If the seal image is too big may I resize it?
You may resize the seal to suit your website requirements. Any other changes to the seal require prior approval from Trust-Verified.
Trust-Verified is designed for use by any legitimate business which wishes to increase its internet credibility.
Simply fill out the form on the JOIN page and we will review your application and site prior to approval. If you do not meet our membership requirements you will be notified by email and given the opportunity to re-apply after you have made arrangements to meet all of our requirements. No payment is required to register. No credit card details are needed. Payment will only be required after membership requirements have been verified by Trust-Verified Ltd, and your free trial period ends or you decide to upgrade your membership.
Pass a background check for a history of customer complaints.
Your website must be a registered top level domain or be part of a shopping mall, auction block, or blog network.
A form of communication posted on your website, such as an email, contact form, fax, or phone number.
Provide a public contact email address to Trust-Verified for any consumers contacting Trust-Verified.
Provide a private contact email for your company. This email will remain completely confidential with Trust-Verified. It may be the same as your public email address.
Can I use my membership for multiple websites?
Silver membership allows use on up to 4 websites (with the same owner and contact details), and Gold membership allows use on up to 10 websites (with the same owner and contact details). If you require more than this, please contact us.
1. Increase in credibility with visitors to your website, which can lead to an increase in sales and return visits.
2. Gather customer feedback at the time of sale and also 1-4 weeks later. This feedback can increase the confidence of new visitors, as well as giving your business valuable feedback about how you are perceived by your customers, and an understanding of improvements you can make.
What are the benefits to our visitors and customers?
The Trust-Verified seal increases visitor confidence in your company and website, as it is effectively an independent third-party credibility assessment. Your customers can see that your business has been reviewed by an independent organisation. They can also see whether your address and phone number have been verified, as well as viewing feedback from other customers and any history of complaints. Overall this helps demonstrate that you are operating a credible business which is committed to customer service and satisfaction.
What are my obligations as a member?
Your initial obligation is to meet the membership requirements. Secondly, you must respond to any correspondence from Trust-Verified Ltd and respond to mediation if the situation occurs. Participation in the mediation process is strictly voluntary but highly recommended. See the complaints information page for more information about complaints and mediation. Any member can cancel their membership with immediate notice and not have any further obligations to Trust-Verified Ltd or its customers.
Do you have a Complains Recording and Resolution Service?
Yes – we have an optional complaints recording service (for Silver and Gold members) and an optional resolution service (for Gold members).
Membership can be cancelled at any time by email or in writing. No membership fees paid in advance will be refunded.
We accept all major credit & debit cards and PayPal.
What kind of complaints do you accept?
We will only accept reasonable and legitimate complaints. See 'Filing a Complaint' for more details.
What happens if someone files a complaint?
How can I find out how many complaints I have?
Whenever a complaint is filed about you, we will send you the details.
Trust-Verified accepts members from all countries with English language websites.


text:
Standing Up To Powerful Interests
News Release | Consumer Protection, Health Care
California's new drug price law is a win for consumers nationwide
Today, California Governor Jerry Brown signed Senate Bill 17 into law, a groundbreaking measure to increase transparency and accountability for the prescription drug industry. We celebrate the new law—passed with support and hard work from CALPIRG—as a landmark victory for consumers, not just in California, but nationwide.
Read more about California's new drug price law is a win for consumers nationwide
News Release | CALPIRG | Health Care
Gov. Brown Signs Bill to Pull Back Curtain on Prescription Drug Costs
SB 17, authored by State Senator Ed Hernandez, requires the prescription drug companies to give 60-day advance notice before they increase prices, and requires an explanation for any increases. With this bill, California is pulling back the curtain to expose surprise price hikes before they happen.
Read more about Gov. Brown Signs Bill to Pull Back Curtain on Prescription Drug Costs
News Release | Health Care
Our Statement in Opposition to Graham-Cassidy Health Care Bill
The latest version of health care legislation before the U.S. Senate remains very dangerous for American consumers, and we urge a "no" vote.
Read more about Our Statement in Opposition to Graham-Cassidy Health Care Bill
CALPIRG-backed bill for prescription drug price transparency heads to the Governor's desk
We applaud the legislature for passing SB 17, authored by State Senator Ed Hernandez, to require the prescription drug companies to give 60-day advance notice before they increase prices, and require an explanation for the increase.
Read more about CALPIRG-backed bill for prescription drug price transparency heads to the Governor's desk
Pulling Back the Curtain on Prescription Drug Prices
By | Emily Rusch
One of the big outstanding issues for the California state Legislature to tackle this year is the soaring cost of prescription drugs. CALPIRG is strongly backing SB 17 and other bills to increase transparency and accountability in the prescription drug industry.
Read more about Pulling Back the Curtain on Prescription Drug Prices
News Release | U.S. PIRG | Public Health, Health Care
Our Statement on the Failure of the US Senate Health Care Bill
American consumers can breathe a sigh of relief today. The legislation that was narrowly defeated in the US Senate last night threatened to spark chaos in health insurance markets, raise costs, degrade quality of care, weaken protections for people with pre-existing conditions, and cause millions of Americans to lose health coverage.
Read more about Our Statement on the Failure of the US Senate Health Care Bill
Issue | Health Care
Make Health Care Work Better For America
Read more about Make Health Care Work Better For America
Our Statement on Senate Health Care Bill
Statement by Jesse Ellis O'Brien, CALPIRG Health Care Advocate, on public release of the "Better Care Reconciliation Act."
Read more about Our Statement on Senate Health Care Bill
Great News for Consumers: Anthem Drops Bid to Take Over Cigna
This morning, health insurance giant Anthem dropped its troubled bid to take over one of its top competitors, Cigna. A February district court decision to block the proposed merger on anti-trust grounds was recently upheld by the DC Circuit Court of Appeals, but with Anthem's decision today, this anti-competitive takeover bid is finally laid to rest. This development comes after months of work by CALPIRG and a broad coalition of consumer and health care groups, urging close scrutiny of the merger from state and federal regulators and raising questions and concerns about the potential impact on consumers.
Read more about Great News for Consumers: Anthem Drops Bid to Take Over Cigna
News Release | U.S. PIRG | Health Care
Our Statement on House Passage of the American Health Care Act
Today's House vote is a big step in the wrong direction for American consumers and the American health care system. It's no secret that there are plenty of problems with health care in America, but the AHCA in its current form not only won't address the real problems in our health care system—it is likely to make them worse.
Read more about Our Statement on House Passage of the American Health Care Act
Hold The Antibiotics: Wendy's
Healthy Farms, Healthy Families
Big Money Out
Modernize the Vote
Work for Wellbeing
Zero Out Toxics
Make It Toxic-Free
Ban Roundup
Ban Bee-Killing Pesticides
Electric Buses for California
Stop Highway Boondoggles
PIRG Consumer Watchdog
Defend Net Neutrality
Consumer Defense
Make Higher Education Affordable
High Value Health Care
Your donation supports CALPIRG's work to stand up for consumers on the issues that matter, especially when powerful interests are blocking progress.
Join our network and stay up to date on our campaigns, get important consumer updates and take action on critical issues.
CALIFORNIA PUBLIC INTEREST RESEARCH GROUP
1111 H St., Ste. 207 • Sacramento, CA 95814 | (510) 844-6805 • info@calpirg.org
LOS ANGELES OFFICE:
3435 Wilshire Blvd., #385 • Los Angeles, CA 90010 | (213) 251-3680
Visit the website of CALPIRG Education Fund, our sister 501(c)(3) organization.
CALPIRG is part of The Public Interest Network, which operates and supports organizations committed to a shared vision of a better world and a strategic approach to social change.


A brand new set of Power Rangers posters have hit. This time they show the rangers themselves on their own Zord. A slightly different look than what fans are used to seeing it from the TV series.
Morphing into UK cinemas March 24, 2017.


text:
Is Identity Politics Tearing Society Apart?
December 3, 2020 / Benn Bell
Lexicon for Anarchists
We live in the postmodern era and as Bob Dylan once said, a political world. As I look around, I observe that there seems to be a whole new vocabulary that has sprung up around events and the way we are. I thought it would be useful if we could define our terms for a better understanding of our Brave New World. First of all, what is postmodernism?
The Oxford Languages Dictionary defines postmodernism as a late-20th-century style and concept in the arts, architecture, and criticism that represents a departure from modernism and has at its heart a general distrust of grand theories and ideologies as well as a problematical relationship with any notion of "art."
Britannica goes on to say: "Postmodernism, in western philosophy, is a late 20th-century movement characterized by broad skepticism, subjectivism, or relativism; a general suspicion of reason; and an acute sensitivity to the role of ideology in asserting and maintaining political and economic power."
In the 1980s and '90s, academic advocates on behalf of various ethnic, cultural, racial, and religious groups embraced postmodern critique of contemporary Western society, and postmodernism became the unofficial philosophy of the new movement of "Identity politics."
"Identity politics," also commonly referred to as the politics of identity or identity-based politics, is a phrase that is widely used in the social sciences and humanities to describe the deployment of the category of identity as a tool to frame political claims, promote political ideologies, or stimulate and orientate social and political action, usually in a larger context of inequality or injustice and with the aim of asserting group distinctiveness and belonging and gaining power and recognition. Additionally, identity politics refers to tensions and struggles over the right to map and define the contours and fixed "essence" of specific groups. The phrase has become increasingly common in political anthropology since the second half of the 20th century with the emergence of a wide diversity of social movements, including the women's movement, the African American civil rights movement, and the gay and lesbian movement, as well as nationalist and postcolonial movements. Central to the practice of identity politics are the notions of sameness and difference, and thus the anthropological study of identity politics involves the study of the politics of difference (Oxford Bibliographies).
The Oxford Dictionary defines Identity politics as political positions that are based on the social groups that people see themselves as belonging to, for example based on religion, race or social background, rather than on traditional political parties.
The Merriam-Webster dictionary defines Identity politics as politics in which groups of people having a particular racial, religious, ethnic, social, or cultural identity tend to promote their own specific interests or concerns without regard to the interests or concerns of any larger political group. This last definition seems to be the clearest and on the mark for purposes of this discussion. The key point I think is that these groups promote their own interests without regard to the interests of others and seek power for themselves.
Multiculturalism is closely associated with identity politics or political and social movements that have group identity as the basis of their formation and the focus of their political action. Multiculturalism is the view that cultures, races, and ethnicities, particularly those of minority groups, deserve special acknowledgment of their differences within a dominant political culture (Britannica).
Intersectionality is the interconnected nature of social categorizations such as race, class, and gender as they apply to a given individual or group, regarded as creating overlapping and interdependent systems of discrimination or disadvantage (Oxford Languages).
Merriam-Webster defines intersectionality as the complex, cumulative way in which the effects of multiple forms of discrimination (such as racism, sexism, and classism) combine, overlap, or intersect, especially in the experiences of marginalized individuals or groups. As an example, a black woman may face discrimination on the basis of sex and color.
Political Correctness is the avoidance, often considered as taken to extremes, of forms of expression or action that are perceived to exclude, marginalize, or insult groups of people who are socially disadvantaged or discriminated against (Oxford Languages).
According to Dictionary.com, Cancel culture refers to the popular practice of withdrawing support (canceling) for public figures and companies after they have done or said something considered objectionable or offensive. It's generally discussed as being performed on social media in the form of group shaming.
The Urban Dictionary defines canceling as "to dismiss something or somebody" and "to reject an individual or idea." And when people use the term unironically, it reveals a big problem with our culture. Cancel culture as it currently exists doesn't give people a chance to learn from or apologize for their wrongdoings.
Critical theory is a Marxist-inspired movement in social and political philosophy associated with the work of the Frankfurt School and based on the thought of Karl Marx and Sigmund Freud. Critical theorists maintain that a primary goal of philosophy is to understand and to help overcome the social structures through which people are dominated and oppressed. Believing that science, like other forms of knowledge, has been used as an instrument of oppression, they caution against a blind faith in scientific progress, arguing that scientific knowledge must not be pursued as an end in itself without reference to the goal of human emancipation. Since the 1970s, critical theory has been immensely influential in the study of history, law, literature, and the social sciences (Britannica). The central argument of critical theory is that all knowledge, even the most scientific or "commonsensical," is historical and broadly political in nature. Critical theorists argue that knowledge is shaped by human interests of different kinds, rather than standing "objectively" independent from these interests. According to the Frankfurt theorists, a "critical" theory may be distinguished from a "traditional" theory according to a specific practical purpose: a theory is critical to the extent that it seeks human "emancipation from slavery", acts as a "liberating influence", and works "to create a world which satisfies the needs and powers" of human beings (Stanford Encyclopedia of Philosophy).
Critical race theory is the view that the law and legal institutions are inherently racist and that race itself, instead of being biologically grounded and natural, is a socially constructed concept that is used by white people to further their economic and political interests at the expense of people of color. According to critical race theory, racial inequality emerges from the social, economic, and legal differences that white people create between "races" to maintain elite white interests in labor markets and politics, giving rise to poverty and criminality in many minority communities. The critical race theory movement officially organized itself in 1989, at the first annual Workshop on Critical Race Theory, though its intellectual origins go back much further, to the 1960s and '70s (Britannica).
Liberal: Favorable to progress or reform, as in political or religious affairs. Noting or pertaining to a political party advocating measures of progressive political reform. Of, pertaining to, based on, or advocating liberalism the freedom of the individual and governmental guarantees of individual rights and liberties. Favorable to concepts of the maximum individual freedom possible, especially as guaranteed by law and secured by governmental protection of civil liberties. Favoring or permitting freedom of action, especially with respect to matters of personal belief or expression: a liberal policy toward dissident artists and writers. Of or relating to representational forms of government; free from prejudice or bigotry; tolerant: a liberal attitude toward foreigners. Open-minded or tolerant, especially free of or not bound by traditional or conventional ideas or values (Dictionary.com).
Liberalism is a political and moral philosophy based on liberty, consent of the governed and equality before the law. … Liberals also ended mercantilist policies, royal monopolies and other barriers to trade, instead promoting free trade and free markets.
Classical liberalism is a political ideology and a branch of liberalism that advocates civil liberties under the rule of law with an emphasis on economic freedom (Wikipedia).
Looking back in history the ambitions of national rulers and the requirements of expanding industry and commerce led gradually to the adoption of economic policies based on mercantilism, a school of thought that advocated government intervention in a country's economy to increase state wealth and power. However, as such intervention increasingly served established interests and inhibited enterprise, it was challenged by members of the newly emerging middle class. This challenge was a significant factor in the great revolutions that rocked England and France in the 17th and 18th centuries, most notably the English Civil wars (1642–51), the Glorious Revolution (1688), the American Revolution (1775–83), and the French Revolution (1789). Classical liberalism is a result of those great collisions (Britannica).
Not surprisingly, illiberal is pretty much the opposite of liberal: Opposed to liberal principles; restricting freedom of thought or behavior.
Neoliberalism, is an ideology that emphasizes the free market, it is most commonly associated with laissez-faire economics. Neoliberals believes sustained economic growth is the means to achieve human progress, and believe confidence in free markets is the most-efficient allocation of resources. Neoliberalism places emphasis on minimal state intervention in economic and social affairs, and its commitment to the freedom of trade and capital. By the 1970s economic stagnation and increasing public debt prompted some economists to advocate a return to classical liberalism, which in its revived form came to be known as neoliberalism (Britannica).
Woke: alert to injustice in society, especially racism. Woke is a slang term that is easing into the mainstream from African American Vernacular English. In AAVE, awake is often rendered as woke, as in, "I was sleeping, but now I'm woke."
White privilege isdefined by Oxford Languages Dictionary asinherent advantages possessed by a white person on the basis of their race in a society characterized by racial inequality and injustice.White privilege is described in Peggy McIntosh's 1988 essay, "White Privilege: Unpacking the Invisible Knapsack." The essay helps readers recognize white privilege by making its effects personal and tangible. For many, white privilege was an invisible force that white people needed to recognize. It was being able to walk into a store and find that the main displays of shampoo and panty hose were catered toward your hair type and skin tone. It was being able to turn on the television and see people of your race widely represented. It was being able to move through life without being racially profiled or unfairly stereotyped.
Racism is defined by Matthew Clair and Jeffrey S. Denis as "individual- and group-level processes and structures that are implicated in the reproduction of racial inequality." Systemic racism happens when these structures or processes are carried out by groups with power, such as governments, businesses or schools.
Safe space is a place (as on a college campus) that is intended to be free of bias, conflict, criticism, or potentially threatening actions, ideas, or conversations.
Victimization/victimhood/ Culture of victimhood
Certain social conditions have led to large-scale moral changes in the culture such as the emergence of a victimhood culture that is distinct from the honor cultures and dignity cultures of the past. Sociologists Bradley Campbell and Jason Manning have produced the first systematic theoretical analysis of the moral culture of "victimhood" emerging on university campuses. Central to their investigation is the claim that moral cultures tend to take one of three forms: honor cultures, dignity cultures and victim cultures.
Honor cultures emerge when a centralized state authority is not present or not legitimate and when people are extremely materially vulnerable. Under these conditions, individuals will take offense very easily, grow quickly fearful, and engage in higher rates of defensive, preemptive aggression as well as vigilante justice, in order to settle their disputes. This preemptive aggression can develop into bloody feuds enveloping whole families, gangs, or lineages. Physical bravery, deferential respect to the powerful, and an unwillingness to appear weak and vulnerable become the overriding values.
Campbell and Manning suggest that slowly over the last 500 years, state authority (police, courts and jails) has come to supplant vigilante justice as a powerful and reasonably fair system of adjudicating disputes regardless of their severity. Over the last 500 years societies have not only become more reliant on state authority to resolve disputes, but also materially wealthier due to machine technology and market economies, relatively more equitable in terms of the distribution of resources, power and prestige, as well as more diverse due to the formal legal rights and benefits extended to women and minorities.
In a dignity culture, a more modern form of society, individuals resort to legal authority when disputes and wrongdoings are sufficiently severe, but for minor offenses they make an effort to resolve the dispute privately in a nonviolent manner. All citizens are assumed to have a sense of dignity and self-restraint, and everyone is expected to, at least at first, give the benefit of the doubt to a disputant to see if a conflict can be resolved peacefully. However, Campbell and Manning contend that when state authority begins to exert monopolizing control over a population of increasingly diverse, legally "equal" people, a victim culture may emerge.
Victim cultures share a sensitivity to slights or insults with honor cultures. While those in an honor culture might try to retaliate (physically or otherwise), individuals in a victim culture instead appeal to a powerful, omnipresent state/legal authority. Classic examples are Mao's China and Stalin's Russia. In contrast to honor cultures that expect victims to be strong and stern enough to defend themselves, and dignity cultures that expect victims to be calm and charitable when in a dispute or disagreement, victim cultures emphasize how complainants are emotionally or physically fragile, vulnerable, and weak. In order to have high status in a victim culture, one must perfect and dramatize a personal "narrative of suffering." Proclaiming one's own weakness, frailty, and suffering might seem dishonorable or shameful from an honor culture perspective, or gratuitous and self-absorbed from a dignity culture perspective.
Campbell and Manning find such a victim culture emerging again in Western society, particularly on university campuses and especially in elite ivy-league schools. Institutions like these contain all of the components necessary for a victim culture to arise: (1) campuses tend to be racially/ethnically diverse, (2) an ethic of equal treatment under a shared identity (student) is emphasized, (3) students tend to come from relatively comfortable middle-class backgrounds, and (4) universities are largely run by powerful administrative bureaucracies given to extending their authority (in Title IX offices, student conduct offices, or multicultural/diversity offices). Let me be clear, this emergence of a victim culture is primarily to be found on college campuses and as stated above, especially league schools, but it is my belief that it is spreading into the general culture as well.
What shall we do with all this information? Now we ae equipped to discuss some of the ills of society. We can see both sides of the issues and we can make better arguments for and against.
What will you say the next time someone says to you Black Lives matter? Will you say, all lives matter, or will you make an argument for the movement?
Is Identity Politics tearing society apart? Why or why not?
I am interested to know what your ideas are.
Let the discussion begin!
Notes From the Undrground, Social Commentary
black lives matter, cancel culture, identity politics, lexicon, Lexicon for anarchists, multiculturalism, political correctness, Political Essay, postmodernism, victimization
← Photo of the day
The Three Dharma Seals →
22 thoughts on "Is Identity Politics Tearing Society Apart?"
Pingback: Is Identity Politics Tearing Society Apart? — Ghost Dog – ⚝ ° BLOG ° ⚝ Gabriele Romano
eurobrat
I absolutely believe that victim culture is bleeding into the general culture. I agree that PC college campuses with their safe spaces and cancel culture encourage this way of thinking, but it's not limited to the left. Trump and his supporters have been painting themselves as victims as well–portraying themselves as the "salt of the earth" Americans from flyover country who are disdained and oppressed by the coastal elites. The media is unfair to them, the election was rigged against them, etc. On the other side, Bernie and his followers actually make pretty similar arguments about the system being rigged. It's hard not to think that we've turned into a country of complaining "victims" on all sides. Maybe we've just been too comfortable for too long.
Thanks for sharing your thoughts!
Halim
Thank you for this list. So many big words! I don't use them but come across them sometimes when online reading, and it's interesting to read again what they mean.
And from my far distance (I'm Singaporean and in Malaysia) I sympathize with Black Lives Matter. It doesn't mean non-black lives don't matter. I came across a great comparison: it's like someone is trying to raise awareness about, say, breast cancer and push for more action to support the victims, and someone comes along and demand, "No, you can't discuss only breast cancer because ALL CANCER VICTIMS MATTER!" Crazy.
Great example! Thanks for your comments!
friedmont
This is amazing and a great breakdown of all the new buzzwords in politics today. Identity politics is definitely driving us apart as people start targeting things we cannot change (skin color, etc.) instead of policy positions like normal people.
It's not limited to the left – everyone is becoming "snowflakes" and point fingers at each other, making personal attacks based on identity rather than something substantive. I do think there is a media bias though; when a liberal commits identity "attacks", it's seen as good in many media outlets, while a conservative doing the same thing is bad. To me, they're both bad, end of story.
Thanks again for this post, very enlightening!
Thanks for your comments and joining the fray!
Thank you for sharing so many definitions Benn, I will have to take more time to study them, as I am not exactly an intellectual.
I tend to live in a slightly mystical world, but I do feel the divisions on our planet very deeply. I hope love and peace will be the victors in the end.
I feel that until all lives really do matter and are truly equal in value, opportunity, and expectation, "Black lives matter" is a necessary campaign, worth fighting for.
Living in South Africa I see first hand many of the inequalities that have never been properly resolved.
Thank you Ally, for your thoughtful reply! Living in South Africa you certainly have a unique perspective. Cheers!
Yes, we should be further along the road of equality than we actually are.
My hero Nelson Mandela said…
"No one is born hating another person because of the color of his skin, or his background, or his religion. People must learn to hate, and if they can learn to hate, they can be taught to love, for love comes more naturally to the human heart than its opposite."
marymtf
Black Lives Matter. So clever, because how can you possibly argue with that. Unfortunately when you say it you're not considering all the other shades that matter. Many of us understand that it's really African American lives that matter. And unfortunately BLM deliberately excludes white Italians, Russians, Greeks, Danes etc. In the past that would also have been considered racist, but lumping white people as one group makes racism acceptable.
Those who donate to BLM should know that they are most likely bankrolling a number of radical organisations, founded by committed Marxists whose goals aren't to make the American Dream a reality for everyone—but to transform America completely.
Thanks for your comments and joining the fray.
Thank you for the wonderful quote by Nelson Mandela! A hero of mine as well!
aaronkholden
Let's be honest. The problems that have a stranglehold over our society are because we now live in a sick diseased society. We only care about what's best for us and not the entire community. We as a society have turned our backs on each other and only look at our bank accounts. How did we get here? To have a answer to that question we must examine the changes that have taken place through history. All of our ancestors were immigrants. They worked hard and took care of their families. But not only families but community was taken care of. People were active in their communities and cared for others as if they were their own family. Now we have kids with IPhones who couldn't care less about a dieing man in the street who is a veteran. College degree recipients look down on a person working in a grocery store because they feel as if the working class is beneath them. So is it identity politics or selfish behavioral traits that have been injected into us through our childhoods? The simple answer is no because there are many factors behind the division of our country.
Thanks for sharing your thoughts on a complicated issue.
J Troyer
The crazy part is, because of identity politics dividing us further, we are seeing the resurgence of white nationalist groups who, we all know, were there all along. But because we are constantly reminded on a daily basis about how different or victimized our particular group is, everyone clings to their group identity that much tighter.
It's almost like the very thing that identity politics started out to do – to break down barriers and see us all as just people – has now divided us further. Now, we see each more exclusively along tribal lines. Social media makes matters worse because we dehumanize and attack one another more viciously when we communicate behind screens.
I am a student of history and anyone who reads anything in the history books has seen this all play out before. These very things we are seeing now were very similar cultural conditions that gave rise to Nazism in Germany in the 30's.
This can't end well. Many say it will end in civil war. Again, there are many historical examples. When the Roman Empire crumbled, it devolved into feudal kingdoms of warring tribes.
Thanks for your input. I see similarities with the fall of Rome as well.
Trump changed my perspective as a foreign person. So, I can imagine that everyone is also looking at the whole dynamic from another alternative perspective and I see the similarities of what Troyer and yourself have said, but I wrote it as a reflection piece describing thought patterns. https://artymarty99.wordpress.com/2021/01/01/how-has-trump-changed-the-world/
nivtric
Interesting post for giving definitions of important aspects of 'identity politics'.
Adarsh Badri
Hello Benn,
This is a really interesting article on identity politics and how it has manifested in the modern-day politics, especially the ideas on political correctness and cancel culture.
I've written a brief essay on Fukuyama's arguments about identity politics in this article: https://adarshbadri.com/identity-politics-and-francis-fukuyama/.
In this article, I trace the origin of identity politics and how it has given rise to modern-day ethno-nationalism.
Kindly check it out 🙂
I will. Thanks for your response.