Artist and curator Dawna Davis invites student, emerging, and established designers to submit to Walk, Strut and Dance, a one-of-a-kind runway show and fashion experience produced in collaboration with FPTC. Davis' previous runway shows inclujde Simply Woven (2015), The Art of Adornment (2016), and OUTLOUD (2017). Designers may submit from one to six looks as a cohesive collection or several creative looks.
Maker Spaces: Walk Strut, and Dance will provide designers and accessory artists with a free space to sell their clothing and accessories before and after the show. Exhibitors must bring their own tables and other display materials.
To submit, please click this link. Questions? Email Dawna and put Runway Show in the subject area.
Walk Strut, and Dance will celebrate sophisticated, unconventional, and innovative designs and the models who show them off. As models walk, strut and dance on the runway, a joyful experience will be had by all.


At times on the mountain, things can overwhelm you – both mentally and physically. At times like these, a mantra is a useful thing to have. Traditionally, this might be a repeated word or sound to aid concentration in meditation. In times of trouble, I recite a poem, sometimes over and over again – as long as it takes – to get through the tougher stretches of a climb. For me, that poem is "Invictus", meaning unconquerable, written by William Ernest Henley in 1875. His message of perseverance in the face of adversity resonates with me for many reasons.
In 1875 one of Henley's legs required amputation due to complications arising from tuberculosis. Immediately after the amputation he was told that his other leg would require a similar procedure. He chose instead to enlist the services of the distinguished English surgeon Joseph Lister, who was able to save Henley's remaining leg after multiple surgical interventions on the foot. While recovering in the infirmary, he was moved to write the verses that became "Invictus".
It was a favorite poem of Nelson Mandela and one he often recited for inspiration during his long period of incarceration on Robben Island. He passed on a copy to the captain of the South African rugby team to urge them on to victory in the rugby world cup the next day (rugby being Dad's absolute favorite sport). Upon his death, president Obama recited the last verse as part of his eulogy.
For all of these reasons, it reminds me so much of Dad – and both the dignity and strength he displayed in the face of a sudden and tragic illness. I, in turn borrowed this poem to eulogize him – and I take strength from reciting it during the difficult times on each mountain. I leave you with these words to remember him by, as I will every time I recite it in the coming months.


text:
Q: Touchpad disabled at boot? I'm setting up a client's laptop (Acer Aspire E1-431-2867), and for some reason, the touch pad is disabled on start up.

*

*Manually enabling it with the function key (fn+f7) works just fine.

*The system dual boots between Ubuntu and Windows, and the problem only occurs in Ubuntu.

*The problem is not due to anything I installed as it was happening with the Live USB as well.

*I can't seem to find anything about this anywhere.

Is there a way to stop this from happening?
NB: I would like to return the system to the owner in a couple days.

A: A simple workaround would be to execute the script which toggles the touchpad on / off at a system runlevel low enough before X is up and running, to make sure that the touchpad is working before a GUI is even started. So /etc/rc.local should be ok, but unfortunately I can't say a definitive word on this since I don't have my Ubuntu machine handy right now, and I can't actually test this. It should be fine tough.

*

*Run acpi_listen and hit the fn+F7 keystroke; the output should be similiar to this one:

hotkey ATKD NNNNNNNN 00000000

Where NNNNNNNN is the fn+F7 keystroke's ACPI code;

*

*Run grep NNNNNNNN /etc/acpi/events/*; the filename in the output should be the filename of the file in which the fn+F7 keystroke's ACPI code is handled;

*Open the file with a text editor;

*Look for a section like this one:
# ...
event=hotkey (ATKD|HOTK) NNNNNNNN
action=/etc/acpi/actions/action.sh
# ...

Where /etc/acpi/actions/action.sh is the script that is executed each time the fn+F7 keystroke is hit;
Now it's just a matter of executing the script in /etc/rc.local:

*

*Open /etc/rc.local with a text editor;

*Add this line to the end of the file before the exit 0 line:
# ...
/etc/acpi/actions/action.sh
# ...

That should be it. Reboot and see if the touchpad is enabled upon reboot;
In any case, if not needed, I'd suggest to remove the set -e command at the top of /etc/rc.local, or to modify the way the script is called calling e.g. a wrapper which calls the script itself and which always returns 0, to avoid the script breaking the execution of rc.local due to return values different from 0.

redpajama_set_name: RedPajamaStackExchange


text:
// This file contains the definitions of class Serializer.

#include <vector>

#include "serializer/cross/serializer.h"
#include "serializer/cross/serializer_binary.h"

#include "core/cross/buffer.h"
#include "core/cross/curve.h"
#include "core/cross/iclass_manager.h"
#include "core/cross/pack.h"
#include "core/cross/param_array.h"
#include "core/cross/primitive.h"
#include "core/cross/shape.h"
#include "core/cross/skin.h"
#include "core/cross/texture.h"
#include "core/cross/transform.h"
#include "import/cross/destination_buffer.h"
#include "import/cross/iarchive_generator.h"
#include "import/cross/memory_buffer.h"
#include "import/cross/memory_stream.h"
#include "serializer/cross/version.h"
#include "utils/cross/structured_writer.h"

using std::string;

namespace o3d {

const char* Serializer::ROOT_PREFIX = "o3d_rootObject_";

void Serialize(StructuredWriter* writer, ObjectBase* value) {
  if (value == NULL) {
    writer->WriteNull();
  } else {
    writer->BeginCompacting();
    writer->OpenObject();
    writer->WritePropertyName("ref");
    writer->WriteInt(GetObjectId(value));
    writer->CloseObject();
    writer->EndCompacting();
  }
}

void Serialize(StructuredWriter* writer, float value) {
  writer->WriteFloat(value);
}

void Serialize(StructuredWriter* writer, const Float2& value) {
  writer->BeginCompacting();
  writer->OpenArray();
  for (int i = 0; i < 2; ++i)
    writer->WriteFloat(value[i]);
  writer->CloseArray();
  writer->EndCompacting();
}

void Serialize(StructuredWriter* writer, const Float3& value) {
  writer->BeginCompacting();
  writer->OpenArray();
  for (int i = 0; i < 3; ++i)
    writer->WriteFloat(value[i]);
  writer->CloseArray();
  writer->EndCompacting();
}

void Serialize(StructuredWriter* writer, const Float4& value) {
  writer->BeginCompacting();
  writer->OpenArray();
  for (int i = 0; i < 4; ++i)
    writer->WriteFloat(value[i]);
  writer->CloseArray();
  writer->EndCompacting();
}

void Serialize(StructuredWriter* writer, int value) {
  writer->WriteInt(value);
}

void Serialize(StructuredWriter* writer, unsigned int value) {
  writer->WriteUnsignedInt(value);
}

void Serialize(StructuredWriter* writer, bool value) {
  writer->WriteBool(value);
}

void Serialize(StructuredWriter* writer, const String& value) {
  writer->WriteString(value);
}

void Serialize(StructuredWriter* writer, const Matrix4& value) {
  writer->BeginCompacting();
  writer->OpenArray();
  for (int i = 0; i < 4; ++i) {
    writer->OpenArray();
    for (int j = 0; j < 4; ++j)
      writer->WriteFloat(value[i][j]);
    writer->CloseArray();
  }
  writer->CloseArray();
  writer->EndCompacting();
}

void Serialize(StructuredWriter* writer, const BoundingBox& value) {
  writer->BeginCompacting();
  writer->OpenArray();

  if (value.valid()) {
    writer->OpenArray();
    for (int i = 0; i < 3; ++i)
      writer->WriteFloat(value.min_extent()[i]);
    writer->CloseArray();
    writer->OpenArray();
    for (int i = 0; i < 3; ++i)
      writer->WriteFloat(value.max_extent()[i]);
    writer->CloseArray();
  }

  writer->CloseArray();
  writer->EndCompacting();
}

void Serialize(StructuredWriter* writer, const Stream& stream) {
  writer->OpenObject();

  writer->WritePropertyName("field");
  Serialize(writer, GetObjectId(&stream.field()));

  writer->WritePropertyName("startIndex");
  Serialize(writer, stream.start_index());

  writer->WritePropertyName("semantic");
  Serialize(writer, stream.semantic());

  writer->WritePropertyName("semanticIndex");
  Serialize(writer, stream.semantic_index());

  writer->CloseObject();
}

void BinaryArchiveManager::WriteObjectBinary(ObjectBase* object,
                                             const string& file_name,
                                             const uint8* data,
                                             size_t numBytes) {
  FileContent& content = file_map_[file_name];
  ObjectBinaryRangeMap::iterator it = object_binary_range_map_.find(object);
  BinaryRange range;
  if (it != object_binary_range_map_.end()) {
    // It is okay to call WriteObjectBinary multiple times for a single
    // object but they must not be interleaved with those for other objects.
    range = it->second;
    DCHECK(range.end_offset_ == content.size());
  } else {
    range.begin_offset_ = content.size();
  }
  content.insert(content.end(), data, data + numBytes);
  range.end_offset_ = content.size();
  object_binary_range_map_[object] = range;
}

BinaryRange BinaryArchiveManager::GetObjectRange(ObjectBase* object) {
  return object_binary_range_map_[object];
}

void BinaryArchiveManager::WriteArchive(IArchiveGenerator* archive_generator) {
  for (FileMap::const_iterator it = file_map_.begin();
       it != file_map_.end();
       ++it) {
    const string& file_name = it->first;
    const FileContent& content = it->second;
    archive_generator->AddFile(file_name,
                               content.size());
    MemoryReadStream stream(&content[0],
                            content.size());
    archive_generator->AddFileBytes(&stream, content.size());
  }
}

namespace {
bool ParamIsSerialized(Param* param) {
  return param->output_connections().size() != 0 ||
      (!param->dynamic() && !param->read_only());
}

class PropertiesVisitor : public VisitorBase<PropertiesVisitor> {
 public:
  explicit PropertiesVisitor(StructuredWriter* writer)
      : writer_(writer) {
    Enable<Curve>(&PropertiesVisitor::Visit);
    Enable<Element>(&PropertiesVisitor::Visit);
    Enable<NamedObject>(&PropertiesVisitor::Visit);
    Enable<Pack>(&PropertiesVisitor::Visit);
    Enable<Primitive>(&PropertiesVisitor::Visit);
    Enable<Shape>(&PropertiesVisitor::Visit);
    Enable<Skin>(&PropertiesVisitor::Visit);
    Enable<Transform>(&PropertiesVisitor::Visit);
  }

 private:
  void Visit(Curve* curve) {
    Visit(static_cast<NamedObject*>(curve));

    writer_->WritePropertyName("preInfinity");
    Serialize(writer_, curve->pre_infinity());

    writer_->WritePropertyName("postInfinity");
    Serialize(writer_, curve->post_infinity());

    writer_->WritePropertyName("useCache");
    Serialize(writer_, curve->use_cache());

    writer_->WritePropertyName("sampleRate");
    Serialize(writer_, curve->sample_rate());
  }

  void Visit(Element* element) {
    Visit(static_cast<NamedObject*>(element));

    writer_->WritePropertyName("owner");
    Serialize(writer_, element->owner());
  }

  void Visit(NamedObject* object) {
    Visit(static_cast<ObjectBase*>(object));

    if (object->name().length() > 0) {
      writer_->WritePropertyName("name");
      Serialize(writer_, object->name());
    }
  }

  void Visit(ObjectBase* object) {
  }

  void Visit(Pack* pack) {
    Visit(static_cast<NamedObject*>(pack));

    writer_->WritePropertyName("root");
    Serialize(writer_, pack->root());
  }

  void Visit(Primitive* primitive) {
    Visit(static_cast<Element*>(primitive));

    writer_->WritePropertyName("numberVertices");
    Serialize(writer_, primitive->number_vertices());

    writer_->WritePropertyName("numberPrimitives");
    Serialize(writer_, primitive->number_primitives());

    writer_->WritePropertyName("primitiveType");
    Serialize(writer_, primitive->primitive_type());

    writer_->WritePropertyName("indexBuffer");
    Serialize(writer_, primitive->index_buffer());

    writer_->WritePropertyName("startIndex");
    Serialize(writer_, primitive->start_index());
  }

  void Visit(Shape* shape) {
    Visit(static_cast<ParamObject*>(shape));

    writer_->WritePropertyName("elements");
    writer_->BeginCompacting();
    writer_->OpenArray();
    const ElementRefArray& elements = shape->GetElementRefs();
    for (int i = 0; i != elements.size(); ++i) {
      Serialize(writer_, elements[i].Get());
    }
    writer_->CloseArray();
    writer_->EndCompacting();
  }

  void Visit(Skin* skin) {
    Visit(static_cast<NamedObject*>(skin));

    writer_->WritePropertyName("inverseBindPoseMatrices");
    writer_->BeginCompacting();
    writer_->OpenArray();
    const Skin::MatrixArray& inverse_bind_pose_matrices =
        skin->inverse_bind_pose_matrices();
    for (int i = 0; i != inverse_bind_pose_matrices.size(); ++i) {
      const Matrix4& matrix = inverse_bind_pose_matrices[i];
      Serialize(writer_, matrix);
    }
    writer_->CloseArray();
    writer_->EndCompacting();
  }

  void Visit(Transform* transform) {
    Visit(static_cast<ParamObject*>(transform));

    writer_->WritePropertyName("shapes");
    writer_->BeginCompacting();
    writer_->OpenArray();
    const ShapeRefArray& shape_array = transform->GetShapeRefs();
    for (int i = 0; i != shape_array.size(); ++i) {
      Serialize(writer_, shape_array[i]);
    }
    writer_->CloseArray();
    writer_->EndCompacting();

    writer_->WritePropertyName("parent");
    Serialize(writer_, transform->parent());
  }

  StructuredWriter* writer_;
};

class CustomVisitor : public VisitorBase<CustomVisitor> {
 public:
  explicit CustomVisitor(StructuredWriter* writer,
                         BinaryArchiveManager* binary_archive_manager)
      : writer_(writer),
        binary_archive_manager_(binary_archive_manager) {
    Enable<DestinationBuffer>(&CustomVisitor::Visit);
    Enable<Buffer>(&CustomVisitor::Visit);
    Enable<Curve>(&CustomVisitor::Visit);
    Enable<Primitive>(&CustomVisitor::Visit);
    Enable<Skin>(&CustomVisitor::Visit);
    Enable<SkinEval>(&CustomVisitor::Visit);
    Enable<StreamBank>(&CustomVisitor::Visit);
    Enable<Texture2D>(&CustomVisitor::Visit);
    Enable<TextureCUBE>(&CustomVisitor::Visit);
  }

 private:
  void Visit(DestinationBuffer* buffer) {
    // NOTE: We don't call Visit<VertexBuffer*> because we don't want to
    // serialize the contents of the Buffer. We only serialize its structure.
    Visit(static_cast<NamedObject*>(buffer));
    writer_->WritePropertyName("numElements");
    Serialize(writer_, buffer->num_elements());
    writer_->WritePropertyName("fields");
    writer_->OpenArray();
    const FieldRefArray& fields = buffer->fields();
    for (size_t ii = 0; ii < fields.size(); ++ii) {
      Field* field = fields[ii].Get();
      writer_->BeginCompacting();
      writer_->OpenObject();
      writer_->WritePropertyName("id");
      Serialize(writer_, field->id());
      writer_->WritePropertyName("type");
      Serialize(writer_, field->GetClassName());
      writer_->WritePropertyName("numComponents");
      Serialize(writer_, field->num_components());
      writer_->CloseObject();
      writer_->EndCompacting();
    }
    writer_->CloseArray();
  }

  void Visit(Buffer* buffer) {
    Visit(static_cast<NamedObject*>(buffer));

    writer_->WritePropertyName("fields");
    writer_->OpenArray();
    const FieldRefArray& fields = buffer->fields();
    for (size_t ii = 0; ii < fields.size(); ++ii) {
      Field* field = fields[ii].Get();
      Serialize(writer_, field->id());
    }
    writer_->CloseArray();

    WriteObjectBinaryRange(buffer);
  }

  void Visit(Curve* curve) {
    Visit(static_cast<NamedObject*>(curve));
    WriteObjectBinaryRange(curve);
  }

  void Visit(ObjectBase* object) {
  }

  void Visit(Primitive* primitive) {
    Visit(static_cast<Element*>(primitive));

    if (primitive->index_buffer()) {
      writer_->WritePropertyName("indexBuffer");
      Serialize(writer_, GetObjectId(primitive->index_buffer()));
    }
  }

  void Visit(Skin* skin) {
    Visit(static_cast<NamedObject*>(skin));
    WriteObjectBinaryRange(skin);
  }

  void Visit(SkinEval* skin_eval) {
    Visit(static_cast<VertexSource*>(skin_eval));

    writer_->WritePropertyName("vertexStreams");
    writer_->OpenArray();
    const StreamParamVector& vertex_stream_params =
        skin_eval->vertex_stream_params();
    for (int i = 0; i != vertex_stream_params.size(); ++i) {
      const Stream& stream = vertex_stream_params[i]->stream();
      writer_->OpenObject();
      writer_->WritePropertyName("stream");
      Serialize(writer_, stream);

      if (vertex_stream_params[i]->input_connection() != NULL) {
        writer_->WritePropertyName("bind");
        Serialize(writer_,
                  GetObjectId(
                      vertex_stream_params[i]->input_connection()->owner()));
      }

      writer_->CloseObject();
    }
    writer_->CloseArray();
  }

  void Visit(StreamBank* stream_bank) {
    Visit(static_cast<NamedObject*>(stream_bank));

    writer_->WritePropertyName("vertexStreams");
    writer_->OpenArray();
    const StreamParamVector& vertex_stream_params =
        stream_bank->vertex_stream_params();
    for (int i = 0; i != vertex_stream_params.size(); ++i) {
      const Stream& stream = vertex_stream_params[i]->stream();
      writer_->OpenObject();
      writer_->WritePropertyName("stream");
      Serialize(writer_, stream);

      if (vertex_stream_params[i]->input_connection() != NULL) {
        writer_->WritePropertyName("bind");
        Serialize(writer_,
                  GetObjectId(
                      vertex_stream_params[i]->input_connection()->owner()));
      }

      writer_->CloseObject();
    }
    writer_->CloseArray();
  }

  void Visit(Texture2D* texture) {
    Visit(static_cast<Texture*>(texture));

    writer_->WritePropertyName("width");
    Serialize(writer_, texture->width());
    writer_->WritePropertyName("height");
    Serialize(writer_, texture->height());
    writer_->WritePropertyName("format");
    Serialize(writer_, texture->format());
    writer_->WritePropertyName("levels");
    Serialize(writer_, texture->levels());
    writer_->WritePropertyName("renderSurfacesEnabled");
    Serialize(writer_, texture->render_surfaces_enabled());
  }

  void Visit(TextureCUBE* texture) {
    Visit(static_cast<Texture*>(texture));

    writer_->WritePropertyName("edgeLength");
    Serialize(writer_, texture->edge_length());
    writer_->WritePropertyName("format");
    Serialize(writer_, texture->format());
    writer_->WritePropertyName("levels");
    Serialize(writer_, texture->levels());
    writer_->WritePropertyName("renderSurfacesEnabled");
    Serialize(writer_, texture->render_surfaces_enabled());
  }

  void WriteObjectBinaryRange(ObjectBase* object) {
    writer_->WritePropertyName("binaryRange");
    writer_->BeginCompacting();
    writer_->OpenArray();
    BinaryRange range = binary_archive_manager_->GetObjectRange(object);
    writer_->WriteUnsignedInt(static_cast<unsigned int>(range.begin_offset_));
    writer_->WriteUnsignedInt(static_cast<unsigned int>(range.end_offset_));
    writer_->CloseArray();
    writer_->EndCompacting();
  }

  StructuredWriter* writer_;
  BinaryArchiveManager* binary_archive_manager_;
};

class ParamVisitor : public VisitorBase<ParamVisitor> {
 public:
  explicit ParamVisitor(StructuredWriter* writer)
      : writer_(writer) {
    Enable<ParamObject>(&ParamVisitor::Visit);
    Enable<ParamArray>(&ParamVisitor::Visit);
    Enable<ParamBoolean>(&ParamVisitor::Visit);
    Enable<ParamBoundingBox>(&ParamVisitor::Visit);
    Enable<ParamFloat>(&ParamVisitor::Visit);
    Enable<ParamFloat2>(&ParamVisitor::Visit);
    Enable<ParamFloat3>(&ParamVisitor::Visit);
    Enable<ParamFloat4>(&ParamVisitor::Visit);
    Enable<ParamInteger>(&ParamVisitor::Visit);
    Enable<ParamMatrix4>(&ParamVisitor::Visit);
    Enable<ParamString>(&ParamVisitor::Visit);
    Enable<RefParamBase>(&ParamVisitor::Visit);
    Enable<Material>(&ParamVisitor::Visit);
  }

 private:
  void Visit(Material* object) {
    Visit(static_cast<ParamObject*>(object));
  }

  void Visit(ParamObject* object) {
    const NamedParamRefMap& params = object->params();

    int numWrittenParams = 0;
    for (NamedParamRefMap::const_iterator it = params.begin();
         it != params.end(); ++it) {
      String param_name = it->first;
      Param::Ref param = it->second;
      if (ParamIsSerialized(param.Get())) {
        ++numWrittenParams;
      }
    }

    if (numWrittenParams > 0) {
      writer_->WritePropertyName("params");
      writer_->OpenObject();
      for (NamedParamRefMap::const_iterator it = params.begin();
           it != params.end(); ++it) {
        String param_name = it->first;
        Param::Ref param = it->second;
        if (ParamIsSerialized(param.Get())) {
          writer_->WritePropertyName(param_name);
          Accept(param.Get());
        }
      }
      writer_->CloseObject();
    }
  }

  void Visit(ParamArray* param_array) {
    writer_->WritePropertyName("params");
    writer_->OpenArray();
    const ParamArray::ParamRefVector& params = param_array->params();
    for (unsigned i = 0; i < params.size(); ++i) {
      Param::Ref param = params[i];
      Accept(param.Get());
    }
    writer_->CloseArray();
  }

  template <typename ParamType>
  void Visit(ParamType* param) {
    writer_->BeginCompacting();
    writer_->OpenObject();

    if (param->owner() == NULL || param->owner()->IsAddedParam(param)) {
      writer_->WritePropertyName("class");
      writer_->WriteString(param->GetClassName());
    }

    if (param->output_connections().size() != 0) {
      writer_->WritePropertyName("id");
      writer_->WriteInt(param->id());
    }
    if (param->input_connection() != NULL) {
      writer_->WritePropertyName("bind");
      writer_->WriteInt(param->input_connection()->id());
    } else if (!param->dynamic()) {
      writer_->WritePropertyName("value");
      Serialize(writer_, param->value());
    }

    writer_->CloseObject();
    writer_->EndCompacting();
  }

  StructuredWriter* writer_;
};

class BinaryVisitor : public VisitorBase<BinaryVisitor> {
 public:
  explicit BinaryVisitor(BinaryArchiveManager* binary_archive_manager)
      : binary_archive_manager_(binary_archive_manager) {
    Enable<Curve>(&BinaryVisitor::Visit);
    Enable<IndexBuffer>(&BinaryVisitor::Visit);
    Enable<DestinationBuffer>(&BinaryVisitor::Visit);
    Enable<VertexBufferBase>(&BinaryVisitor::Visit);
    Enable<Skin>(&BinaryVisitor::Visit);
  }

 private:
  void Visit(ObjectBase* object) {
  }

  // TODO: Replace this when we have code to serialize to the
  // final binary format. This is just placeholder.
  void Visit(Curve* curve) {
    Visit(static_cast<NamedObject*>(curve));

    MemoryBuffer<uint8> serialized_data;
    SerializeCurve(*curve, &serialized_data);

    binary_archive_manager_->WriteObjectBinary(
        curve,
        "curve-keys.bin",
        serialized_data,
        serialized_data.GetLength());
  }

  void Visit(DestinationBuffer* buffer) {
    // Destination buffers should NOT have their contents serialized.
    Visit(static_cast<Buffer*>(buffer));
  }

  void Visit(IndexBuffer* buffer) {
    Visit(static_cast<Buffer*>(buffer));

    MemoryBuffer<uint8> serialized_data;
    SerializeBuffer(*buffer, &serialized_data);

    binary_archive_manager_->WriteObjectBinary(
        buffer,
        "index-buffers.bin",
        serialized_data,
        serialized_data.GetLength());
  }

  void Visit(VertexBufferBase* buffer) {
    Visit(static_cast<Buffer*>(buffer));

    MemoryBuffer<uint8> serialized_data;
    SerializeBuffer(*buffer, &serialized_data);

    binary_archive_manager_->WriteObjectBinary(
        buffer,
        "vertex-buffers.bin",
        serialized_data,
        serialized_data.GetLength());
  }

  void Visit(Skin* skin) {
    Visit(static_cast<NamedObject*>(skin));

    MemoryBuffer<uint8> serialized_data;
    SerializeSkin(*skin, &serialized_data);

    binary_archive_manager_->WriteObjectBinary(
        skin,
        "skins.bin",
        serialized_data,
        serialized_data.GetLength());
  }

  BinaryArchiveManager* binary_archive_manager_;
};

// Checks object has a name that starts with prefix.
// Parameters:
//   object: ObjectBase object to check.
//   prefix: prefix to check for
//   name: optional, pointer to String to store name.
bool NameStartsWithPrefix(const ObjectBase* object,
                          const String& prefix,
                          String* name) {
  String object_name;
  if (object->IsA(NamedObject::GetApparentClass())) {
    object_name = down_cast<const NamedObject*>(object)->name();
  } else if (object->IsA(Param::GetApparentClass())) {
    object_name = down_cast<const Param*>(object)->name();
  }
  if (prefix.size() <= object_name.size() &&
      object_name.compare(0, prefix.size(), prefix) == 0) {
    if (name) {
      *name = object_name;
    }
    return true;
  }
  return false;
}

}  // namespace anonymous

Serializer::Serializer(ServiceLocator* service_locator,
                       StructuredWriter* writer,
                       IArchiveGenerator* archive_generator)
    : class_manager_(service_locator),
      writer_(writer),
      archive_generator_(archive_generator) {
  sections_[PROPERTIES_SECTION].name_ = "properties";
  sections_[PROPERTIES_SECTION].visitor_ = new PropertiesVisitor(writer_);
  sections_[CUSTOM_SECTION].name_ = "custom";
  sections_[CUSTOM_SECTION].visitor_ = new CustomVisitor(
      writer_, &binary_archive_manager_);
  param_visitor_ = new ParamVisitor(writer_);
  binary_visitor_ = new BinaryVisitor(&binary_archive_manager_);
}

Serializer::~Serializer() {
  for (int i = 0; i != NUM_SECTIONS; ++i) {
    delete sections_[i].visitor_;
  }
  delete param_visitor_;
  delete binary_visitor_;
}

void Serializer::SerializePack(Pack* pack) {
  SerializePackBinary(pack);

  writer_->OpenObject();
  writer_->WritePropertyName("version");
  writer_->WriteInt(kSerializerVersion);

  // write out properties for all objects starting with ROOT_PREFIX
  ObjectBaseArray owned_objects = pack->GetByClass<ObjectBase>();
  for (ObjectBaseArray::const_iterator it = owned_objects.begin();
       it != owned_objects.end(); ++it) {
    String name;
    if (NameStartsWithPrefix(*it, ROOT_PREFIX, &name)) {
      writer_->WritePropertyName(name);
      Serialize(writer_, GetObjectId(*it));
    }
  }

  writer_->WritePropertyName("objects");
  writer_->OpenObject();

  std::vector<const ObjectBase::Class*> classes =
      class_manager_->GetAllClasses();

  for (int i = 0; i != classes.size(); ++i) {
    const ObjectBase::Class* current_class = classes[i];
    if (!ObjectBase::ClassIsA(current_class, Param::GetApparentClass())) {
      std::vector<ObjectBase*> objects_of_class;
      for (ObjectBaseArray::const_iterator it = owned_objects.begin();
           it != owned_objects.end(); ++it) {
        if ((*it)->GetClassName() == current_class->name() &&
            !NameStartsWithPrefix(*it, ROOT_PREFIX, NULL)) {
          objects_of_class.push_back(*it);
        }
      }
      if (objects_of_class.size() != 0) {
        writer_->WritePropertyName(current_class->name());
        writer_->OpenArray();
        for (int j = 0; j != objects_of_class.size(); ++j) {
          writer_->OpenObject();
          SerializeObject(objects_of_class[j]);
          writer_->CloseObject();
        }
        writer_->CloseArray();
      }
    }
  }

  writer_->CloseObject();
  writer_->CloseObject();

  binary_archive_manager_.WriteArchive(archive_generator_);
}

void Serializer::SerializePackBinary(Pack* pack) {
  std::vector<ObjectBase*> objects = pack->GetByClass<ObjectBase>();
  for (std::vector<ObjectBase*>::size_type i = 0; i < objects.size(); ++i) {
    binary_visitor_->Accept(objects[i]);
  }
}

void Serializer::SerializeObject(ObjectBase* object) {
  writer_->WritePropertyName("id");
  writer_->WriteInt(object->id());
  for (int i = 0; i != NUM_SECTIONS; ++i) {
    if (sections_[i].visitor_->IsHandled(object->GetClass())) {
      writer_->WritePropertyName(sections_[i].name_);
      writer_->OpenObject();
      SerializeSection(object, static_cast<Section>(i));
      writer_->CloseObject();
    }
  }

  param_visitor_->Accept(object);
}

void Serializer::SerializeSection(ObjectBase* object, Section section) {
  DCHECK(section >= 0 && section < NUM_SECTIONS);
  sections_[section].visitor_->Accept(object);
}

void Serializer::SerializeParam(Param* param) {
  param_visitor_->Accept(param);
}
}  // namespace o3d

redpajama_set_name: RedPajamaGithub


Police Officer Michael Slager fatally shot an unarmed black man, Walter Scott, as the latter was fleeing from a traffic stop. Slager's official story was one of a struggle over a taser, resulting in his need to use deadly force against Scott. Slager has been charged for Scott's murder after video emerged capturing the entire event, debunking his version of events. The issue at hand is not one of mere murder; it is one of treason.
The police are street corner politicians. They embody the law in a very real and tangible sense. The police are the only point of contact that most people will have with the law. For almost all who go further in the judicial system, the police are the initial point of contact. As denizens of the US, we are to trust the police to keep us safe and enforce the laws in a just manner. This is part of the state's sovereign responsibility. When police fail to act justly, within the bounds of the law, and instead abuse their power, then the legitimacy of the state must come into question.
Mr. Scott was failed by the police. And while some may say he shouldn't have tried to run, the fact of the matter is simple. He was unarmed. Officer Slager had no justification to shoot him. This act was a criminal act. It was an act that was done in the name of the state. It was an act that Officer Slager tried to justify with the authority of the state. And, because it was an act that was not legitimate, it has tarnished the legitimacy of the state. Actions which undermine the state and its sovereignty by agents of the state are treason.
To their credit, prosecutors in South Carolina have charged Officer Slager. It is the only thing they can do in order to restore the legitimacy of the state. Yet to think that Officer Slager is some bad apple and anomaly across police departments is farcical. The public has been exposed to officers overreacting and doing wrong for a while, with few officers receiving any real consequences for their misdeeds. The failure of the state to police its own control apparatus and correct it when it does wrong is a direct violation of the social contract that we have in liberal democracies. The powerlessness of denizens to claim against officers and have any real results without having to fear the oppression of other actors of the state (other police officers) is a common perception – which is arguably a reality – within the minority communities in the US. It is a perception that there exists two states: one which is free for the haves and one which is not for the have-nots.
This is not a new problem. We shouldn't forget that Martin Luther King, Jr was murdered less than 50 years ago during the heart of the civil rights movement. Less than 50 years ago we were living in a country where citizens with different colored skin were treated differently. Less than 50 years ago the non-white citizens of the US were subjected to a tremendous amount of hate and discrimination. And not 50 years later, do we see the fears gone from the communities most affected by discriminatory practices.
With the rash of coverage on police shootings over the past several months, those fears have been thrust prominently into the public spotlight. For the first time white America has to take notice that these fears are not unjustified. The Ferguson report was a clear example. And for poor, non-white America, that report is no surprise. For poor, non-white America that was but one example.
I come from an admittedly privileged background and I still have a fear of cops in the back of my mind after being forced to strip in sub-freezing temperatures in Chicago on suspicion of buying drugs and after having the sheriff's deputies grill me on suspicion of being a terrorist. Those are not white experiences, generally speaking.
But as a society we call for more and more policing. What ever happened with the NYPD slowdown earlier this year? Where is the report about crime? Maybe, as I suggested when it was going on, that the people in heavily policed areas actually felt safer because they weren't at such a steep risk of being stop and frisked.
It is a shame and a sham that public conservative figures cannot point out the treasonous nature of these officers, instead supporting them unequivocally, while they can criticize the efforts of the NSA in gathering the information necessary to act against terrorist actors. The typical line is that bad things happen to people at the hand of the authorities when they deserve it – but only so long as those authorities are not allowed to watch those who are in positions of privilege.
But we mustn't forget that the obligations of the state in a democracy are not only to those with privilege but they are to everyone, citizens and denizens alike. If the state allows police to make a distinction, as it historically has, it undermines its legitimacy, its authority, and, eventually, its ability to control. Crooked cops bring into question the good work of straight cops. Crooked cops (and overzealous prosecutors) bring into question the legitimacy of convictions that have resulted in the severely skewed demographics of prisoners relative to the general population.
Let me be clear, I don't want white America to suffer as non-white America has at the hands of law enforcement. That is not justice. I don't want white America to go to jail more. I don't want them to feel as I do -- scared to make someone afraid of me for no good reason. I want justice and with that I want everyone to understand that crooked cops are an affront to the sovereignty of the state and they must require the state to respond forcefully because treason cannot be tolerated if the state is to remain strong.


This must be an exciting time for you. Maybe you're looking to open a new business, expand an existing business or just get a business license. Regardless, if you need a Washington, Grant County business license, you must be doing something right.
Unfortunately, when it comes down to it, getting a business license in the State of Washington can quickly turn excitement and promise into confusion and frustration. With multiple levels of government and so many different requirements, obtaining business licenses can be overwhelming.
At Business Licenses, LLC, we provide you with all the information you need to get a Washington, Grant County business license. We are your one-stop-shop for your Washington, Grant County business license from the big picture requirements down to the smallest details.
Organizations of all sizes and industries depend on Business Licenses, LLC for answers on how to get a business license in Washington, Grant County.
Throughout our years of experience and relied-upon licensing services, it has been made clear time and again that most entrepreneurs are overwhelmed by what it takes to get a Washington, Grant County business license. We're here to make the process of getting a business license easy and efficient.
When you need a Washington, Grant County business license, you'll also need to fulfill local business license requirements. To get county or city level business license requirements, click on a county or city from our below list.
see all licenses for Washington counties.
Browse our comprehensive selection of business licenses and permits for the county of Grant in Washington. Drill down to your specific city to locate your Grant County business license and business permit.
LicenseSuite offers the most efficient way to understand industry specific requirements as they relate to your Washington, Grant County business license.


text:
Q: Need DocuSign example of Composite Templates in XML format Here is the scenario. I have a single PDF document that is composed of say 3 server side templates.
When I submit the document for signing via the DocuSign API, I will specify this document and I will supply the names, email address and role name for each signer.
I would then specify the server templates in the CompositTemplates section. And I want Docusign the match the singing locations from each template on the PDF document.
However, samples and documentation on this is sparse. Here is what I am using now and getting a "BadRequest" message when attempting to submit it.
    Dim xmlBody As String = "<envelopeDefinition xmlns=""http://www.docusign.com/restapi"">" & _
                                   "<emailSubject>DocuSign API - Signature Request on Document</emailSubject>" & _
                                   "<compositeTemplates>" & _
                                        "<serverTemplates>" & _
                                            "<serverTemplate>" & _
                                                "<sequence>" & "1" & "</sequence>" & _
                                                "<templateId>" & "04F7BB0A-F891-442C-B804-BAEF97B00AB1" & "</templateId>" & _
                                            "</serverTemplate>" & _
                                        "</serverTemplates>" & _
                                        "<inlineTemplates>" & _
                                            "<inlineTemplate>" & _
                                                "<sequence>2</sequence>" & _
                                                "<recipients>" & _
                                                    "<signers>" & _
                                                        "<signer>" & _
                                                            "<email>JGarland@etgroup.net</email>" & _
                                                            "<name>John Doe</name>" & _
                                                            "<recipientId>1</recipientId>" & _
                                                            "<roleName>Borrower 1</roleName>" & _
                                                        "</signer>" & _
                                                    "</signers>" & _
                                                "</recipients>" & _
                                            "</inlineTemplate>" & _
                                        "</inlineTemplates>" & _
                                        "<documents>" & _
                                            "<document>" & _
                                                "<documentId>1</documentId>" & _
                                                "<name>" & documentName & "</name>" & _
                                            "</document>" & _
                                        "</documents>" & _
                                   "</compositeTemplates>" & _
                                   "<status>sent</status>" & _
                               "</envelopeDefinition>"

A: The problem is that you are missing an xml node to identify a single compositeTemplate (since it's possible to have multiple composite templates).  You're XML currently resolves to:
<compositeTemplates>
    <serverTemplates>
       ...

But since you can have multiple composite templates you need an extra node to identify each one, like this:
<compositeTemplates>
    <compositeTemplate>
        <serverTemplates>
            ...

For a complete answer I'll say to also make sure you are setting the Content-Type of the request to application/xml.


Swaziland is controlled by King Mswati III who is sub-Saharan Africa's last absolute monarch.
Broadcasting and newspapers in the kingdom are already heavily restricted. Political parties are not allowed to contest elections and those that advocate for democracy are in effect banned in Swaziland.


Work on the game has gone poorly since I returned from Detroit.
At first, I thought it was a problem related to routine, or lack of one. It's been difficult to find time to work on the game. As it turned out, though, I had it backwards: I didn't have a routine because I was beginning to panic.
Once Gridiron Solitaire went out for the Friends & Family beta, I immediately realized that the Stop The Drive meter just wasn't good enough. I've been fairly pleased with it for a while, because it was a big improvement over what came before, but I think I've always known that it violated one of most basic principles I followed when designing the game: everything must be football.
The meter isn't football. As someone put it, "It looks like a United Way telethon." Ironically, that's one of the reasons I chose it--it's a universally-recognized symbol of a goal to achieve--but it fails badly in the "fidelity to football" category.
This has bothered me more and more in recent weeks, to the point where I was putting off working on other things because it seemed like an intractable problem. It wasn't good enough, I knew it wasn't good enough, and I didn't know how I could make it better.
On Saturday, Gloria and Eli 11.0 left for the summer 4-day trip to Shreveport.
No matter how busy I am, I can always navigate in my head from point A to point B. For most things, that's enough. I can also usually get from A to C. Longer hops, though, are quite difficult, because I don't have enough uninterrupted time to think.
Suddenly, though, I had time.
I sent Frederick an e-mail, asking him for suggestions about the physical appearance of the meter. I told him I wasn't sure what, exactly, but I felt like we had an opportunity to modify the look of the meter. I thought it was a bit fat, for starters.
In short order, he sent back a graphic that wasn't as wide, plus the background color was the color of the scoreboard instead of a sky blue. His reasoning? It was a non-interactive element that provided information, just like a scoreboard element.
That was an excellent point, and I agreed. That one comment, though, made me start thinking.
The first thing I realized was that the meter should be docked to the scoreboard. After some mucking around in a paint program, I decided it could be docked to the right or left edge, depending on what direction the CPU was driving.
The meter would have to be smaller, but that was okay. It looked much, much better when docked to the scoreboard.
Still, though, something bothered me. I wanted something besides the meter. Something that could also be docked to the scoreboard, but would be explicitly football-related.
That's when I realized I could dock something to the bottom of the scoreboard, wider than the text box, but the same height. What if I put the image of an offensive player at one end, and a defensive player at the other end? When the user played cards, the defender could move toward the other player, and if he reached him ("tackling him") before the drive ended in a touchdown, then the drive would be stopped.
As soon as I had that thought, I realized that was the correct idea.
At first, I thought the box would be much wider than the scoreboard, but as soon as I mocked it up, I realized that was far too wide. To look like a natural part of the scoreboard, it needed to be just as wide as the scoreboard.
One more thing: it would look much more natural if the defensive and offensive players move toward each other. They would meet at the 50-yard line (symmetry), triggering a tackle image.
It's hard to explain, but I look at that and know instinctively that it is "right." That's exactly what it's supposed to be, and it should have been that way from day one, but I just couldn't see it yet. The old meter looks incredibly clunky and out of place in comparison.
Also, that little background strip has unique backgrounds for sunny, rainy, and snowy weather, so it will match the field background graphic.
I've also added a wild card to the deck. It matches any card on the field, and it's added a bit of strategic spice to the card play. It's also caused some play balancing issues, but I accidentally designed the game in such a way that it's easy to adjust the play balance (seriously--there's no way I could've done it on purpose).
So after a few weeks of little progress, finally a significant step forward.


ABSOLUTELY STUNNING END UNIT TOWNHOME IN HIGH DEMAND LEGACY PARK. RARE, MINT CONDITION. PERFECT LOCATION NEXT TO PARKLAND &TRAILS. BEAUTIFULLY FINISHED AND UPGRADED THROUGHOUT. 3-SIDED GAS FIREPLACE W/STONE SURROUND. UPGRADED WARM MAPLE CABINETRY W/STONE TILE BACKSPLASH. GRANITE CENTER ISLAND, UPGRADED FLOORING. AMAZING UPSTAIRS W/3 BEDROOMS, PLUS A LARGE LOFT. SPACIOUS OWNERS SUITE FEATURING LARGE SITTING ROOM PLUS A PRIVATE BATH AND WALK IN CLOSET. CONVENIENT UPPER LEVEL LAUNDRY ROOM. AWARD WINNING WAYZATA SCHOOLS. AMAZING QUALITY, LOCATION AND PRICE! DONT MISS THIS ONE!


Earthquake-report.com was one of the first blogs in the world to report in-depth about this massive earthquake. Follow us on twitter or in Facebook for this and future events.
Update 08:10 UTC : More than 80 police are being transferred from Auckland this afternoon (local time) to protect the city at night. A Night curfew has been called from 7 PM to 7 AM to prevent looting and to protect people from falling stones etc.
Update 08:51 UTC : Stormy weather expected in Christchurch area tomorrow. Gales can worsen the situation of the unstable houses even more than the aftershocks do.
Update 10:56 UTC : At least 7 aftershocks have been hit the area. Prime Minister told the press that it was a MIRACLE that no more people were hurt or killed. Still big areas in and around Christchurch without power. Great parts of the area also without water system.
SAR (Search and Rescue) teams with especially trained dogs are underway from other parts in the country. The bigger local and National companies are starting to set up and to donate to relief funds.
Curfew area imposed from 7 PM to 7 AM : CBD block Kilmore Street., Madras Street, Montreal Street and St Asaph Street + shopping centre + Kaiapoi. A fire breaks out in a flat in the city.
Update 17:13 UTC : All press reports from the south islands are mentioning the disturbing treat of high winds on Sunday. New Zealand weather service warns the civil service to follow the detailed weather reports very carefully as wind gales of more than 100 km/hour can create more damage on unstable buildings and damaged roofs.
Scientists are currently examining the origin and specific details of the earthquake. The 3 quake scenario is getting more credibility. This scenario is actually stating that what was sensed as the main shock might have been 3 seperate shocks one after each other.
Update 23:02 UTC : Cellular networks did a great job during and after the earthquake. Even with the main power down, most of the networks continued working for 3 to 8 hours, vital for urgent communications. Civil Defense minister said that New Zealand was blessed that no one died.
In big contrast with the miraculous zero casualties of this massive quake, was a plane crash at the South Island glaciers where 9 people lost their lives.
As residents return to their homes or begin to assess damage, they need to be aware of a cold weather front moving across Canterbury throughout the day.
More than 250 people used the Civil defense shelters during the night.
An estimated 500 buildings have been damaged during the earthquake.
Although authorities are still examining the cost to rebuild huge parts of Canterbury, the initial number goes beyond 2 billion NZ$.
For some Christchurch residents the power outage may last several days.
All elements of nature are constantly hammering on this volcano island arc, the South Sandwich Islands.
This is the purest nature one can find on our planet. Located in the influence of Antarctica, an eternal icecap is covering the volcano archipelago. Those who have traveled to Antarctica (like me) know the places very well. An abundance of birds and thousands of all species of Penguins. The South Sandwich islands are not often visited because of its distance (a limited number of cruises are inserting South Georgia ( a little … to the northwest) but the beaty of these places is astonishing. Purer than pure !
Today's earthquake is a moderate normal one in this area of the world. It struck near Montagu island. Montagu island is home for Mount Melinda, a stratovolcano who erupted in 2005 leaving a 3.5 km lava flow on the virginlike ice and snow. The volcano only came awake in 2001.
Mount Belinda is 1,370 meter high stratovolcano located on Montagu Island, in the South Sandwich Islands of the Scotia Sea. Belinda was inactive until late 2001, when it erupted. The eruption produced large quantities of basaltic lava, melting the thick cover of ice that had accumulated while the volcano lay dormant, and "producing a marvelous 'natural laboratory'; for studying lava-ice interactions relevant to the biology of extreme environments as well as to processes believed to be important on the planet Mars." Mount Belinda has been in a persistent state of eruption since 2001. Far from slowing down, the activity throughout 2005 marks the highest levels yet. An increase in activity in the fall of 2005 has produced an active 3.5-kilometre-long lava flow, extending from the summit cone of Mount Belinda all the way down into the sea. The flow spreads northeast from the volcanic vent, and then becomes diverted due north by an arête.
We do try to bring a comprehensive overview of the vents. For this reason we have sliced our reports in different subjects. 2 main report pages + an aftershock and the tectonic explanation.
Series of moderate relatively deep earthquakes without danger. Today's earthquake was almost under Salta, a main city in that area. The quake will have been felt by a lot of people.
Moderate earthquake in a volcano arc and to the south of last weak earthquakes.
Papua New Guinea daily portion of earthquakes, today quite close (10 km) to the coastal towns of Waibula and Wataluma on Goudenough island. The island is only 39 km in diameter and from the coastline, a cloud catcher mountain (Mount Vineuo) risis 2,536 meter above the sea. Cloud catcher = one of the places in the world with the most rainfall.
55 km from Ica – Quite powerful earthquake – Local press agencies are reporting that NO damage has been noticed.
Too deep to cause any problems. Near the city of Pucallpa !
A powerful aftershock. Might cause more problems with unstable buildings who did suffer from the first heavy earthquake.
Earthquake-report.com was created by the same people who wanted to do something constructive when the Haiti earthquake struck. Our goal was making an iPhone app that would be able to trace people if they where caught in the rubble and to facilitate immediate messages to friends and family in case of safety.
We encourage New Zealanders to install and register the application and to use it as much as possible if a serious aftershock would strike again.
Another MAJOR ISSUE we experienced today in Christchurch, is that the Cell Phone Towers were still working well on batteries, even when the power was out.
Though I've seen a pretty wide variety of iPhone apps in every category and admittedly don't know all of them by a long shot, Quake SOS is the first app I've seen that is designed for use in a natural disaster emergency. A combination of an alert system for victims of earthquakes and an earthquake information guide, Quake SOS is a free app and requires registration to use effectively.
Quake SOS allows users to provide contact information of family and friends and to alert them if you are in an earthquake. You can notify your contacts that you are safe, or that you need help, whichever your situation would warrant.
Other useful information includes an earthquake database of sorts that updates every time you launch Quake SOS. It provides information such as when and where earthquakes have occurred, the Richter scale magnitude and depth of the quake, and a map displaying the actual location.
Registered users can notify others if they felt the quake and see the number of users reporting safe. Quake SOS also includes news pertaining to specific quakes.
While the one notable issue regarding the effectiveness of Quake SOS is the fact that a signal is required for it to work, it remains a plausible source of information and assistance in the face of a natural disaster. The signal requirement could certainly pose a problem, depending on the situation. Obviously smaller quakes probably won't take out satellite towers and internet signals, but larger ones certainly could. In that case, no information could be sent or gathered. It would really depend and reliability is certainly unpredictable.


text:
Golf Master è un videogioco di simulazione di golf per Commodore 64 sviluppato da Mikko Helevä e pubblicato da Rack It, etichetta economica della Hewson, nel 1988.

Modalità di gioco

Questo videogioco presenta un percorso di 18 buche con una visualizzazione dall'alto dei campi di gioco, e questo lo differenzia principalmente dalla contemporanea serie Leader Board, caratterizzata invece da una grafica tridimensionale, con la quale veniva spesso messo a confronto.

I comandi (selezione della mazza, direzione su una bussola e potenza di tiro) sono presenti nella parte alta dello schermo e vanno regolati all'inizio di ogni tiro tramite un puntatore e delle icone. La regolazione non è in tempo reale e non richiede agilità manuale. Quando si conferma il tiro, un'animazione monocromatica del golfista appare temporaneamente al posto delle icone.

Ci sono buche che occupano una sola schermata e altre che si estendono con scorrimento, sempre in orizzontale verso destra. Un'icona permette di vedere in anteprima tutte le buche, mentre la barra spaziatrice permette di scorrere la visuale verso la buca. Come ostacoli sono presenti zone accidentate, bunker di sabbia, alberi e laghi.

Scopo del gioco è mettere in buca la pallina nel minor numero di colpi possibile; si può affrontare tutto il percorso, mezzo percorso o una buca singola, a tre livelli di difficoltà, e con da uno a quattro giocatori a turni. La difficoltà influenza la presenza di vento, che varia in tempo reale.

Bibliografia

Collegamenti esterni

redpajama_set_name: RedPajamaWikipedia


Did you know that cherries contain melatonin (milk does, too)? This semisweet recipe is geared toward helping you sleep.
Preheat oven to 350 degrees. Line a 15x10x1 inch baking pan with parchment paper.
In a large bowl stir together the first six ingredients (through salt). Add cereal, oats, pecans, and coconut; stir to coat well. Spread cereal mixture in prepared pan.
Bake about 15 minutes or until golden; stirring after 10 minutes. Remove from pan, stir in cherries. Let cool on a wire rack. Store in an airtight container for up to 2 weeks.


text:
<?php

namespace Kirby\Twig;

use Exception;
use Str;
use Tpl;

/**
 * Main Kirby Twig Plugin class, hopefully with a stable API.
 *
 * @package  Kirby Twig Plugin
 * @author   Florens Verschelde <florens@fvsch.com>
 */
class Plugin
{
    /** @var bool - flag to make sure we only register once */
    static private $registered = false;

    /**
     * Register the template component and load the `twig` helper function
     * @return bool
     * @throws Exception
     */
    static public function register()
    {
        // only register once
        if (static::$registered === true) {
            return true;
        }
        $kirby = kirby();
        if (!class_exists('Kirby\Component\Template')) {
            throw new Exception('The Kirby Twig plugin requires Kirby 2.3 or higher. Current version: ' . $kirby->version());
        }
        if (!class_exists('Twig_Environment')) {
            require_once __DIR__.'/../lib/Twig/lib/Twig/Autoloader.php';
            \Twig_Autoloader::register();
        }
        $kirby->set('component', 'template', 'Kirby\Twig\TwigComponent');
        if (is_executable('twig') === false) {
            require_once __DIR__ . '/helpers.php';
        }
        return static::$registered = true;
    }

    /**
     * Renders a Twig template string or template file
     * Can be used in Kirby controllers and PHP templates
     *
     *  * Example usage:
     *
     *     <?php echo twig('Hello {{ who }}', ['who'=>'World']) ?>
     *     <?php echo twig('@snippets/header.twig', ['title'=>'Home page']) ?>
     *
     * Note: in Twig templates, you should use the `include` tag or function instead.
     *
     * @param string $template - path or template string to render
     * @param array  $userData - data to pass as variables to the template
     * @return string
     */
    static public function render($template, $userData)
    {
        if (!is_string($template)) return '';
        $path = strlen($template) <= 256 ? trim($template) : '';
        $data = array_merge(Tpl::$data, is_array($userData) ? $userData : []);
        $twig = TwigEnv::instance();

        // treat template as a path only if it *looks like* a Twig template path
        if (Str::startsWith($path, '@') || Str::endsWith(strtolower($path), '.twig')) {
            return $twig->renderPath($path, $data);
        }
        return $twig->renderString($template, $data);
    }
}


text:
ACDSee — коммерческая (в прошлом — условно-бесплатная) программа для просмотра и управления коллекцией изображений, выпускаемая ACD Systems. Содержит многочисленные инструменты для обработки изображений, в том числе и пакетной. В последних версиях имеет два режима просмотра: быстрый, в котором доступны только инструменты поворота изображения и изменение масштаба, и полный, с загрузкой всех инструментов обработки.

Особенности

 Ускоренный поиск изображений при помощи Quick Search Bar.
 Быстрый просмотр Raw-изображений.
 Расширенная поддержка Raw-форматов цифровых камер Nikon, Canon, Konica-Minolta, Olympus, Fuji и Pentax, включая популярные DSLR-модели: Nikon D3X, Nikon D7000, Canon EOS-1Ds Mark III, Canon EOS 600D,Pentax K-5 и Olympus E-5.
 Мощные средства обработки Raw-форматов дают пользователю полный контроль над изображениями при помощи точных инструментов для коррекции баланса белого, различных дефектов, резкости и помех.
 Полная поддержка управления цветом для цветовых профилей ICC и ICM.
 Возможность визуальной маркировки позволяет быстро сортировать и выбирать нужные фотографии.
 Интегрированная поддержка Raw-формата DNG (Digital Negative Specification).
 Редактирование наборов из тысяч фотографий с одновременным использованием множества функций.
 Интегрированная поддержка IPTC для взаимодействия с Photoshop Captions.
 Водяные знаки на фотографиях с графикой или текстом для отражения авторских прав и прав собственности, а также возможность наложения на определённые фотографии бизнес-информации.
 Инструмент затенения/выделения позволяет сделать ярче только тёмные участки фотографии, затенить слишком яркие или сделать и то, и другое одновременно.
 Шаблоны HTML-альбомов созданы с целью удовлетворения профессиональных нужд пользователей. Их можно настроить, добавив контактную информацию, логотип компании, а также другую информацию, соответствующую бизнесу пользователя.
 Настраиваемый браузер, «горячие» клавиши и метаданные отвечают всем персональным требованиям пользователей и упрощают технологический процесс.
 Возможности быстрого редактирования позволяют легко устранять различные искажения.
 Существует также версия Pro для Mac OS X.
 Пользователям, купившим лицензионную ACDSee Pro, предоставляется бесплатный доступ к online-хранилищу фотографий ACDSee online.

См. также
 ACDSee Photo Editor
 ACDSee Photo Manager

Примечания

Ссылки
 Официальный сайт ACDSee

Программное обеспечение для Windows
Shareware
Программы для организации изображений
Программное обеспечение для macOS
Программы для просмотра изображений


A former road builder is joining the GDOT Board. I'm actually pretty speechless. Not in awe. Just.... business as usual, right? What is there to say that hasn't been said already?
Just what we need, another road builder hanging out with his road building buddies on the GDOT.
I've been to every part of this country, and metro Atlanta has THE WORST laid out streets and roads in the entire country. No one else is close.
The absence of signs, confusing road signs, mostly on interstates, but on streets also, and the developer driven pattern of naming streets, has made metro Atlanta the most confusing place to drive around in.
A lot of people complain, some people have died, but no one in charge seems to give a damn.
Being a snarky Yankee, I have a theory that it is this way to make sure any future General Shermans get confused.


text:
Meanwhile, Somewhere in the Pentagon...
We Need a Social Economy, Not a Hyper-Financialize...
The Toxic Fruit of Financialization: Risk Is for T...
The Two Charts That Dictate the Future of the Economy
There Is Only One Empire: Finance
In the Footsteps of Rome: Is Renewal Possible?
When We Can No Longer Tell the Truth...
The Death Spiral of Financialization
The Over-Quantification of Life
Why 2017 Is Like 1969
Earth's Economy Glorifies Waste, Exploitation, Deb...
We Do These Things Because They're Easy: Our All-C...
Our Financial Buffers Are Thinning
The "News" Is Content-Free
What's the Safest Investment in Troubled Times?
The Inevitability Of DeGrowth
We Need a New American (Social) Revolution
Our Political Parties Are Obsolete
We're Fragmenting Because our Experience of the Ec...
A 4th of July Remembrance: Independence Arises fro...
The Real Cause of the Opioid Epidemic: Scarcity of...
The decision to launch nuclear weapons is political, not military.
As North Korean supreme leader Kim Jong Un declares that "The Entire US Territory Is Now Within Our ICBM Range", somewhere in the Pentagon, operational plans to neutralize North Korean nuclear and long-range missile capabilities are being refined.
There are undoubtedly two sets of operational plans: one deploying conventional weapons, and the second for deployment of nuclear weapons.
Nothing personal, Mr. Kim Jong Un, it's just business. A core duty of planners in the Pentagon is to ask "What if" and draw up a range of scenarios and operational plans to carry out the civilian leadership's policies and decisions.
One such scenario is "what if North Korea launches a ballistic missile that is tracking to strike U.S. territory?"
One response option in this scenario would be to wait and see if the North Korean missile hits the U.S. and if it is armed with a nuclear weapon, and if so, if the warhead detonates.
Another option is to respond immediately with a nuclear strike that neutralizes North Korea's ability to launch any more nuclear-armed missiles.
The U.S. Armed Forces does not declare war or make the decision to launch a nuclear strike--that is the prerogative and responsibility of the nation's civilian elected leadership. The duty of the U.S. Armed Forces is to be prepared to execute the decisions and policies of the elected civilian leadership.
The ethical considerations of such a decision are not the Pentagon's purview--those considerations rest with the elected civilian leadership. If North Korea is poised to kill 2 million Americans, South Koreans, Japanese, etc., then isn't erasing North Korea's capability to kill millions at the cost of 50,000 North Korean lives in a limited nuclear strike the more ethical choice?
Those considerations are not part of operational plans. The purpose of operational plans is to get the assigned job done. Limiting civilian casualties might well be part of the assigned mission. But it's not the Pentagon planners' job to make those mission decisions.
There are no small nuclear explosions, but there are smaller explosions and variations that have profoundly different consequences. Ground-burst detonations carve out craters and send shock waves through the earth that crumple tunnels, bunkers, elevator shafts, etc. Ground-burst detonations generate vast quantities of radioactive particles. Since it's well known that North Korea has buried its most precious nuclear resources deep underground, ground-burst detonations would be the only way to disrupt the access routes to bunkers deep underground.
Air-burst nuclear detonations generate field effects, i.e. electromagnetic pulses across the spectrum. These can be "tuned" to some degree. Thus a neutron-type weapon is designed to sicken and kill enemy soldiers while leaving buildings and equipment intact. This might be the weapon of choice to neutralize any attempt by the North Korean Army to launch a devastating artillery attack on South Korea in retaliation for the destruction of North Korea's missile and nuclear capabilities.
Air-burst field effects often include massive disruption of electronic equipment. This might limit the operational plans for air-burst nuclear detonations near the DMZ, as technologically advanced South Korea might well suffer significant economic losses from an air burst near the border with North Korea.
By the same token, an air-burst nuclear detonation over North Korean military communications headquarters might be considered essential to disrupt the North Koreans' command and control capabilities.
My point here is that operational plans to decapitate North Korean nuclear and ICBM capabilities exist and are constantly being revised and refined in light of new intelligence. It's not the planners' job to make the geopolitical or ethical calculations that inform such a drastic decision. It's the planners' job to make sure a strike ordered by the elected civilian leadership of the nation achieves its goal, i.e. eliminates North Korea's nuclear and missile delivery capabilities completely.
It's easy to say nuclear weapons should never be used, but what if conventional weapons can't do the job, or create greater risks? Would you consider it a good ethical trade-off to wait for millions to die before killing thousands? That's a political choice, and one that will always be second-guessed or disputed. But making such decisions is the purpose of elected civilian government.
The planners job is much more direct. If the elected civilian government orders the neutralization of North Korea's ability to kill millions of civilians in South Korea, Japan or the U.S., then the job boils down to aligning existing resources and reckoning how many resources will be needed to get the job done in the most effective way available.
A conventional-weapons strike would likely require hundreds (and possibly thousands) of aircraft sorties, and all that such a monumental effort entails. It would also requires a significant amount of time to execute. A nuclear strike requires far fewer resources but has consequences far beyond those of conventional weapons.
There have been no nuclear weapons detonated with the express intention of destroying civilians since 1945. The stakes are high, and nobody wants to launch a nuclear attack unless it is in retaliation for a nuclear attack. But by then it's too late to save the millions killed by the initial attack.
We all hope deterrence works. But deterrence very nearly failed a number of times in the Cold War between the USSR and the US. Given the possibility that deterrence might fail--over-ridden by a commander with launch authority, or a dozen other possibilities of miscalculation or impulse-- plans must be made for a first-strike designed to neutralize a nuclear missile capability.
The decision to launch nuclear weapons is political, not military--but achieving the goal is the duty of the military.
It's nothing personal, folks--it's just a peculiar business.
Check out both of my new books, Inequality and the Collapse of Privilege($3.95 Kindle, $8.95 print) and Why Our Status Quo Failed and Is Beyond Reform($3.95 Kindle, $8.95 print, $5.95 audiobook) For more, please visit the OTM essentials website.
Thank you, Patrick Y. ($5/month), for your splendidly generous pledge to this site -- I am greatly honored by your support and readership.
Thank you, Jay S. ($5/month), for your superbly generous pledge to this site -- I am greatly honored by your support and readership.
We Need a Social Economy, Not a Hyper-Financialized Economy
The key to broadly distributing opportunity and capital is to nurture the source of social capital: the community economy.
We all know what a hyper-financialized economy looks like--we live in one:central banks create credit/money out of thin air and distribute it to the already-wealthy, who use the nearly free money to buy back corporate shares, enriching themselves while creating zero jobs. Or they use the central-bank money to outbid mere savers to scoop up income-producing assets: farmland, rental properties, etc.
This asymmetric wealth accumulation and avoidance of risk creates a self-reinforcing feedback loop, as the super-wealthy financiers and corporations use a slice of their income to buy political protection of their income streams, creating cartels and quasi-monopolies that are impervious to competition and meaningful regulation.
The only possible output of a hyper-financialized economy is rapidly increasing wealth and income inequality--precisely what we see now.
What we need is a social economy, an economy that recognizes purposes and values beyond maximizing private gains by any means necessary, which is the sole goal of hyper-financialized economies.
Given the dominance of profit-maximizing markets and the state, we naturally assume these are the economy. But there is a third sector, the community economy, which is comprised of everything that isn't directly controlled by profit-maximizing companies or the state.
What differentiates the community economy from the profit-maximizing market and the state?
1. The community economy allows for priorities and goals other than maximizing profit. Making a profit is necessary to sustain the enterprise, but it is not the sole goal of the enterprise.
2. The community economy is not funded by the state.
3. The community economy is locally owned and operated; it is not controlled by distant corporate hierarchies. The money circulating in the community stays in the community.
4. The community economy is not dominated by moral hazard; the community must live with the consequences of the actions of its residents, organizations and enterprises.
The community economy includes small-scale enterprises, local farmer's markets, community organizations, social enterprises and faith-based institutions. Its structure is decentralized and self-organizing; it is not a formal hierarchy, though leaders naturally emerge within civic and business groups.
Few Americans have worked on a plantation. I am likely one of the few who has lived and worked in a classic plantation town (Lanai City, circa 1970; I picked pineapples along with my high school classmates as a summer job).
In my analysis, the current financial system is akin to a Plantation Economy:highly centralized and hierarchical, devoted to maximizing profits for distant owners, a finance-fueled machine for extracting wealth from local economies.
I call this the Neocolonial-Financialization Model:
The E.U., Neofeudalism and the Neocolonial-Financialization Model (May 24, 2012)
Wal-Mart and the Plantation Economy (August 24, 2010)
Colonizing the Plantation of the Mind (August 25, 2010)
Greece and the Endgame of the Neocolonial Model of Exploitation (February 19, 2015)
We can differentiate the community economy by comparing it to a hyper-financialized Plantation Economy. In a Plantation Economy, a once-diverse landscape of decentralized, locally owned small enterprises is displaced by corporations that are dependent on the state for their profits via direct subsidies, tax breaks, or a cartel/monopoly enforced by the state. (Think Big Pharma, Big Defense, the Higher Education Cartel, etc.)
The corporate Plantation's low wages leave many of its workers' families dependent on state aid to survive, and so it prospers on the backs of taxpayers who subsidize its low wages and the externalization of costs.
The current system rewards those with access to cheap capital and the power of the state. The community economy has neither.
The Plantation Economy institutionalizes poverty, parasitic finance, externalized costs, moral hazard (since the corporate/state overseers do not live in the community being cannibalized) and centralized wealth and political power.These are the only possible outputs of the hyper-financialized Plantation Economy.
Once the Plantation Economy has displaced the community economy, opportunities for work and starting small enterprises shrivel, and residents become dependent on state social welfare for their survival. By eliminating the need to be a productive member of the community, the welfare state destroys positive social roles and the inter-connected layers of the community economy between the state and the individual.
When the individual receives social welfare from the state, that individual has no compelling need to contribute to the community or participate in any way other than as a consumer of corporate goods and services. State social welfare guts the community economy by removing financial incentives to participate or contribute.
Why is the community economy so important? The community economy is first and foremost the engine of social capital, which is the source of opportunity and widely distributed wealth.
Social capital is the sum of all the connections and relationships that enable productive collaboration, commerce, exchange and cooperation. (I cover all eight kinds of capital in my book.)
Corporations offer a limited version of social capital--for example, meeting a manager in another department at a company picnic--but most of this capital vanishes once an individual leaves the company (or is "right-sized" into unemployment). This social capital is only superficially embedded in a place and community, as corporations routinely move operations in pursuit of their core purpose: expanding profits.
Corporations cannot replace communities for the simple reason each organization has different purposes and goals. The sole purpose and goal of a corporation is to expand capital and profits, for if it fails to do so, it falters and expires.
The purpose of a community is to preserve and protect a specific locale by nurturing social solidarity: the sense of sharing a purpose with others, of belonging to a community that is capable of concerted, collective action on the behalf of its members and its locale.
Political scientist Robert Putnam has described this structure as a web of horizontal social networks. Unlike corporations and the state, community economies are horizontal networks, i.e. networks of peers connected by overlapping memberships and interests.
It is not accidental that the current system of hierarchical corporations, banks and the state increases inequality and erodes the community economy: the only possible output of low social capital is rising inequality.
Putnam identified a correlation between the inequalities enforced by oppressive elites (slavery being the most extreme example) fearful of the potential of egalitarian (horizontal) networks to organize resistance to their exploitation.
Areas with low social capital are characterized by limited social mobility and rising economic inequality. In other words, the only way to lessen economic inequality is to nurture the horizontal peer-to-peer community economy that creates social capital.
This makes sense, as communities stripped of social capital offer limited access to the other forms of capital needed to launch local enterprises and construct ladders of social mobility.
A vibrant community economy provides members with an infrastructure of opportunity, i.e. multiple pathways to building capital, gaining knowledge and connecting with others.
The key to broadly distributing capital and reversing inequality is to nurture the source of social capital: the community economy.
This essay is drawn from my book A Radically Beneficial World: Automation, Technology and Creating Jobs for All: The Future Belongs to Work That Is Meaningful.
"Certainly the author is decades ahead of his time. Humanity will eventually adopt the author's principles written in all of his books. Currently, humanity lives in delusion that the system will continue to serve them. We will see massive changes even in the next decade. Don't waste your money on college--buy the author's books and succeed." Book Reader (via Amazon.com)
Check out both of my new books, Inequality and the Collapse of Privilege ($3.95 Kindle, $8.95 print) and Why Our Status Quo Failed and Is Beyond Reform ($3.95 Kindle, $8.95 print, $5.95 audiobook) For more, please visit the OTM essentials website.
Thank you, Caitlin R. ($5/month), for your splendidly generous pledge to this site -- I am greatly honored by your support and readership.
Thank you, Jonathan M. ($5/month), for your superbly generous pledge to this site -- I am greatly honored by your support and readership.
The Toxic Fruit of Financialization: Risk Is for Those at the Bottom
Those who have pushed the risk down the wealth-power pyramid are confident the Federal Reserve will continue to limit the risks of speculative financialization.
One of the most pernicious consequences of financialization is the shifting of risk from the top of the wealth-power pyramid to the bottom: those who benefit the most from financialization's leveraged, speculative credit bubbles protect themselves from losses while those at the bottom of the pyramid (the bottom 99.5%) face the full fury of financialization's formidable risk.
Longtime correspondent Chad D. and I recently exchanged emails exploring how the higher debt loads and higher interest payments of financialization inhibits people at the bottom of the wealth-power pyramid (i.e. debt-serfs) from taking risks such as starting a small business.
But this is only one serving of financialization's toxic banquet of risk-related consequences. Chad summarized how those at the apex of the wealth-power pyramid protect themselves from risk and losses.
At the top levels of the pyramid, members in those groups collect way more interest than they pay out and at the very top, they get a ton of interest and pay little to none. The people at the top can take all sorts of risk, because of this dynamic and further, they also usually have a heavy influence on the financial/political machinery, so they get bailed out by taxpayers when their investments go bad. In addition, because their influence extends to the criminal justice system, they are able to commit fraud and at the same time neutralize regulators and prosecutors, thereby escaping any ramifications from their excessive risk taking and in many cases massive fraud.
As Chad observed, the wealthy own the income streams from debt (bonds, etc.), while everyone else owes the interest and principal due on debt. As this chart shows, the wealthy own business equity and financial securities and have a modest slice of debt. The bottom 90% owe most of the debt, and their primary asset is the family home-- an asset that doesn't generate income while it generates interest income for those who own the mortgage. In other words, it's less an investment than a form of consumption-- especially when the current housing bubble deflates.
The asymmetry of risk and exposure to loss resulting from financialization is about to become consequential. Financialization has reached the top of the S-curve and is now in the decline phase. As noted on this graph, what worked so effortlessly in the boost phase of financialization not only no longer works, it actively boosts the risks of sudden, catastrophic losses.
Those who have pushed the risk down the wealth-power pyramid are confident the Federal Reserve will continue to limit the risks of speculative financialization. The S-curve is a pattern of Nature. If you're confident the Fed is now the ultimate power in the Universe, then you're betting that the Fed and Treasury will always absorb all the risk and all the losses, with zero consequences.
The S-Curve suggests that bet isn't as low-risk as those at the top of the wealth-power pyramid currently believe.
Thank you, David H. ($20/month), for your outrageously generous pledge to this site -- I am greatly honored by your support and readership.
Thank you, Michael B. ($5/month), for your superbly generous pledge to this site -- I am greatly honored by your support and readership.
If you study these charts closely, you can only conclude that the US economy is doomed to secular stagnation and never-ending recession.
The stock market, bond yields and statistical measures of the economy can be gamed, manipulated and massaged by authorities, but the real economy cannot. This is espcially true for the core drivers of the economy, real (adjusted for inflation) household income and real disposable household income, i.e. the real income remaining after debt service (interest and principal), rent, healthcare co-payments and insurance and other essential living expenses.
If you want to predict the future of the U.S. economy, look at real household income. If real income is stagnant or declining, households cannot afford to take on more debt or pay for additional consumption.
The Masters of the Economy have replaced the income lost to inflation and economic stagnation with debt for the past 17 years. They've managed to do so by lowering interest rates (and thus lowering interest payments), enabling households to borrow more (and thus buy more) with the same monthly debt payments.
But this financial shuck and jive eventually runs out of rope: eventually, the rising cost of living soaks up so much of the household income that the household can not legitimately afford additional debt, even at near-zero interest rates.
For this reason, real household income will dictate the future of the economy.If household incomes continue stagnating or declining, widespread advances in prosperity are impossible.
The Masters of the Economy have played another financial game to mask the erosion of real income: inflating speculative asset bubbles to boost the illusion of wealth, a form of financial sorcery called the wealth effect: households that see their stock and bond funds swelling by 50% to 100% in a few years are emboldened to believe this phantom "wealth" is permanent and thus can be freely spent in the present.
The problem with this financial shuck and jive is only the top 5% own enough assets to experience the speculative high of asset bubbles. This is one reason why the top 5% have pulled away from the bottom 95%, a trend that is blindingly obvious in this chart of Real Average Household Income by Quintile and the Top 5%from the always-insightful Doug Short (U.S. Household Incomes: A 49-Year Perspective):
The gains since 1992 reflect the national distribution of wealth very closely: those with minimal financial wealth (the bottom 80%) experienced minimal gains in real income.
Those with some financial wealth (the top 20%) enjoyed substantial gains, but the truly outsized gains were reserved for the top 5%, the class that owns the majority of the nation's wealth.
The problem for the Masters of the Economy is that adjusted for inflation, even the incomes of the top 20% and 5% have gone nowhere in the 21st century. If even those households exposed to the enormous gains of this century's two asset bubbles (2002 to 2008 and 2009 to the present) have stagnated, then all the financial shuck and jive isn't trickling down to real income, which is the bedrock of the real economy.
This second chart from Doug Short reveals the period in which the top 20% pulled away from the bottom 80%, and the top 5% pulled away from the bottom 95%. In 1990-92, the gap between the bottom 80% and the top 20% and 5% was modest. The go-go decade of the dot-com boom saw the income of the top 20% pull away from the bottom 80% and the income of the top 5% leave the bottom 95% in the dust.
All that changed in the Financialization Era of 2000 to 2015. Despite two unprecedented asset bubbles, the inflation-adjusted incomes of the top 40% have at best returned to the levels of 2000, while the real incomes of the bottom 60% have fallen dramatically since 2000.
Please note that this data is from the U.S. Census Bureau. Many of the charts one finds on the web (see an example below) of income/wealth inequality are drawn from data collected by Piketty et al., which as many critics have pointed out, does not include government transfers and social welfare programs that are a substantial (and rising) share of household income for the bottom 60%. These include earned income tax refunds, Medicaid healthcare coverage, rent subsidies, direct welfare payments, subsidized school lunches, direct grants for higher education, and so on.
Anecdotally, the sum of these social welfare transfers can double the effective income of low-income households from $20,000 to roughly $40,000 or more. We can quibble about the total value of these transfers and benefits, but they are undeniably substantial and when included, more accurately reflect the real-world income available to lower-income households.
It's also necessary to include capital gains, i.e. income from invested wealth and speculative gains reaped from asset bubbles. Data collected by Piketty et al. includes capital gains.
source: 11 Charts That Show Income Inequality Isn't Getting Better Anytime Soon
The point here is that no source of data on income disparity captures all these income streams or equivalents of income. I prefer to rely on I.R.S. tax records as the most reliable and least gamed source of income data, but the I.R.S. doesn't tax Medicaid benefits, rent subsidies, etc., so it seriously under-represents the effective income of lower-income households.
That said, the incomes of the top 20% are mostly taxable and thus more accurately reflected in the data presented here.
If you study these charts closely, you can only conclude that the US economy is doomed to secular stagnation and never-ending recession as long as real income for all segments is stagnating or declining (other than the top of the wealth apex, i.e. the top .5% of households).
Every other economic measure other than real household income is shuck and jive, statistical trickery, or phantom "wealth" conjured into existence by unsustainable credit/asset bubbles. If the Masters of the Economy can't move the needle of real household income for the bottom 95%, they'll end up with a banquet of consequences that extend deep into the social and political orders.
Thank you, Donald B. ($100), for your outrageously generous contribution to this site -- I am greatly honored by your steadfast support and readership.
Thank you, Mark P. ($5/month), for your superbly generous pledge to this site -- I am greatly honored by your support and readership.

redpajama_set_name: RedPajamaCommonCrawl


Chris Black Insurance provides insurance to technology service businesses in Lutz, Tampa, Zephyrhills, Wesley Chapel , Brandon, Land O Lakes, and surrounding areas.
With such a wide range of potential protection plans, it is important that you contact an insurance specialist at Chris Black Insurance to go over all of your options. We will help you find a plan that is right for your business.


Click Here to Try Three Days Free!
Cool off any time of the year and splash into our elegant glass-covered indoor swimming pool. The pool is 1,500 sq. ft and boasts five full lanes. Need to brush up your skills? We offer private swim lessons and group classes at varying skill levels.
Get down and sweat off the stress with our guided group classes, try all until you find your favorite. Our most popular classes include: Zumba, Aqua Power, & Turbo Kick.
The journey to get fit and stay fit doesn't have to be solo. Let us join you. Learn more about our personal trainers and how personal training can achieve your fitness dreams.
Start your journey today. Sign-up online quickly and easily, and start your new year on the right foot.
Let's Level up your mood.
Newport Swim & Fitness is here to motivate and lift your mood. You feel good. You look good. It's that simple. We care about how you feel, which is why we're not just a gym, but your happy place and welcome everyone to get healthy, both mentally and physically. At Newport S&F we make your health goals a reality in a comfortable environment, filled with natural lighting and open spaces throughout the facilities. Our friendly staff is here to guide you along every step of the way. All you have to do is show up.
Sign Up to Receive News from Newport Swim and Fitness!


text:
<?php

namespace Respect\Validation\Rules\SubdivisionCode;

use Respect\Validation\Rules\AbstractSearcher;

/**
 * Validator for Netherlands Antilles subdivision code.
 *
 * ISO 3166-1 alpha-2: AN
 *
 * @link http://www.geonames.org/AN/administrative-division-netherlands-antilles.html
 */
class AnSubdivisionCode extends AbstractSearcher
{
    public $haystack = [null, ''];

    public $compareIdentical = true;
}


Japan Coal Energy Center|Japan Coal Energy Center Accordingly, JCOAL is promoting the transfer of coal production and safety and private companies planning to build new coal washing plants across India.
coal washery coal washing machine indonesia. Coal - Wikipedia. Coal is a combustible black or brownish-black sedimentary rock usually occurring in rock strata in layers or veins called coal beds or coal seams.
The Largest Washery in India - 2011413-coal washing technology has ... Coal washing machines in India from XSM. ... technology providers for coal washing in indonesia.
ruiyuan piston jig coal washing plant/washer/machine. ruiyuan coal washing machine/coal ... Crusher Machine. Jig Screens For Coal Washery ... dirt in India, Indonesia.
coal washery coal washing machine indonesia - megafil. Coal washery plant has been . coal washery, . and offer coal washery, coal crusher, . coal washer machine indonesia. coal washing machine indonesia .


With less than two minutes to play against the No. 20 Princeton University Tigers, senior forward Kati Rothenhoefer knew her team needed a big play but that did not come through.
The Eagles faced a two goal deficit and their first potential loss of the season to a ranked opponent, but Rothenhoefer's persistency prevented her team from being shut out. She launched a rifle shot off a pass from senior midfielder Rebecca Treharne that snuck past junior Princeton goalkeeper Anya Gersoff to put AU on the board, but the Eagles (5-3, 1-0) failed to add a tying goal, falling to the Tigers 2-1.
The Tigers (2-4, 1-0) outshot the Eagles 16-5 during the matchup, but junior goalkeeper Kate McBeath prevented Princeton from running away with the game as she recorded five saves. Rothenhoefer credits the defense as a critical component for the Eagles.
Treharne and senior defender Grace Wilson's strong defensive performances stopped numerous Princeton scoring chances, but they remained unable to completely hold off the relentless attacks from their opponent.
The Princeton offense picked up speed as the clocked ticked on, and they ran the Eagles back and forth across the field, wearing out their opponents. Princeton sophomore midfielder Cat Caro capitalized on a pass from senior forward Stephanie Goldberg with three minutes to play in the first half and fired the ball past McBeath to notch the first goal of the game. Her point flustered the Eagles but sent the Tigers into halftime with newfound confidence.
The Tigers carried their speed into the second half, and AU struggled to match the pace of play. Freshman forward Ryan McCarthy added another goal for Princeton just two minutes into the second half with a goal off of a penalty corner. McCarthy continued to press the Eagles net, and she racked up three additional shots in the half.
Rothenhoefer closed the scoring gap with her goal late in the second half, but AU proved unable to maintain possession in a fast and furious running game.
The Eagles travel to Lewisburg, Pennsylvania next weekend to take on Bucknell University on Sept. 27, and Rothenhoefer says the team will be prepared to take on the conference opponent.
"I think we need to be able to go back to practice this week and really work on our principles…and discipline our team and our game plan for this next coming weekend," she said.


text:
Q: Computing Unemployment duration (Stata) I have a panel survey that tracks the same workers with the latest year being 2019. I am interested in creating variables that capture the duration of no work for each individual, by taking the difference in years between the variables "left_firstjob_yr" and "start_secondjob_yr", which I did generate with:
gen no_work_duration_1 = (start_secondjob_yr  - left_firstjob_yr)

  where "no_work_duration_1" refers to the duration of no work between the date an individual left their first job and the date where they started their second job.
However, one problem with my approach above is that it does not take into account workers who left their first job, but never worked again/left the workforce with missing "." values under the "start_secondjob_yr" column.
input int(start_firstjob_yr left_firstjob_yr start_secondjob_yr left_secondjob_yr)
2014 2015 2017 2019
2014    .    .    .
2011 2014    .    .
2003 2008 2011    .
2007 2009 2012 2014

Ideally, I am trying to have my dataset looking as follows:
clear
input int(start_firstjob_yr left_firstjob_yr) byte no_work_duration_1 int(start_secondjob_yr left_secondjob_yr) byte no_work_duration_2
2014 2015 2 2017 2019 .
2014    . .    .    . .
2011 2014 5    .    . .
2003 2008 3 2011    . .
2007 2009 3 2012 2014 2

A: It has been clarified that for workers with no second job, that the duration
of no_work_duration should be the difference between leaving their first job
and 2019 (see comments on original question).
I have taken the liberty of using some shorter variable names.
clear

input int(j1_start j1_end j2_start j2_end)
2014 2015 2017 2019
2014    .    .    .
2011 2014    .    .
2003 2008 2011    .
2007 2009 2012 2014
end

* No Work Duration ("nwd")
gen nwd = j2_start - j1_end

* In cases of no second job:
replace nwd = 2019 - j1_end if missing(j2_start)

list

     +---------------------------------------------+
     | j1_start   j1_end   j2_start   j2_end   nwd |
     |---------------------------------------------|
  1. |     2014     2015       2017     2019     2 |
  2. |     2014        .          .        .     . |
  3. |     2011     2014          .        .     5 |
  4. |     2003     2008       2011        .     3 |
  5. |     2007     2009       2012     2014     3 |
     +---------------------------------------------+