text:
namespace syncer_v2 {

static const syncer::ModelType kModelType = syncer::PREFERENCES;

// Tests the sync engine parts of ModelTypeSyncProxyImpl.
//
// The ModelTypeSyncProxyImpl contains a non-trivial amount of code dedicated
// to turning the sync engine on and off again.  That code is fairly well
// tested in the NonBlockingDataTypeController unit tests and it doesn't need
// to be re-tested here.
//
// These tests skip past initialization and focus on steady state sync engine
// behvior.  This is where we test how the type sync proxy responds to the
// model's requests to make changes to its data, the messages incoming from the
// sync server, and what happens when the two conflict.
//
// Inputs:
// - Initial state from permanent storage. (TODO)
// - Create, update or delete requests from the model.
// - Update responses and commit responses from the server.
//
// Outputs:
// - Writes to permanent storage. (TODO)
// - Callbacks into the model. (TODO)
// - Requests to the sync thread.  Tested with MockModelTypeSyncWorker.
class ModelTypeSyncProxyImplTest : public ::testing::Test {
 public:
  ModelTypeSyncProxyImplTest();
  ~ModelTypeSyncProxyImplTest() override;

  // Initialize with no local state.  The type sync proxy will be unable to
  // commit until it receives notification that initial sync has completed.
  void FirstTimeInitialize();

  // Initialize to a "ready-to-commit" state.
  void InitializeToReadyState();

  // Disconnect the ModelTypeSyncWorker from our ModelTypeSyncProxyImpl.
  void Disconnect();

  // Disable sync for this ModelTypeSyncProxyImpl.  Should cause sync state to
  // be discarded.
  void Disable();

  // Re-enable sync after Disconnect() or Disable().
  void ReEnable();

  // Local data modification.  Emulates signals from the model thread.
  void WriteItem(const std::string& tag, const std::string& value);
  void DeleteItem(const std::string& tag);

  // Emulates an "initial sync done" message from the
  // ModelTypeSyncWorker.
  void OnInitialSyncDone();

  // Emulate updates from the server.
  // This harness has some functionality to help emulate server behavior.
  // See the definitions of these methods for more information.
  void UpdateFromServer(int64 version_offset,
                        const std::string& tag,
                        const std::string& value);
  void TombstoneFromServer(int64 version_offset, const std::string& tag);

  // Emulate the receipt of pending updates from the server.
  // Pending updates are usually caused by a temporary decryption failure.
  void PendingUpdateFromServer(int64 version_offset,
                               const std::string& tag,
                               const std::string& value,
                               const std::string& key_name);

  // Returns true if the proxy has an pending update with specified tag.
  bool HasPendingUpdate(const std::string& tag) const;

  // Returns the pending update with the specified tag.
  UpdateResponseData GetPendingUpdate(const std::string& tag) const;

  // Returns the number of pending updates.
  size_t GetNumPendingUpdates() const;

  // Read emitted commit requests as batches.
  size_t GetNumCommitRequestLists();
  CommitRequestDataList GetNthCommitRequestList(size_t n);

  // Read emitted commit requests by tag, most recent only.
  bool HasCommitRequestForTag(const std::string& tag);
  CommitRequestData GetLatestCommitRequestForTag(const std::string& tag);

  // Sends the type sync proxy a successful commit response.
  void SuccessfulCommitResponse(const CommitRequestData& request_data);

  // Sends the type sync proxy an updated DataTypeState to let it know that
  // the desired encryption key has changed.
  void UpdateDesiredEncryptionKey(const std::string& key_name);

  // Sets the key_name that the mock ModelTypeSyncWorker will claim is in use
  // when receiving items.
  void SetServerEncryptionKey(const std::string& key_name);

 private:
  static std::string GenerateTagHash(const std::string& tag);
  static sync_pb::EntitySpecifics GenerateSpecifics(const std::string& tag,
                                                    const std::string& value);
  static sync_pb::EntitySpecifics GenerateEncryptedSpecifics(
      const std::string& tag,
      const std::string& value,
      const std::string& key_name);

  int64 GetServerVersion(const std::string& tag);
  void SetServerVersion(const std::string& tag, int64 version);

  MockModelTypeSyncWorker* mock_worker_;
  scoped_ptr<InjectableSyncContextProxy> injectable_sync_context_proxy_;
  scoped_ptr<ModelTypeSyncProxyImpl> type_sync_proxy_;

  DataTypeState data_type_state_;
};

ModelTypeSyncProxyImplTest::ModelTypeSyncProxyImplTest()
    : mock_worker_(new MockModelTypeSyncWorker()),
      injectable_sync_context_proxy_(
          new InjectableSyncContextProxy(mock_worker_)),
      type_sync_proxy_(new ModelTypeSyncProxyImpl(kModelType)) {
}

ModelTypeSyncProxyImplTest::~ModelTypeSyncProxyImplTest() {
}

void ModelTypeSyncProxyImplTest::FirstTimeInitialize() {
  type_sync_proxy_->Enable(injectable_sync_context_proxy_->Clone());
}

void ModelTypeSyncProxyImplTest::InitializeToReadyState() {
  // TODO(rlarocque): This should be updated to inject on-disk state.
  // At the time this code was written, there was no support for on-disk
  // state so this was the only way to inject a data_type_state into
  // the |type_sync_proxy_|.
  FirstTimeInitialize();
  OnInitialSyncDone();
}

void ModelTypeSyncProxyImplTest::Disconnect() {
  type_sync_proxy_->Disconnect();
  injectable_sync_context_proxy_.reset();
  mock_worker_ = NULL;
}

void ModelTypeSyncProxyImplTest::Disable() {
  type_sync_proxy_->Disable();
  injectable_sync_context_proxy_.reset();
  mock_worker_ = NULL;
}

void ModelTypeSyncProxyImplTest::ReEnable() {
  DCHECK(!type_sync_proxy_->IsConnected());

  // Prepare a new MockModelTypeSyncWorker instance, just as we would
  // if this happened in the real world.
  mock_worker_ = new MockModelTypeSyncWorker();
  injectable_sync_context_proxy_.reset(
      new InjectableSyncContextProxy(mock_worker_));

  // Re-enable sync with the new ModelTypeSyncWorker.
  type_sync_proxy_->Enable(injectable_sync_context_proxy_->Clone());
}

void ModelTypeSyncProxyImplTest::WriteItem(const std::string& tag,
                                           const std::string& value) {
  const std::string tag_hash = GenerateTagHash(tag);
  type_sync_proxy_->Put(tag, GenerateSpecifics(tag, value));
}

void ModelTypeSyncProxyImplTest::DeleteItem(const std::string& tag) {
  type_sync_proxy_->Delete(tag);
}

void ModelTypeSyncProxyImplTest::OnInitialSyncDone() {
  data_type_state_.initial_sync_done = true;
  UpdateResponseDataList empty_update_list;

  type_sync_proxy_->OnUpdateReceived(
      data_type_state_, empty_update_list, empty_update_list);
}

void ModelTypeSyncProxyImplTest::UpdateFromServer(int64 version_offset,
                                                  const std::string& tag,
                                                  const std::string& value) {
  const std::string tag_hash = GenerateTagHash(tag);
  UpdateResponseData data = mock_worker_->UpdateFromServer(
      version_offset, tag_hash, GenerateSpecifics(tag, value));

  UpdateResponseDataList list;
  list.push_back(data);
  type_sync_proxy_->OnUpdateReceived(data_type_state_, list,
                                     UpdateResponseDataList());
}

void ModelTypeSyncProxyImplTest::PendingUpdateFromServer(
    int64 version_offset,
    const std::string& tag,
    const std::string& value,
    const std::string& key_name) {
  const std::string tag_hash = GenerateTagHash(tag);
  UpdateResponseData data = mock_worker_->UpdateFromServer(
      version_offset, tag_hash,
      GenerateEncryptedSpecifics(tag, value, key_name));

  UpdateResponseDataList list;
  list.push_back(data);
  type_sync_proxy_->OnUpdateReceived(data_type_state_, UpdateResponseDataList(),
                                     list);
}

void ModelTypeSyncProxyImplTest::TombstoneFromServer(int64 version_offset,
                                                     const std::string& tag) {
  // Overwrite the existing server version if this is the new highest version.
  std::string tag_hash = GenerateTagHash(tag);

  UpdateResponseData data =
      mock_worker_->TombstoneFromServer(version_offset, tag_hash);

  UpdateResponseDataList list;
  list.push_back(data);
  type_sync_proxy_->OnUpdateReceived(data_type_state_, list,
                                     UpdateResponseDataList());
}

bool ModelTypeSyncProxyImplTest::HasPendingUpdate(
    const std::string& tag) const {
  const std::string client_tag_hash = GenerateTagHash(tag);
  const UpdateResponseDataList list = type_sync_proxy_->GetPendingUpdates();
  for (UpdateResponseDataList::const_iterator it = list.begin();
       it != list.end(); ++it) {
    if (it->client_tag_hash == client_tag_hash)
      return true;
  }
  return false;
}

UpdateResponseData ModelTypeSyncProxyImplTest::GetPendingUpdate(
    const std::string& tag) const {
  DCHECK(HasPendingUpdate(tag));
  const std::string client_tag_hash = GenerateTagHash(tag);
  const UpdateResponseDataList list = type_sync_proxy_->GetPendingUpdates();
  for (UpdateResponseDataList::const_iterator it = list.begin();
       it != list.end(); ++it) {
    if (it->client_tag_hash == client_tag_hash)
      return *it;
  }
  NOTREACHED();
  return UpdateResponseData();
}

size_t ModelTypeSyncProxyImplTest::GetNumPendingUpdates() const {
  return type_sync_proxy_->GetPendingUpdates().size();
}

void ModelTypeSyncProxyImplTest::SuccessfulCommitResponse(
    const CommitRequestData& request_data) {
  CommitResponseDataList list;
  list.push_back(mock_worker_->SuccessfulCommitResponse(request_data));
  type_sync_proxy_->OnCommitCompleted(data_type_state_, list);
}

void ModelTypeSyncProxyImplTest::UpdateDesiredEncryptionKey(
    const std::string& key_name) {
  data_type_state_.encryption_key_name = key_name;
  type_sync_proxy_->OnUpdateReceived(data_type_state_, UpdateResponseDataList(),
                                     UpdateResponseDataList());
}

void ModelTypeSyncProxyImplTest::SetServerEncryptionKey(
    const std::string& key_name) {
  mock_worker_->SetServerEncryptionKey(key_name);
}

std::string ModelTypeSyncProxyImplTest::GenerateTagHash(
    const std::string& tag) {
  return syncer::syncable::GenerateSyncableHash(kModelType, tag);
}

sync_pb::EntitySpecifics ModelTypeSyncProxyImplTest::GenerateSpecifics(
    const std::string& tag,
    const std::string& value) {
  sync_pb::EntitySpecifics specifics;
  specifics.mutable_preference()->set_name(tag);
  specifics.mutable_preference()->set_value(value);
  return specifics;
}

// These tests never decrypt anything, so we can get away with faking the
// encryption for now.
sync_pb::EntitySpecifics ModelTypeSyncProxyImplTest::GenerateEncryptedSpecifics(
    const std::string& tag,
    const std::string& value,
    const std::string& key_name) {
  sync_pb::EntitySpecifics specifics;
  syncer::AddDefaultFieldValue(kModelType, &specifics);
  specifics.mutable_encrypted()->set_key_name(key_name);
  specifics.mutable_encrypted()->set_blob("BLOB" + key_name);
  return specifics;
}

size_t ModelTypeSyncProxyImplTest::GetNumCommitRequestLists() {
  return mock_worker_->GetNumCommitRequestLists();
}

CommitRequestDataList ModelTypeSyncProxyImplTest::GetNthCommitRequestList(
    size_t n) {
  return mock_worker_->GetNthCommitRequestList(n);
}

bool ModelTypeSyncProxyImplTest::HasCommitRequestForTag(
    const std::string& tag) {
  const std::string tag_hash = GenerateTagHash(tag);
  return mock_worker_->HasCommitRequestForTagHash(tag_hash);
}

CommitRequestData ModelTypeSyncProxyImplTest::GetLatestCommitRequestForTag(
    const std::string& tag) {
  const std::string tag_hash = GenerateTagHash(tag);
  return mock_worker_->GetLatestCommitRequestForTagHash(tag_hash);
}

// Creates a new item locally.
// Thoroughly tests the data generated by a local item creation.
TEST_F(ModelTypeSyncProxyImplTest, CreateLocalItem) {
  InitializeToReadyState();
  EXPECT_EQ(0U, GetNumCommitRequestLists());

  WriteItem("tag1", "value1");

  // Verify the commit request this operation has triggered.
  EXPECT_EQ(1U, GetNumCommitRequestLists());
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  const CommitRequestData& tag1_data = GetLatestCommitRequestForTag("tag1");

  EXPECT_TRUE(tag1_data.id.empty());
  EXPECT_EQ(kUncommittedVersion, tag1_data.base_version);
  EXPECT_FALSE(tag1_data.ctime.is_null());
  EXPECT_FALSE(tag1_data.mtime.is_null());
  EXPECT_EQ("tag1", tag1_data.non_unique_name);
  EXPECT_FALSE(tag1_data.deleted);
  EXPECT_EQ("tag1", tag1_data.specifics.preference().name());
  EXPECT_EQ("value1", tag1_data.specifics.preference().value());
}

// Creates a new local item then modifies it.
// Thoroughly tests data generated by modification of server-unknown item.
TEST_F(ModelTypeSyncProxyImplTest, CreateAndModifyLocalItem) {
  InitializeToReadyState();
  EXPECT_EQ(0U, GetNumCommitRequestLists());

  WriteItem("tag1", "value1");
  EXPECT_EQ(1U, GetNumCommitRequestLists());
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  const CommitRequestData& tag1_v1_data = GetLatestCommitRequestForTag("tag1");

  WriteItem("tag1", "value2");
  EXPECT_EQ(2U, GetNumCommitRequestLists());

  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  const CommitRequestData& tag1_v2_data = GetLatestCommitRequestForTag("tag1");

  // Test some of the relations between old and new commit requests.
  EXPECT_EQ(tag1_v1_data.specifics.preference().value(), "value1");
  EXPECT_GT(tag1_v2_data.sequence_number, tag1_v1_data.sequence_number);

  // Perform a thorough examination of the update-generated request.
  EXPECT_TRUE(tag1_v2_data.id.empty());
  EXPECT_EQ(kUncommittedVersion, tag1_v2_data.base_version);
  EXPECT_FALSE(tag1_v2_data.ctime.is_null());
  EXPECT_FALSE(tag1_v2_data.mtime.is_null());
  EXPECT_EQ("tag1", tag1_v2_data.non_unique_name);
  EXPECT_FALSE(tag1_v2_data.deleted);
  EXPECT_EQ("tag1", tag1_v2_data.specifics.preference().name());
  EXPECT_EQ("value2", tag1_v2_data.specifics.preference().value());
}

// Deletes an item we've never seen before.
// Should have no effect and not crash.
TEST_F(ModelTypeSyncProxyImplTest, DeleteUnknown) {
  InitializeToReadyState();

  DeleteItem("tag1");
  EXPECT_EQ(0U, GetNumCommitRequestLists());
}

// Creates an item locally then deletes it.
//
// In this test, no commit responses are received, so the deleted item is
// server-unknown as far as the model thread is concerned.  That behavior
// is race-dependent; other tests are used to test other races.
TEST_F(ModelTypeSyncProxyImplTest, DeleteServerUnknown) {
  InitializeToReadyState();

  WriteItem("tag1", "value1");
  EXPECT_EQ(1U, GetNumCommitRequestLists());
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  const CommitRequestData& tag1_v1_data = GetLatestCommitRequestForTag("tag1");

  DeleteItem("tag1");
  EXPECT_EQ(2U, GetNumCommitRequestLists());
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  const CommitRequestData& tag1_v2_data = GetLatestCommitRequestForTag("tag1");

  EXPECT_GT(tag1_v2_data.sequence_number, tag1_v1_data.sequence_number);

  EXPECT_TRUE(tag1_v2_data.id.empty());
  EXPECT_EQ(kUncommittedVersion, tag1_v2_data.base_version);
  EXPECT_TRUE(tag1_v2_data.deleted);
}

// Creates an item locally then deletes it.
//
// The item is created locally then enqueued for commit.  The sync thread
// successfully commits it, but, before the commit response is picked up
// by the model thread, the item is deleted by the model thread.
TEST_F(ModelTypeSyncProxyImplTest, DeleteServerUnknown_RacyCommitResponse) {
  InitializeToReadyState();

  WriteItem("tag1", "value1");
  EXPECT_EQ(1U, GetNumCommitRequestLists());
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  const CommitRequestData& tag1_v1_data = GetLatestCommitRequestForTag("tag1");

  DeleteItem("tag1");
  EXPECT_EQ(2U, GetNumCommitRequestLists());
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));

  // This commit happened while the deletion was in progress, but the commit
  // response didn't arrive on our thread until after the delete was issued to
  // the sync thread.  It will update some metadata, but won't do much else.
  SuccessfulCommitResponse(tag1_v1_data);

  // TODO(rlarocque): Verify the state of the item is correct once we get
  // storage hooked up in these tests.  For example, verify the item is still
  // marked as deleted.
}

// Creates two different sync items.
// Verifies that the second has no effect on the first.
TEST_F(ModelTypeSyncProxyImplTest, TwoIndependentItems) {
  InitializeToReadyState();
  EXPECT_EQ(0U, GetNumCommitRequestLists());

  WriteItem("tag1", "value1");

  // There should be one commit request for this item only.
  ASSERT_EQ(1U, GetNumCommitRequestLists());
  EXPECT_EQ(1U, GetNthCommitRequestList(0).size());
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));

  WriteItem("tag2", "value2");

  // The second write should trigger another single-item commit request.
  ASSERT_EQ(2U, GetNumCommitRequestLists());
  EXPECT_EQ(1U, GetNthCommitRequestList(1).size());
  ASSERT_TRUE(HasCommitRequestForTag("tag2"));
}

// Starts the type sync proxy with no local state.
// Verify that it waits until initial sync is complete before requesting
// commits.
TEST_F(ModelTypeSyncProxyImplTest, NoCommitsUntilInitialSyncDone) {
  FirstTimeInitialize();

  WriteItem("tag1", "value1");
  EXPECT_EQ(0U, GetNumCommitRequestLists());

  OnInitialSyncDone();
  EXPECT_EQ(1U, GetNumCommitRequestLists());
  EXPECT_TRUE(HasCommitRequestForTag("tag1"));
}

// Test proper handling of disconnect and reconnect.
//
// Creates items in various states of commit and verifies they re-attempt to
// commit on reconnect.
TEST_F(ModelTypeSyncProxyImplTest, Disconnect) {
  InitializeToReadyState();

  // The first item is fully committed.
  WriteItem("tag1", "value1");
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  SuccessfulCommitResponse(GetLatestCommitRequestForTag("tag1"));

  // The second item has a commit request in progress.
  WriteItem("tag2", "value2");
  EXPECT_TRUE(HasCommitRequestForTag("tag2"));

  Disconnect();

  // The third item is added after disconnection.
  WriteItem("tag3", "value3");

  ReEnable();

  EXPECT_EQ(1U, GetNumCommitRequestLists());
  EXPECT_EQ(2U, GetNthCommitRequestList(0).size());

  // The first item was already in sync.
  EXPECT_FALSE(HasCommitRequestForTag("tag1"));

  // The second item's commit was interrupted and should be retried.
  EXPECT_TRUE(HasCommitRequestForTag("tag2"));

  // The third item's commit was not started until the reconnect.
  EXPECT_TRUE(HasCommitRequestForTag("tag3"));
}

// Test proper handling of disable and re-enable.
//
// Creates items in various states of commit and verifies they re-attempt to
// commit on re-enable.
TEST_F(ModelTypeSyncProxyImplTest, Disable) {
  InitializeToReadyState();

  // The first item is fully committed.
  WriteItem("tag1", "value1");
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  SuccessfulCommitResponse(GetLatestCommitRequestForTag("tag1"));

  // The second item has a commit request in progress.
  WriteItem("tag2", "value2");
  EXPECT_TRUE(HasCommitRequestForTag("tag2"));

  Disable();

  // The third item is added after disable.
  WriteItem("tag3", "value3");

  // Now we re-enable.
  ReEnable();

  // There should be nothing to commit right away, since we need to
  // re-initialize the client state first.
  EXPECT_EQ(0U, GetNumCommitRequestLists());

  // Once we're ready to commit, all three local items should consider
  // themselves uncommitted and pending for commit.
  OnInitialSyncDone();
  EXPECT_EQ(1U, GetNumCommitRequestLists());
  EXPECT_EQ(3U, GetNthCommitRequestList(0).size());
  EXPECT_TRUE(HasCommitRequestForTag("tag1"));
  EXPECT_TRUE(HasCommitRequestForTag("tag2"));
  EXPECT_TRUE(HasCommitRequestForTag("tag3"));
}

// Test receipt of pending updates.
TEST_F(ModelTypeSyncProxyImplTest, ReceivePendingUpdates) {
  InitializeToReadyState();

  EXPECT_FALSE(HasPendingUpdate("tag1"));
  EXPECT_EQ(0U, GetNumPendingUpdates());

  // Receive a pending update.
  PendingUpdateFromServer(5, "tag1", "value1", "key1");
  EXPECT_EQ(1U, GetNumPendingUpdates());
  ASSERT_TRUE(HasPendingUpdate("tag1"));
  UpdateResponseData data1 = GetPendingUpdate("tag1");
  EXPECT_EQ(5, data1.response_version);

  // Receive an updated version of a pending update.
  // It should overwrite the existing item.
  PendingUpdateFromServer(10, "tag1", "value15", "key1");
  EXPECT_EQ(1U, GetNumPendingUpdates());
  ASSERT_TRUE(HasPendingUpdate("tag1"));
  UpdateResponseData data2 = GetPendingUpdate("tag1");
  EXPECT_EQ(15, data2.response_version);

  // Receive a stale version of a pending update.
  // It should have no effect.
  PendingUpdateFromServer(-3, "tag1", "value12", "key1");
  EXPECT_EQ(1U, GetNumPendingUpdates());
  ASSERT_TRUE(HasPendingUpdate("tag1"));
  UpdateResponseData data3 = GetPendingUpdate("tag1");
  EXPECT_EQ(15, data3.response_version);
}

// Test that Disable clears pending update state.
TEST_F(ModelTypeSyncProxyImplTest, DisableWithPendingUpdates) {
  InitializeToReadyState();

  PendingUpdateFromServer(5, "tag1", "value1", "key1");
  EXPECT_EQ(1U, GetNumPendingUpdates());
  ASSERT_TRUE(HasPendingUpdate("tag1"));

  Disable();
  ReEnable();

  EXPECT_EQ(0U, GetNumPendingUpdates());
  EXPECT_FALSE(HasPendingUpdate("tag1"));
}

// Test that Disconnect does not clear pending update state.
TEST_F(ModelTypeSyncProxyImplTest, DisconnectWithPendingUpdates) {
  InitializeToReadyState();

  PendingUpdateFromServer(5, "tag1", "value1", "key1");
  EXPECT_EQ(1U, GetNumPendingUpdates());
  ASSERT_TRUE(HasPendingUpdate("tag1"));

  Disconnect();
  ReEnable();

  EXPECT_EQ(1U, GetNumPendingUpdates());
  EXPECT_TRUE(HasPendingUpdate("tag1"));
}

// Test re-encrypt everything when desired encryption key changes.
TEST_F(ModelTypeSyncProxyImplTest, ReEncryptCommitsWithNewKey) {
  InitializeToReadyState();

  // Commit an item.
  WriteItem("tag1", "value1");
  ASSERT_TRUE(HasCommitRequestForTag("tag1"));
  const CommitRequestData& tag1_v1_data = GetLatestCommitRequestForTag("tag1");
  SuccessfulCommitResponse(tag1_v1_data);

  // Create another item and don't wait for its commit response.
  WriteItem("tag2", "value2");

  ASSERT_EQ(2U, GetNumCommitRequestLists());

  // Receive notice that the account's desired encryption key has changed.
  UpdateDesiredEncryptionKey("k1");

  // That should trigger a new commit request.
  ASSERT_EQ(3U, GetNumCommitRequestLists());
  EXPECT_EQ(2U, GetNthCommitRequestList(2).size());

  const CommitRequestData& tag1_enc = GetLatestCommitRequestForTag("tag1");
  const CommitRequestData& tag2_enc = GetLatestCommitRequestForTag("tag2");

  SuccessfulCommitResponse(tag1_enc);
  SuccessfulCommitResponse(tag2_enc);

  // And that should be the end of it.
  ASSERT_EQ(3U, GetNumCommitRequestLists());
}

// Test receipt of updates with new and old keys.
TEST_F(ModelTypeSyncProxyImplTest, ReEncryptUpdatesWithNewKey) {
  InitializeToReadyState();

  // Receive an unencrpted update.
  UpdateFromServer(5, "no_enc", "value1");

  ASSERT_EQ(0U, GetNumCommitRequestLists());

  // Set desired encryption key to k2 to force updates to some items.
  UpdateDesiredEncryptionKey("k2");

  ASSERT_EQ(1U, GetNumCommitRequestLists());
  EXPECT_EQ(1U, GetNthCommitRequestList(0).size());
  EXPECT_TRUE(HasCommitRequestForTag("no_enc"));

  // Receive an update that was encrypted with key k1.
  SetServerEncryptionKey("k1");
  UpdateFromServer(10, "enc_k1", "value1");

  // Receipt of updates encrypted with old key also forces a re-encrypt commit.
  ASSERT_EQ(2U, GetNumCommitRequestLists());
  EXPECT_EQ(1U, GetNthCommitRequestList(1).size());
  EXPECT_TRUE(HasCommitRequestForTag("enc_k1"));

  // Receive an update that was encrypted with key k2.
  SetServerEncryptionKey("k2");
  UpdateFromServer(15, "enc_k2", "value1");

  // That was the correct key, so no re-encryption is required.
  EXPECT_EQ(2U, GetNumCommitRequestLists());
  EXPECT_FALSE(HasCommitRequestForTag("enc_k2"));
}

}  // namespace syncer


On December 16-17, 2015, CAIDA and the Massachusetts Institute of Technology (MIT) will host the (invitation-only) 6th interdisciplinary Workshop on Internet Economics (WIE) at the University of California San Diego in La Jolla, CA.
Both current events and trends, as well as our past discussions, shape the themes for this year's WIE. The FCC's latest open Internet order changes the landscape of regulation by using Title II as a basis for Internet regulation. We prefer not to use this workshop to debate what the court will do. Instead, we hope to discuss issues that will arise if the courts uphold the law. What are the implications of Title II regulation for some of the issues we have looked at in the past, or which are now emerging as important factors in shaping the future of the Internet?
There is increasing recognition that what matters to users is whether their experience in using the Internet is impaired. They are less concerned with technical measures such as packet loss rates or jitter, and more concerned with what these indicators imply for how they experience the apps they use.
What measurements and infrastructure would support increased understanding of QoE and its impairments? For example, does deployment of CGN vs. IPv6 have observable implications for QoE?
How does a focus on QoE affect concepts of regulation?
Does a shift in focus from QoS to QoE raise new questions about economics?
Does a focus on QoE lend support for the use of explicit mechanisms for differentiated services anywhere within the Internet?
Given the current character of the Internet and its popular applications, is there a compelling technical need for differentiated services anywhere within the system?
Is there a future in which bandwidth is everywhere abundant?
If not, what are the barriers to the offering of differentiated service? Does IPv6 offer or require any different approach to differentiated services?
How would such a service be defined?
What forms of differentiated services would be permissible under the terms of Title II?
Today, the FCC measures the achieved speed of Internet access services as a signal of whether the service is delivered as advertised.
How far beyond the access link can one expect contracted access link bandwidth?
What are the obligations on different actors in meeting these expectations?
How does this expectation change as providers offer very high speed access (e.g., GB/s to the home)? Will such high-speed access lead to an Internet of abundant bandwidth?
While direct interconnections between CDNs and access networks were originally positioned as just another form of peering, we consider it a new topological pattern.
What are the implications of the emergence of direct interconnection for QoE, and for the offering of differentiated services?
Does the emergence of direct interconnection disrupt other parts of the Internet ecosystem?
What are the options for regulation of direct interconnection, should there be such a need? What sort of failure might trigger such a need?
IP can be used to deliver more than Internet access to the consumer. The infrastructure of modern ISPs is being used to carry many sorts of data and deliver many sorts of service. Specialized services carry both a benefit and a risk: they increase the overall incentive of an ISP to upgrade facilities, but they might lead to a investment preference for those specialized servies, at the cost of the open Internet.
Does the use of Title II as a regulatory approach change the landscape of specialized services?
Are there new considerations with respect to these "non-Internet" services that warrant a fresh look at the issues?
When the FCC talks about measurements that ISPs have to report, how should these measurements occur?
What new measurements tests should be integrated into the FCC's Measure Broadband America program?
Variations on existing measurements are being proposed for the MBA program (e.g., measurement of streaming video, web downloads, packet loss). Do these enhanced measurement techniques raise any issues or concerns?
Registration for WIE 2015 is closed, and we cannot accept any more registrants. Please feel free to send any questions to wie-registration at caida dot org.
15:45 - 17:00 Session 4: What are the implications of previously discussed topics for the measurement community?
Discussion: How can the research community help?
The 6th WIE workshop will be held in the Weaver Center at the Institute of the Americas on the University of California San Diego (UC San Diego) campus.
Taxis: Yellow Cab of San Diego. A GPS pointed at "9855 International Ln, La Jolla, CA" should take you close enough to see the signs the Institute of Americas and the Weaver Center.
Meeting Room: The workshop will be held in the Weaver Center, Malamud Room at the Institute of the Americas on the University of California San Diego campus.
For directions to the Institute of the Americas, visit their website at http://www.iamericas.org/en/ under "About IOA - Location and Map".
Parking Permits: Parking permits are required to park on UC San Diego Campus. On arrival to campus on the morning of Day 1, check in with a CAIDA staff member waiting in front of the handicap spots on International Lane near the Institute of the Americas plaza. We will give you a parking permit for the day, and then point you to the Pangea Parking Structure for parking.
For transportation concerns, general questions and help, contact CAIDA at <admin-staff at caida.org> or (858) 534-5109.


> "the notion of 'version' is usually a publisher's choice to assign a memorable identifier to a product".
So it may depend on the type of product, the intentions of the publisher and the expectations of the consumer. There might not be much consensus even within a particular community.
I agree as well. My comment was actually more a hint to say that we should not define ourselves what a "version" is, but rather recognising that there are different practices.
Previous message: Karen Coyle: "Re: Organizing milestones"
Maybe in reply to: Simon Cox via GitHub: "Re: [dxwg] Version definition [RVSDF]"


text:
Lesley Nicol Photos
Lesley Nicol at the portrait session of "West Is West" during the 54th BFI London Film Festival.
Lesley Nicol at the premiere of "West Is West" during the 54th BFI London Film Festival.
Lesley Nicol at the premiere of "West Is West" 2010 Toronto International Film Festival.
Lesley Nicol at the Evening with Downton Abbey for Raising Money for Merlin The Medical Relief Charity in London.
Laura Carmichael and Lesley Nicol at the Evening with Downton Abbey for Raising Money for Merlin The Medical Relief Charity in London.
Jim Carter and Lesley Nicol at the Evening with Downton Abbey for Raising Money for Merlin The Medical Relief Charity in London.
Sophie Mcshera and Lesley Nicol at the Evening with Downton Abbey for Raising Money for Merlin The Medical Relief Charity in London.

redpajama_set_name: RedPajamaCommonCrawl


text:
Hands On With the LG VR for G3
LG's Google Cardboard spin-off lets new G3 phone owners enter virtual reality for the sweet price of $0.
By Sascha Segan
https://www.pcmag.com/news/hands-on-with-the-lg-vr-for-g3
BARCELONA—Gear VR? Feh. LG can do virtual realiity for free. LG showed us the "VR for G3" headset here at MWC, a plastic Google Cardboard spin-off that lets you zoom around 3D, immersive worlds using your LG G3 phone.
The VR for G3 can't be bought. It's a gift given away to new G3 owners, to help keep sales going as the phone passes its six-month mark. It won't be given away in the U.S., but spokesman Ken Hong said LG is happy to work with any carrier that wants to include it.
The device is made of three pieces of plastic. The G3 snaps into the outer shell, which has a hole for the G3's volume buttons and headphone jack. Then there's an insert, which splits the screen into two halves, and finally some lenses to go over your eyes. It worked fine with glasses. There's no strap; you have to hold it up to your head.
It's only for the G3 because of the same reason the Gear VR is only for the Note 4 - to have a decent VR experience, you need a quad HD screen. I took a zoom around a city and rode on a roller coaster. It doesn't have Oculus Rift levels of smoothness or cinematic realism; while it absolutely tracked my movements, everything was rendered in pretty low quality. We've clearly reached the limit of today's smartphone GPUs. It works with all Google Cardboard apps, which means it'll probably work with those new ViewMaster reels, too.
This isn't serious VR. After a few minutes, I felt like I was in a 90s movie about VR, because of the slight lag and the blocky rendering. (I want to note that the screen isn't low-res - it was the rendering of the graphics so as not to strain the GPU.) But it's helping to broaden and popularize VR.
Check Out the Best Photos From MWC 2015!
We're going to see more of these kinds of experiences, not just because VR is cool, but because Qualcomm and Nvidia are looking for reasons to sell more and more powerful mobile GPUs. Mobile high-end gaming hasn't gone entirely mainstream, but virtual vacations to vibrant vistas make high frame rates at super-sharp resolutions an absolute must. I wouldn't be surprised if this was included with all LG G4 phones, when that's announced later this year.
For more from LG at MWC, check out PCMag's hands on with the LG Urbane and Urbane LTE Smartwatches and LG's Midrange Smartphone Quartet.
Eugene Kim contributed to this report.
PCIe 6.0 Specs Finalized to Double Bandwidth for Up to 256GB/s via x16 Lanes
Leak Suggests All-Black LTE Microsoft Surface Go 3 Coming Soon
By Mark Knapp
21 Terrific Tech Gifts Under $100
Tech on a Budget: 18 Gift Ideas Under $25
About Sascha Segan
PCMag's lead mobile analyst, Sascha Segan, has reviewed more than 1,100 smartphones and other gadgets since 2004. He's tested every generation of the iPhone and covered Android phones since the very first one. His reviews also include ebook readers, hotspots, mobile networks, and tablets.
Sascha runs PCMag's Fastest Mobile Networks drive-test projects throughout the US and Canada and writes a weekly Race to 5G newsletter, focusing on developments in the mobile and 5G worlds.
He is also a multiple-award-winning travel writer. Sascha's first computer was an Atari 800, and his first cell phone was a Qualcomm Thin Phone. He lives in Queens, NY.
Read the latest from Sascha Segan
AT&T, Dish Win Big in Latest 5G Auction
OnePlus 10 Pro Launches, But Only in China
My Reporting Notes From the Original iPhone Launch 15 Years Ago
OnePlus Details Camera Features on 10 Pro, Shows Samples
Verizon's 5G Expansion Rolls Back One Key Feature
More from Sascha Segan


text:
package com.frankwu.nmea;

/**
 * Created by wuf2 on 3/27/2015.
 */
public interface PreFilter {
    public boolean encode(AbstractNmeaObject object);
}

redpajama_set_name: RedPajamaGithub


We are enthusiastically looking for two Communications Specialists to further the goals of Best Starts for Kids.
We are recruiting two Communications Specialist III positions for the Department of Community and Human Services (DCHS) and Public Health – Seattle & King County communications teams, with one position serving in each department. We are looking for strong writers, community-minded creative thinkers and strategic communication planners.
The candidates selected for these two positions will play strong roles in launching Best Starts for Kids, ensuring community knowledge of and access to these services, and sharing progress and outcomes with the community.
Please visit the King County jobs site for more information and search for "best starts" to bring up the two job descriptions.


text:
HDE 268835, eller R66, är en stjärna som identifierats med NASA:s Spitzerteleskop i Taffelbergets stjärnbild, belägen i Stora magellanska molnet. Den är en av två stjärnor (den andra är HD 37974, eller R126) som observerats i granngalaxen med jättelika molnbälten som kan utgöra planeter som bildas.

HDE 268835 är en blå-vit hyperjätte som misstänkts vara variabel av typen lysande blå variabel.

Designationen
HDE 268835 har en HD-designation med ändelsen E för Extended, eftersom den tillhör den utökade HD-katalogen. Den benämns ändå vanligtvis HD 268835.

Referenser

Stjärnbilden Taffelberget
Stora magellanska molnet
Blå-vita hyperjättar
Lysande blå variabler
HD-objekt

redpajama_set_name: RedPajamaWikipedia


This Fashion Headband features: high quality flexible metal headband with white and purple Christmas hat with flower embellished. Perfect match with your Christmas costume. Suitable for Christmas Party, daily casual, party, fashion show and more (Only the head band).
Attention: this item will take 5-7 days to produce after the order is placed. Thanks for understanding!


text:
New Pebble products and software coming later this year, says CEO
Elyse Betters · 2 February 2015
Best upcoming smartwatches: Future wristwear to look forward to
Pebble hasn't decided to give up just because Apple Watch is launching in two months and Google plans to forge ahead with Android Wear. On the contrary, it's suiting up for battle.
Eric Migicovsky, CEO and founder of Pebble, told The Verge that his company will launch new products and new software in 2015. Although Migicovsky didn't get into specifics about what type of products, we can presume he meant new Pebble smartwatches. Migicovsky did however divulge information about Pebble's new software.
It won't have a focus on apps, breaking away from the standard we currently see not only on smartphones but also competing watch platforms from both Google and Apple: "We've found a new framework to use as an interaction model on the watch. It doesn't look like what we have today, and it doesn't look like what's on your smartphone".
Apps will supposedly continue to exist on Pebble, even though they won't be a main focus of the platform. It is also likely the company's new software will feature some webOS TV-inspired design cues, as Pebble nabbed some of LG's webOS TV design team last year. But for the most part, Pebble is keeping things a secret until it's ready to unveil things.
Migicovsky would only reveal that Pebble has shipped 1m Pebbles as of 31 December, doubling what it reported in March 2014, and third-party developer activity has also doubled since September, with 25,000 developers contributing worldwide.
There are even more than 6,000 Pebble apps and watchfaces now available.
READ: Best smartwatches 2015: The best smart watches available today
Sections Gadgets


Coach Roach is much more than just a Quarterback trainer. He genuinely cares about the young athletes he works with, and wants them to become the best possible quarterback they can be. He knows how to keep our son motivated to want to become better and succeed. His program has everything to develop a great quarterback. Not only does he have a lot of proven and new workouts for physical improvement, but he also does a lot to help develop their mental part of the game….


Check out this years Turkey Cup Shirts – These are the real deal – Black Nike Golf Shirts made of the wicker material. Your $50 registration fee gets you this shirt and a goodie bag filed with $120 worth of items. Plus you get to golf in The Turkey Cup!


text:
We're small in number but mighty with innovation, creativity, and diversity.
Built on the foundation that we are where we belong when we can create the potential to change the world through our passions and vision. It's not enough to be just successful as a company but also successful in our work together—and personal lives.
The journey is better when you're working with people who inspire you—and vice versa.
Nishaant Sangaavi
In his quest to utilize the 24-hours to the fullest, Nishaant has been spending many a sleepless nights since founding energyX. Fascinated by maximizing his own, and others' potential, here are the words he lives by: "...The definition of hell; on your last day on earth, the person you could have become will meet the person you became." — Anonymous
He is a proud father of 3 kids who enjoys experimenting with new workout programs in his home gym, and traveling the world.
Alex Corneglio
Alex has made his career in strategic operations and engineering for energy companies in the United States and Europe.
Alex holds a Bachelor of Science in Engineering from the University of Michigan and an M.B.A. from the Rotterdam School of Management, Erasmus University.
Bruce is passionate about all things tech and marketing, with experience in a variety of industries including enterprise SaaS and fintech.
He loves picking up new skills for his tech stack on Udemy and learning about the newest campaign strategies, as well as ways to increase customer engagement. Outside of work, you can usually find him cooking at dinner parties or taking photos with Susur Lee.
Jasmine Ning
Jasmine loves the process of turning innovative ideas into apps that are not only fully functional, but also visually stunning.
As a fairly new developer she is extremely enthusiastic about learning the latest technologies while also improving her current skillset. When she's not coding she is thinking about cheesecake—by far the most delicious dessert ever.
Kelvin Firmino
Kelvin is a developer with 4+ years of experience in web development. He has worked with a diversity of segments, among them creating and maintaining a Government's Public Hospital System and, designing and updating an API for a Sports company. He also worked in a prepaid segment company creating and updating its intern websites and RESTful applications. Kelvin is a big believer in personal growth; he invests a lot time into learn new technologies and tools to make his work even better and quicker.
On his free time, Kelvin enjoys watching movies, series, anime and also plays a variety of video games and board games when he can.
Meysam Sahafzadeh
Meysam is a data scientist with background in engineering. He helps companies understand their data, solve their business problems and make data-driven features that fit their data model. He believes that not all ready-to-cook data solutions are the best answer. Business problems need explore, research, discover and build accordingly.
Outside of work, he turns down everything and turns up music.
Annie Ngu
Annie is a UI/UX Designer who comes from a photography and graphic design background—and much like how Daredevil's uses his super sonar hearing to see everything, she can see the world in pixels.
If she's not working, you can join her on her binge-watching marathons, or drinking kombucha before staying active at the gym, a volleyball court, or on a track. Right now, she's learning Spanish and Korean to expand her language barriers.
Aaron Savatti
Aaron is passionate about all aspects of sustainability and energy efficiency, with rounded experience in Energy Management, HVAC, Electrical, & Facility Management.
His former experience as a canoe tripping guide across Ontario has influenced everything he does as it relates to environmental issues. Energy management is the most actionable form of environmental activism as it has a direct effect on sustainable development, and generation conservation. When Aarons not working on energy, you can usually find him in the stern of his canoe on an open lake.
John Tideman
Sixuan Wu
Sixuan is a Junior Developer with passions in Life Science and Technology. She was a Biomedical Science student at University of Waterloo before drifting fast and furiously into programming. She has never been more impatient to learn.
Outside of work, she enjoys watching movies and trying out new food.
Angelica Pereira
Since Angelica was a child, Captain Planet inspired her to build her career working in the the Environmental & Energy Conservation industry for 7+ years in India, UK and Canada. She did her Bachelor of Science in Geology from St. Xavier's College in Mumbai and her Master of Arts in Environmental Management and Consultancy from Lancaster University in the UK.
She also enjoys travelling to a new destination every year, collecting sneakers, and hosting dinners for family and friends.
Nikola Kuzmic
Nikola has 4+ years of experience with applying data analytics in assessing the sustainability of renewable technologies, identifying energy savings measures for homeowners, and enabling research facilities to reduce their operational costs significantly. He is very passionate about implementing AI solutions and creating an incredible customer service experience. Aspects of his role as a data scientist that he finds the most rewarding are discovering trends in data and providing valuable insights to clients that can maximize their business results.
Outside of work he enjoys cooking, well-crafted fiction, and travelling.
Abdul Haseeb
Abdul is a developer with 4+ years of experience in web development. He has worked in a few different tech startup ecosystems, including ad-tech, marketing and education. Abdul enjoys building robust, well-tested software that can deliver long lasting value to customers.
On his free time, Abdul enjoys travelling, hiking and trying out new foods.
Deepesh Kumar
Deepesh has over 4 years of experience in developing B2B SAAS growth engines. His expertise lies in using engineering, data, and marketing to discover traction channels for tech companies. Deepesh also completed his Master's at the University of Alberta and holds a Bachelor's from Indian Institute of Technology, Kharagpur.
In his spare time, Deepesh loves reading and playing chess.
Shilan Amin
Shilan is passionate about the environment and strategies to help reduce our ecological footprint. She has over ten years of sales consulting and revenue management experience with Fortune 500 brands; helping to educate, influence change and drive greater sales and development with a focus on customer experience and optimization.
Jesse Hitchcock
Leonardo Zimmer
Stanley Ma
We're always looking for amazing human beings to join the team. Check our Careers to find your one true calling.


text:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_pit"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="org.usfirst.frc.team4911.scouting.PitActivity">

    <TextView
        android:id="@+id/PitHeader"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:gravity="start"
        android:text="@string/header_pit"
        android:textSize="25sp" />

    <org.usfirst.frc.team4911.scouting.ui.ExampleCustomView
        android:id="@+id/example_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:defaultValue = "5"/>
</LinearLayout>


It would be cool to have a menu that had curved menu links without using image replacement! I have a project in which the design has a curved header element I'd love to create it with just text. So I can't be the only person looking to create an arched menu.


I first got involved with the Dharma when my mum went to the Beach Chalet to hear one of the Chenrezig nuns give a talk, so my mum went to visit them. Within a year she became a nun. We moved here at Chenrezig Institute, and for five years now I've been living in the nunnery.
How did you feel when your mom became a nun?
I was so happy for her, and I like it here so much. I used to live in Noosa, which was more for tourists, and now I live up in the mountains.
So you like living in a community?
I like the people heaps. It's sort of interesting to see people coming and going all the time, except for the long-term residents like Colin.
At what point did you become interested in the study of Dharma?
When my mum first came I was very interested and would look through all her books. I tried to learn all the prayers because I expected all the kids up here would know them. I've been quite intrigued by Buddhism since I was young, and now that I am older and have learned more I see it helps in your day-to-day life, as well as in the long run, for your next rebirth so that you don't go to the lower realms.
How does that fear of the lower realms motivate you to practice?
Which part of Buddhism appealed to you most?
I think the compassion and the theory of karma. I like the advice to be compassionate to all beings and not to harm animals.
Do you think you had some of these qualities already?
Yes, I believed in that sort of thing anyhow, so it was reinforcing that it is the right way to be. It was supporting what was already there.
What kinds of problems do teenagers face?
It makes me sad to see people I know get so upset when they've been drinking too much. They can just spin out, and this is hard to experience. I try to help them.
Dharma gives me tools to be able to help them, but not in Buddhist language, like, "This is Dharma, blah blah blah." I think what really helps is when I am watching what I am doing.
Being a good example is different from, for example, going to church on Sundays and not thinking about anything spiritual the rest of the days. That's what I like about Buddhism – it's more like a philosophy than a religion. It's more what you do all the time, including when you sleep. It's always there. It is there in small actions, like when you walk you become mindful of not stepping on ants, and it works for big things like controlling your anger.
Which teachers have you met who have made a big impact in your life?
Geshe Tashi Tsering, the resident teacher here, is amazing. He is absolutely beautiful. And I took refuge with Lama Zopa in 1994, during the 20th anniversary of Chenrezig. I've met heaps of geshes.
When I attended the Kalachakra initiation in Sydney in 1996, I was staying with Geshe Tashi Tsering and drove with him. He was always being invited out for lunch or dinner by other geshes, so I was able to sit with all of them. It was amazing.
Would you be more interested to meet the most famous movie star or musician, or His Holiness the Dalai Lama?
What does refuge mean to you?
It means I believe in the Buddha's teachings and agree to live by the vows I have taken for my life. I see that they fit right in my life. It also means that I see the person with whom I took refuge as my guru, and they will be for the rest of my life and next lives.
Is there any advice or teachings you have received that left a big impression?
One I can always remember is a teaching Geshe Tashi Tsering gave on the death procedure. I can practically remember every word about the hallucinations, like the smoky vision, the fireflies – everything you experience when you die.
Why do you think it made such an impression?
I am intrigued by the whole process of how we pass on and enter into another body, and when we go through the bardo state – all those things we don't remember unless we are extremely realized geshes!
I just hope I have created enough merit to go to a higher rebirth. I don't think I'm that scared of it. I would most like to be a human being, though.
What are some of your goals for this life? And what about working?
To control my anger, definitely. Also, I've got to have enough money and that sort of thing, but everything should be in moderation, spiritual and conventional. I have to get a good education as well.
Do you hope to get married and have a family?
Well, if I meet the right person I would like to, but it's more about what is happening right now – not yesterday or tomorrow.
If you could present one aspect of the Dharma to a group who didn't have it, what would it be?
Compassion for all living beings. I think it is the basis, because if you are compassionate to all your friends, enemies, strangers and animals, you would be a much happier person.


New from Arora Designs - Hidden Treasures Secrets. Unique designs that are hand cast in pewter, then painted with vibrant enamels and finally embellished with Austrian crystals. All Hidden Treasures Secrets trinket boxes contain a matching pendant necklace.
Hidden Treasures are the new and exciting award winning range of ornate enamel trinket boxes from Arora Design. These highly collectable items won Gift of the Year in 2003. Hand cast in pewter, twenty four carat gold or silver plated then enameled with unique colours to produce a gift of distinction. As the name suggests all Hidden Treasures have a miniature cameo on a gold or silver chain secreted inside. Presented in a silk lined gift box these make an ideal gift.


text:
Telecoms Vendors & OEMs
A phone-less Nokia targets the telco cloud and connected car
(c) Nokia Growth Partners
Having completed the sale of its mobile devices business to Microsoft, Nokia is giving more details about life after Lumia. The first two areas that it is pushing are the telcos cloud and the connected car. Although both aren't new to Nokia, they have certainly become far more important to the firm's future success.
Nokia will expand its long-term partnership with Juniper Networks to develop what it calls a "telco cloud for mobile broadband". It says this new 'core-on-cloud' solution will help operators accelerate service creation through a fully automated telco cloud.
The carrier-grade service will provide operators with an open ecosystem telco cloud solution, based on OpenStack, offering automated application deployment, software defined application connectivity and network management. The solution will also enable application and networking elastic scalability with a clear migration path for operators to leverage their existing assets built on current core architectures.
"Nokia is a pioneer in telco cloud mobile networking solutions, establishing an unmatched track record in telco cloud innovation," said Rajeev Suri, president and CEO of Nokia. "By collaborating with Juniper, we are taking the next step together, enabling operators to take full advantage of the cloud with a clear path towards the robustness and scale of interconnected datacenters."
The latest collaboration combines Nokia's Liquid Core solution, including NFV and telco cloud management and orchestration, with Juniper Networks MetaFabric data centre architecture, including Contrail – Juniper's network virtualization and cloud network automation solution based on SDN. The combined Nokia-Juniper solution is in line with the European Telecommunications Standards Institute Network Functions Virtualization (ETSI NFV) end-to-end reference architecture.
"Rapid adoption of LTE and the 4G mobile core opens up a wealth of opportunities for new service creation for our customers," said Shaygan Kheradpir, CEO of Juniper Networks. "We believe operators need a High-IQ mobile edge that connects their infrastructure to the telco cloud and leverages network and service virtualization throughout."
In addition to the technology components, Nokia is also providing its end-to-end services to help operators implement their own telco clouds and migrate existing telco services to cloud-based networks. This broad portfolio of services, some of which will tap into Juniper's expertise, will enable operators to reduce time to value and address the complete lifecycle from assessment, design, implementation and operational support.
"In the same way that cloud computing transformed the IT industry, telco cloud dynamics are radically changing how mobile operators plan to deploy, operate and manage their networks through virtualization and software defined networking," said Peter Jarich, vice president, Current Analysis. "Nokia and Juniper's expanded partnership fits well into this evolution, strengthening the telco cloud ecosystem in the process."
Connected Cars
Nokia has also launched its $100 million Connected Car Fund managed by Nokia Growth Partners (NGP). The VC fund will invest in promising auto tech and local services companies in collaboration with its location services business, Here, to grow the ecosystem around Here's mapping and location products and services.
"For the last few years there has been a surge in innovation that has brought technological advances leading to safer, cleaner, increasingly connected, intelligent and more affordable vehicles," said Paul Asel, Partner at Nokia Growth Partners. "Vehicles are becoming a new platform for technology adoption very similar to phones or tablets. We are excited to deepen our collaboration with Here through the Connected Car fund to invest in companies that are driving the future of the auto ecosystem, local services and personal mobility."
The Connected Car fund extends NGP's global investment activities in the US, India, China and Europe. It brings Nokia's commitments managed by NGP to $700 million.
"We believe that connected cars equipped with precise location awareness and sensor data can become powerful devices capable of helping drivers make sense of the world around them," said Michael Halbherr, CEO of Here. "NGP's Connected Car fund underscores that connectivity is rapidly reshaping what is possible in the car environment."
Cloud,
NFV,
SDN,
Chip foundry giant TSMC to ramp up its investments in 2022
Digital Platforms & Services Analysis
Comviva to offer next-generation BlueMarble Solution on IBM Cloud for Telecommunications
Sandvine's Application and Network Intelligence Helps Fuel SK Telecom's 5G Private Enterprise Network Service


text:
Rotting Fox Corpses Discovered On Yorkshire Grouse Shooting Estate
According to welfare organization The League Against Cruel Sports, the animals had been caught in snares which it described as ' illegal and self-locking'
Maria Chiorando
Dead animals left to rot in a 'stink pit' (Photo: LACS)
Rotting fox corpses have been discovered in what has been described as 'stink pits' on a Yorkshire grouse shooting estate.
According to animal welfare charity the League Against Cruel Sports (LACS), the foxes were caught in illegal self-locking snares on Bingley Moor Estate. LACS says in addition, dozens of fenn traps - which it describes as 'jaw-like' - were set to destroy native stoats and weasels.
"Grouse shooting estates purge native wildlife to increase red grouse populations for the guns," Nick Weston, Head of Campaigns at the League Against Cruel Sports, said in a statement sent to Plant Based News.
"Thousands of animals - including foxes, stoats, weasels, corvids and often birds of prey - are killed by trap, snare and bullet for no other reason than they compete with game bird shooting interests.
"These animals are a cornerstone of Britain's natural heritage. To think they are wiped out from the moorlands in barbaric ways, just so other animals can be shot for entertainment, is truly sickening."
One of the snares on the estate (Photo: LACS)
'Protecting endangered birds'
Edward Bromet, of Bingley Moor Partnership, which runs Bingley Moor Estate, told the Keithley News that the estate's actions were legal and an attempt to 'maintain biodiversity'.
"Foxes are a predator and we get a lot of foxes in the lower dales coming out of the town centres and they do need to be controlled," he said. "It's absolutely legal to set snares and traps for stoats and weasels and they are similar to foxes in that they are a predator and they will kill vulnerable birds and attack nests.
"Essentially what we are doing is maintaining biodiversity on moorland and Bingley is particularly under pressure being so close to town centers."
West Yorkshire Police has launched a wildlife crime investigation.
Maria is the Editor of Plant Based News. A former magazine editor, newspaper reporter, and features writer, her work has been published by The Guardian, The Huffington Post, and various regional newspapers. She was previously the editor of Vegan Life magazine and Vegan Trade Journal. She has interviewed a huge range of people, from Prime Ministers to authors, activists, pop stars and actors, and enjoys the varied range of topics writing for PBN allows her to tackle. You can follow her on Twitter @MariaChiorando and Instagram @mariachiorando.


Being religiously conservative doesn't unavoidably suggest being politically conservative. there's a major, rising phase of conservatively theological Christians who trust politically liberal opposite numbers whereas staying real to their very own religion concerning a wide selection of political concerns in modern America.It is time for a brand new examine religion and politics in the United States. it's time for a brand new Evangelical Manifesto.Written by way of authors, theologians, and teachers affiliated with the the hot Evangelical Partnership for the typical reliable (NEP), the purpose of a brand new Evangelical Manifesto is to introduce the paintings and imaginative and prescient of the hot Evangelical Partnership and different leaders amassed who imagine in a different way approximately how conservative religion pertains to politics. the hot Evangelical Partnership for the typical reliable (NEP) exists to improve human wellbeing and fitness as an expression of our love for Jesus Christ, that's itself a thankful reaction to his love for us and for an exceptional yet pain international. a brand new Evangelical Manifesto discusses many "hot button" matters comparable to human trafficking, healthcare, race, abortion, nuclear guns, battle, international poverty, Christianity, the church, and theology.
At the present time greater than 2 hundred million Christians world wide undergo imprisonment, abuse or even demise as a result of their religion. but such a lot americans by no means pay attention their tales. of their Blood Cries Out, Paul Marshall unearths the truth of this present-day persecution, revealing what we will do to aid those brothers and sisters in Christ.
In lots of methods, the tale of the Pentecostal circulate in Europe reads just like the biblical e-book of Acts. simply because the early disciples have been led via the Holy Spirit to hold the message of the Gospel from Jerusalem to the ends of the earth, so additionally the 20th-century Pentecostals have been forced by means of the Spirit to depart their homelands and proportion the entire Gospel with all of Europe.
This choice of essays by way of colleagues, former scholars, and pals illustrates whatever of the breadth and intensity of matters that experience engaged the lifestyles and considered the Reverend general practitioner John Westerdale Bowker. His clerical and educational appointments in Cambridge, Lancaster, London, and North the USA extra illustrate the integrative nature of his religious and highbrow method of being and performing.
British Columbia is on the vanguard of a secularizing stream within the English-speaking global. approximately part its citizens declare no spiritual association, and the province has the top price of unbelief or non secular indifference in Canada. Infidels and the rattling church buildings explores the historic roots of this phenomenon.


Emetophobia is categorised as one of the fairly common specific phobias diagnosed within the spectrum of anxiety disorders. In fact, it has been coined the fifth most common phobia in the world.
Individuals experiencing emetophobia, hold an intense fear of vomiting –either in themselves or witnessing it through others, or both. Some may experience the same levels of distress when they witness others vomiting as if it is happening to themselves, or assume that they will soon be sick too. The disorder can manifest in both males and females of all ages, but is most commonly identified in women, and is reported more severely in adolescents than adults.
Individuals with the disorder constantly monitor how their body is feeling, looking out for any possible signs of illness emerging (particularly in their stomach and throat), for fear that any signs could initiate or indicate anxiety cause vomiting. Sometimes individuals with emetophobia can recognise that their fears of vomiting are not actually grounded in scientific evidence, and that the action of vomiting itself will not result in the unrealistic outcomes they have catastrophized. This is up until the wave of panic takes over their rational thoughts and behaviours – taking on similar characteristics to those of panic disorders; the difference being emetophobics focus on sensations in their stomachs and throats (instead of sensations in their heart, chest, or head).
In addition to situations that could potentially trigger illness and thereby induce vomiting or chocking related behaviours, emetophobics typically also fear their own bodily responses, as they associate feelings of panic and high distress to potentially bring about nausea. This can fuel a vicious cycle of unremitting panic attacks over prolonged periods, as they are unable to escape their own body stimulating the distress in the first place. Many individuals with the disorder will compare the outcome of vomiting to be as terrible as dying – illustrating just how distressing their fear of vomiting is, and what precautionary measures they will take to prevent it.
In some cases, emetophobics will exhibit the symptoms of other anxiety disorders, such as Obsessive Compulsive Disorder – OCD (intrusive obsessive thoughts that lead to compulsive actions to alleviate their distress); agoraphobia (fear and avoidance of a situation that could trigger their anxiety); restricting their food intake to resemble the characteristics of eating disorders (or engaging in other behaviours associated with those of eating disorders, particularly the preparation of food), and Post- Traumatic Stress Disorder – PTSD (experiencing extreme distress when something triggers a reminder of a past traumatic event).
Many individuals with the disorder may feel a sense of shame about their fears, and are commonly too embarrassed to admit their problems to others. Often they mask their fear of vomiting in other phobias or dislikes that they feel will be more "accepted" by others – such as: fear of heights, fear of flying, fear of the commitment to motherhood (for fear of morning sickness), intolerance or dislike of certain foods, or particular situations and places they associate a high risk to (such as situations involving other people preparing their food for fear of contamination; fear of food being past its used by date; fear of being in places that would not have the facilities for them to escape to vomit if they needed to; or places that would not meet their standards of hygiene (like movie theatres, public transport, large public celebrations or parties).
What are the common fears of emetophobics?
There are a number of underlying issues that could trigger emetophobia – all of which will vary across individuals. Many emetophobics report having experienced a past traumatic situation associated with either themselves vomiting or witnessing someone vomitting (usually during childhood) – although the common causes for others, could be the result from a number of unrelated traumatic life events, anxious family environments, or a history of separation anxiety.
Like other anxiety disorders, the main treatment for overcoming emetophobia involves Cognitive Behavioural Therapy (CBT), with the guidance and ongoing support from an experienced psychologist in the area. The therapist will work with the individual to firstly identify their automatic (and irrational) negative thought patterns about vomiting. The next step involves restructuring: teaching them new techniques to replace their existing thoughts with cognitions that are instead, grounded in facts and evidence. An important consideration is that this will involve GRADUAL exposure therapy, NOT literal exposure to vomiting induced within the individual themselves.
For the most effective desensitization to occur during exposure therapy, it is recommended that the distress of the emetophobic does not exceed a 5 point threshold (where 1= no fear and 10 = highest level of distress) on a Subjective Units of Distress (SUB) scale. As these exercises only involve exposure to hypothetical stimuli, it is important for the emetophobic to imagine themselves in the situations (thereby raising their anxiety) and then work through various relaxation techniques to lower it – eventually replacing their old reactions, with new positive and rational cognitions and behaviours.
Don't expect too much too soon – overcoming emetophobia is a gradual process, requiring large amounts of trust, commitment and patience! It is essential the individual feels that they can trust their therapist, and eventually learn to trust themselves and others.
Engage in regular exercise – It will help to elevate your mood and reduce and manage your anxiety.
Try a range of relaxation techniques, including breathing exercises, meditation, or yoga. Your therapist will be able to teach you some deep abdominal breathing methods that can be practised at any time and place. Music may also be a helpful form of relaxation therapy, it has been shown to assist stress relief by occupying and distracting your brain from unhelpful thoughts.
The act of vomiting is generally considered unpleasant by most people's standards, and many will go to great lengths to prevent it from happening. Either witnessing it in others, or experiencing it themselves, the act of vomiting is generally considered unpleasant by most peoples' standards – and many will go to great lengths to prevent it.
The anxiety disorder, emetophobia is characterised by an extreme, debilitating fear of vomiting –so much so, that it interferes with the individual's daily life activities and functioning, including the completion of everyday tasks, work commitments, exposure to public places, and partaking in social events.
The length of treatment will vary for each individual, but it is recommended therapy sessions are spread over roughly 16 weeks. Sessions can be done either face to face, or via the internet through online therapy (e-therapy). Online therapy would benefit those who feel it would be easier or "safer" for them to attend sessions in the "comfort" of their own home.


text:
'Chelsea to sign Pato? My time machine works!' – Fans laugh at Roman Abramovich's move for Brazilian
21st January 2016, 11:54 am
Updated: 26th January 2016, 5:09 pm
Chelsea have reached a verbal agreement with former AC Milan star Alexandre Pato that will see him join the Blues, according to reports in Brazil.
Pato left the Italian club in 2012 to return to his native country and signed with Corinthians.
However, Corinthians are so desperate for the Brazilan to leave the club, he spent last season on loan at rivals Sao Paulo, where he has scored 19 goals in 59 games.
The forward's representatives have been eager to secure him a move to a Premier League club for the past few transfer windows and it appears they have finally done it with Chelsea.
However, the 25-year-old has faded from the football map since exploding onto the scene when he signed for Milan in 2007.
As a result, the Blues' move for Pato has been greeted with disbelief on social media.
See below for the best reactions!
Roman Abramovich


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>AcknowledgmentSource.Listener (River-Internet vtrunk API Documentation (internals))</title>
<meta name="date" content="2016-03-28">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

JavaScript is disabled on your browser.

Skip navigation links

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

Prev Class

Next Class

Frames

No Frames

All Classes

Summary:

Nested |

Field |

Constr |

Method

Detail:

Field |

Constr |

Method

net.jini.io.context

Interface AcknowledgmentSource.Listener

All Known Implementing Classes:

BasicObjectEndpoint.AckListener

Enclosing interface:

AcknowledgmentSource

public static interface AcknowledgmentSource.Listener

A callback object for registering with an AcknowledgmentSource server context element to handle the
 receipt of an acknowledgment that the remote call's result data
 has been processed by the client.

Method Summary

All Methods Instance Methods Abstract Methods

Modifier and Type
Method and Description

void
acknowledgmentReceived(boolean received)

Handles either receipt of an acknowledgment that the remote
 call's result data has been processed by the client or an
 indication that no acknowledgment will be received.

Method Detail

acknowledgmentReceived

void acknowledgmentReceived(boolean received)

Handles either receipt of an acknowledgment that the remote
 call's result data has been processed by the client or an
 indication that no acknowledgment will be received.

If received is true, then a
 positive acknowledgment has been received that the remote
 call's result data has been processed by the client.

 If received is false, then the
 implementation of this interface has determined that no
 positive acknowledgment for the associated data will be
 received (perhaps due, for example, to connection failure
 or timeout).

Parameters:

received - true if an acknowledgment was
 received, and false if no acknowledgment will
 be received

Skip navigation links

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

Prev Class

Next Class

Frames

No Frames

All Classes

Summary:

Nested |

Field |

Constr |

Method

Detail:

Field |

Constr |

Method

Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.


El Planeta is a free-of-charge weekly newspaper in Spanish circulating over Greater Boston and throughout all of New England. El Planeta's mission is to be a reference point for the Latinos of New England in the deliverance of a high quality newspaper with concise, straightforward and professional presentation; while at the same time providing a vehicle to help advertisers accomplish their objectives in reaching the increasingly important market.
The District Weekly is Long Beach's urban manual. Like the beach communities of Greater Long Beach, the District Weekly is smart, quirky and always independent. Offering the most extensive events calendar in the region, as well as wide-ranging coverage of local politics and culture, the District Weekly has emerged as an indispensable guide to life in Long Beach.
Creative Loafing Atlanta started as a simple entertainment guide for Atlanta in 1972 and has become the flagship brand of a multimedia company that is fast becoming the industry leader in reaching and engaging the urban adult population.
Charlotte Creative Loafing is a free weekly publication, distributed on Wednesdays. Charlotte Creative Loafing serves the entire Charlotte metropolitan area. The Loaf runs from approximately 72 to 108 tabloid-size pages per week. It is available for reader pick-up at racks and other convenient locations in and around the Charlotte metropolitan area.
Fastline Farm & Ranch is an illustrated buying guide for the farming industry. There are 22 Fastline Farm & Ranch editions circulated in 48 states. The publications contain ads from farm equipment dealers, as well as from businesses related to this industry. The publications contain no editorial.
Businesses that continue to advertise, regardless of economic times, have a significant advantage over businesses that trim their ad budgets. Companies can achieve success by looking for opportunities that tough times inevitably bring. Historically, companies that take aggressive action during economic downturns do well.
A 2001 AAAA study, "Advertising in a Recession," found that companies with even a modest increase in marketing and advertising spending during a recession saw gains in market share.
Advertising during downturns makes consumers feel more positive about your business and fosters a sense of confidence and stability during chaotic times. In a recent Reuters/Zogby poll, nearly half of Americans expect a recession in the next year.
When customers aren't besieged by ad messages, your advertising is more likely to get through. It can increase consumer awareness (share of mind) and brand recognition when there are less distractions.
Consumers don't disappear during tough economic times. However, they grow more conservative, spend more time searching for deals and look for safer bets. Advertising gives you an opportunity to reach them and persuade them with cost-savings. As Kevin Roberts of Saatchi & Saatchi writing for Advertising Age said, "Consumers don't stop buying when economies go through down cycles. They look harder for value."
Advertising during an economic downturn allows you to adjust your position to respond to the new economic realities. If possible, focus ads on family values, such as conservatism and comfort food, that speak more persuasively to consumers during tough times.
Advertising can help build market share. While your competitors are hunkering down until things blow over, it's a great time to invest in your business. It enables you to solidify your customer base, take business away from your less aggressive competitors, build loyalty and position yourself for growth once the economy changes.
During the 1920s, Kellogg's and Post cereal companies were fierce competitors for market share. During the Great Depression, the Kellogg's Company directors decided to cut advertising, premiums and other expenses to save money. When president W.K. Kellogg strongly objected, the board voted again and increased their advertising budget by $1 million. When the Depression ended, Kellogg's emerged as the leading player.
Advertising is a cumulative process. The moment it stops it begins to lose power. Cutting back during a downturn is like throwing away your investment. Maintenance now costs much less than rebuilding tomorrow.
In good times, you should advertise. In bad times, you must advertise.
Chris Anderson, Editor in Chief of Wired magazine and writer of the Wired article "Free! Why $0.00 Is the Future of Business," said, "From the consumer's perspective...there is a huge difference between cheap and free. Give a product away and it can go viral. Charge a single cent for it and you're already in an entirely different business."
Good magazine has embraced the free distribution model wholeheartedly. The $20 a year they collect for a subscription actually is donated to one of its nonprofit partners instead of going into the magazine's coffers. Good's Editor in Chief, Zach Frechette, said once you take into account the costs associated with direct mail and other marketing campaigns, circulation doesn't deliver that much revenue.
Besides having the advantage of having a deep-pocketed backer, Ben Goldhirsh, Director of the Goldhirsh Foundation and founder of Reason Pictures, Good also has been able to attract advertising, averaging 32 pages per issue. High-profile advertisers include Whole Foods Market, Ralph Lauren, and Mini cars.
Today, consumers have lost the habit of paying for information. You can find information on almost every subject for free with the click of a mouse. Free daily newspapers, as well as alternative papers and niche publications, are available in almost every major metro market.
Free parenting magazines reach their readers in the places they frequent—preschools, pediatrician offices, family-friendly restaurants. They distribute their products in highly targeted areas and reach coveted thirtysomething moms effectively, moms who may or may not visit a Barnes & Noble magazine rack.
B2B publications have used the free model successfully for a long time. As long as a magazine can produce the target audience an advertiser wants, there is little hesitation on the advertiser's part on where to best to spend their ad dollars. Publications with just a few thousand subscribers can charge big bucks for space as long as they can prove they have the right kind of readers.
In an article for Editor & Publisher Stop the Press, Steve Outing, newspaper advisor and new media expert, admitted that he stopped getting the print edition of his local paper this month. He said one of the reasons was that everything that was in the paper, and more, was available online for free.
In a recent survey of 704 senior editors done for the World Editors Forum and Reuters, 56% believed news will be free in the future, up from 48% last year.
The free distribution model could work for paid consumer newspapers and magazines, but maybe with a page from the B2B playbook. Qualified, requested circulation may be a better lure for advertising than paid circulation in the future. Advertisers want the right readers—the ones who will most likely buy their goods and services—not just a lot of readers.
Verified recently received some very good news from the U.S. Patent and Trademark office in Washington.
On April 1, 2008, Verified Audit Circulation was granted registration status for the name VERIFIED in connection with "Auditing services, namely, auditing the circulation figures of newspapers, magazines and other publications; Market research in connection with auditing circulation figures of newspapers, magazines and other publications; Monitoring and auditing services, namely, monitoring, analyzing and auditing traffic to and from web sites; and Consumer and market research."
The significance of this for Verified is the recognition of consistent, ongoing use of our company's brand and that our logo is now protected by law from unauthorized use. For our clients, use of the Verified brand and logo has more value and meaning than ever, as is it licensed exclusively to clients in good standing, giving advertisers confidence in their buying decisions.
Any business with an established unique brand and/or logo should seriously consider applying for registration with the Patent and Trademark office. Protecting your logo and brand after registration is vitally important and relatively easy and inexpensive to do.
Applying for a trademark can be done without an attorney; however, legal assistance might be a good idea so you get it right with the first application. Forms can be downloaded from the Internet at www.uspto.gov/web/forms. After filing, you may hear from the USPTO requesting more information or clarification. It can take several months for a registration to go through, and your application may be denied in the initial filing. If your application is denied, the reasons will be stated. You should appeal the decision if you feel justified, providing further evidence to your claim and addressing specific reasons stated in the denial.
Protecting your logo and brand after registration is vitally important and relatively simple. You need to "give notice" that the mark is registered by applying a brief statement of the mark's registered status or use the more common circled "R." If you elect to give notice by the "R," you should make certain that there are no additional words placed between the mark and the symbol. This would apply to all appearances of the mark, including its use on labels and in advertising.
To maintain the registration of your mark, you must file an affidavit with the Patent and Trademark Office at some date after the fifth anniversary of the date of the initial registration, but before the sixth anniversary. The affidavit must show you are still using the mark as registered. After that, you renew the registration every ten years.
In addition to affidavits and renewals, to protect your trademark rights the mark must be policed in the marketplace. There are many ways to do this, including regular monitoring of trade publications and directories. When the mark is used by others, you should license its use, as Verified has done with publishing clients. The license should state the conditions of use and basic trademark use regulations.
At Verified, we are diligent about the use of our trademarks and occasionally find ourselves in the position of demanding that someone discontinue the use of our mark. These steps are an important part of trademark protection along with assuring it is used consistently and properly, both inside the company and in the marketplace.
Some of these steps may seem trivial, but they are well worth the trouble in protecting what can be an important asset to your business and a useful tool for your marketing and business development.
An email with the new registered Trademark will be sent to you shortly. If you don't receive it, please call your account coordinator at 415-461-6006. Please use the new logo exclusively in your publication, media kit and other promotional materials.
Alan Levy, VP of Marketing & Sales, and Vanessa Espinoza, Sr. Sales Executive, will be attending this event. If you would like to meet with Alan, please call 415-461-6006 (ext. 213) or email him at alevy@verifiedaudit.com.
Alan Levy, VP of Marketing & Sales will be attending this event. If you would like to meet with Alan, please call 415-461-6006, ext. 213, or email him at alevy@verifiedaudit.com. Jennifer Armor, Audit Manager, will be presenting on June 25th at 9:30 a.m. at the Trendwatch Track.
Verified would like to invite you as our guest to receive a FREE admission to the Innovation Area during the conference or save $250 off a Main Conference & Workshop pass. Please contact Verified for more information.
In a recent ICOM survey of U.S. shoppers selected from a 40,000 household database, 67% said they are much more likely or somewhat more likely to use coupons during a recession.
The breakdown was 45% percent much more likely and 22% percent somewhat more likely. Over the past ten years, the average coupon redemption rate has declined to less than 1.0 percent from a level of 1.6 percent across all U.S. coupons distributed, says the report.
Broken down by age, 71% of consumers in the 18–34 year-old age bracket said they are much more likely or somewhat more likely to use coupons in a recession. That compares to 68% in the 35–54 year-old bracket, and 63% among those 55 years and above.
Income didn't make a significant difference to respondents, with 68% of those earning less than $50,000 a year saying they are much more likely or somewhat more likely to use coupons in a recession, compared to 67% for those earning more than $50,000.
58% of consumers responding to the ICOM survey see their coupon use increasing if they could download a coupon from the Internet and have it automatically connected to an electronically swiped frequent shopper card. Of that 58%, 35% said they are much more likely to use such a card and 23% said are somewhat more likely.
77% of consumers in the 18�34 age group said they are much more likely or somewhat more likely to use coupons if given access to this paperless technology.
In the 35�54 age group, 63% said they are much more likely or somewhat more likely.
In the 55 and over bracket, 47% said they are much more likely or somewhat more likely.
"Put in perspective, online coupons of all kinds represent less than 1% of the overall coupon market," said Peter Meyers, ICOM Marketing Vice-President. "Households of two adults and two children who use coupons wisely can save 25% on their grocery bill annually, without cutting purchases. That saves $2,400 a year based on a typical $800 a month grocery spend, which outstrips the $1,800 economic stimulus check this family has coming."
In a recent survey, we at Verified asked our clients how they promoted their audit. We'd like to thank everyone who took the time to participate in the survey. It provided valuable input and offered some useful ideas.
61% of you said if Verified provided additional marketing materials such as house ads, seminars and PowerPoint presentations, you would use them.
"House ads would be great, especially promoting newspaper readership."
"Some sort of seal of approval to demonstrate accuracy...a rating placard that we can use not only in our publication as a banner but also at shows, etc."
"...letter on VAC letterhead (or through email blast) that publications can send to their advertisers following a new audit stating audit benefits to advertisers."
"Seminars on improving circulation would be great!"
"Provide a webinar that will train sales staff on how to read it [audit report], how to analyze it, how to use it to answer sales objections."
"Do more with retailers to demonstrate the value of audited newspapers."
"I think that additional marketing materials...could assist in promoting our audit. I've utilized information from Verified's newsletter suggesting ways in which the audit can be maximized and be more useful for the advertising department. Online PowerPoint presentation, which could be accessed by advertisers could be valuable too."
Verified wants to help maximize the value of your audit. Watch for new promotional materials, training and support shortly.
If you have questions or would custom, call Verified at 415-461-6006.


text:
View the sky above Stonehenge LIVE now with Skyscape. See how this ancient monument relates to the skies above it.
A new website has been created by English Heritage to enable people around the world to experience the skies above the iconic stone circle, to learn about movements of the sun, moon and planets and to see the solar alignment at Stonehenge.
The visuals are a representation of the view from within Stonehenge, a composite from various sources, not the literal view. Visit the skyscape website here
The view of the daytime sky is accurate to within a window of approximately five minutes, with the position of the sun accurate to a similar margin. You can use the highlighted squares at the top to view the last sunrise and sunset. Weather conditions are accurate – you may sometimes see raindrops on the camera!
Night view
After dark we switch from a photographic depiction to a computer generated one, which accurately displays the live location of the stars and the five visible planets. Neptune, Uranus and Pluto (as a dwarf planet) are consciously not included, as, being invisible to the naked eye, they remained undiscovered until the 18th century or later, and were consequently unknown to the builders of Stonehenge. As the night sky is a computer model it does not reflect weather conditions at the site.
Enjoy the experience!
Aside from the technical and informational aspects of Skyscape it's also our hope that you'll enjoy it from a more human perspective. We've created a webpage which offers a small escape, a pleasant place to visit, to which you can return frequently, even within a single day, and connect with the land, the stones and the skies above.
To capture the sky, a custom Raspberry Pi based, solar powered camera equipped with a 220° Fish Eye lens was built. You can see the status of the camera at freeboard.io .
Skyscape makes use of many modern web standards, so performs best with a modern browser and operating system. Older software, such as Internet Explorer, cannot always provide a good experience. Latest versions of browsers such as Firefox, Chrome, Edge and Safari will perform best.
Visit the Skyscape website here
If you are experiencing issues, try updating your system and graphics drivers to the latest version.
Follow us on Twitter and Facebook for all the latest Stonehenge news and stories.
http://www.Stonehenge.News
Tags: Moon, Moonrise, Planets, Solar alignment, Star Gazing, Sun, Sunrise
Categories : Stonehnege Skyscape
Moon Phases for Stonehenge, Wiltshire 2016
2 Jan 05:30 29d 15h 01m
10 Jan 01:30 16 Jan 23:26 24 Jan 01:45 1 Feb 03:27 29d 13h 08m
8 Feb 14:38 15 Feb 07:46 22 Feb 18:19 1 Mar 23:10 29d 11h 16m
9 Mar 01:54 15 Mar 17:02 23 Mar 12:00 31 Mar 16:16 29d 9h 29m
7 Apr 12:23 14 Apr 04:59 22 Apr 06:23 30 Apr 04:28 29d 8h 06m
6 May 20:29 13 May 18:02 21 May 22:14 29 May 13:11 29d 7h 30m
5 Jun 03:59 12 Jun 09:09 20 Jun 12:02 27 Jun 19:18 29d 8h 01m
4 Jul 12:00 12 Jul 01:51 19 Jul 23:56 26 Jul 23:59 29d 9h 44m
2 Aug 21:44 10 Aug 19:20 18 Aug 10:26 25 Aug 04:40 29d 12h 19m
1 Sep 10:03 9 Sep 12:48 16 Sep 20:05 23 Sep 10:56 29d 15h 08m
1 Oct 01:11 9 Oct 05:32 16 Oct 05:23 22 Oct 20:13 29d 17h 27m
30 Oct 17:38 7 Nov 19:51 14 Nov 13:52 21 Nov 08:33 29d 18h 40m
29 Nov 12:18 7 Dec 09:02 14 Dec 00:05 21 Dec 01:55 29d 18h 35m
29 Dec 06:53 29d 17h 14m
* All times are local time Stonehenge. Time is adjusted for DST when applicable. Dates are based on the Gregorian calendar.
http://www.timeanddate.com/moon/phases/uk/london
http://www.calendar-uk.co.uk/lunar-calendar/
http://www.history.com/news/ask-history/why-was-stonehenge-built
Follow us on Twitter and Facebook for daily Sunrise and Moon phase times
Tags: 2016, Ancient Calendar, Astro-Archaeology, astronomical, Astronomy, eclipse, Full moon, Lunar, New Moon, Star Gazing, Stonehenge, Sunrise, Sunset
Categories : Stonehenge Moon Phase 2016


A classic is a book that everyone has an no one reads. Or everyone wants to have read but doesn't want to read. Or so said Mark Twain. Or so people say he said.
Two friends (count 'em, two!) read my last post on Thomas Kuhn and called me to discuss it. This is unprecedented. I didn't really expect many people to read my random thoughts on esoterica from a half century ago. Like, geek out already. Actually, my Kuhn coverage has now been viewed 910 times. And I know that at least two of those "views" actually read it. I expect advertisers to be lining up at my door soon. Compare this to I Can Has Cheezburger. That site was getting 1.5 million hits a day in 2007.
One friend said that he had downloaded the Kindle sample of Kuhn's The Structure of Scientific Revolutions and wasn't able to get through more than a few pages. I should have warned my large reader base that nobody actually reads Kuhn. At least not much of it at once. Instead you mine Kuhn in the same way you mine other religious texts for statements that can be recontextualized (postmodernists love that word) to support your agenda. Seriously, it is much more fun to read about Kuhn than to read Kuhn. And Kuhn can't hold a candle to Kuhnians – especially those Kuhnians who are rhetorically shrill. You know, the ones compelled to voice the urgency for society to choose between textual demodernism and subcultural dematerialism through a dialectic praxis paradigm that mandates art as a totality. I'm kidding.
"The man who premises a paradigm when arguing in its defence can nonetheless provide a clear exhibit of what scientific practice will be like for those who adopt the new view of nature. That exhibit can be immensely persuasive, often compellingly so. Yet, whatever its force, the status of the circular argument is only that of persuasion. It cannot be made logically or even probabilistically compelling for those who refuse to step into the circle. The premises and values shared by the two parties to a debate over paradigms are not sufficiently extensive for that. As in political revolutions, so in paradigm choice – there is no standard higher than the assent of the relevant community. To discover how scientific revolutions are effected, we shall therefore have to examine not only the impact of nature and of logic, but also the techniques of persuasive argumentation effective within the quite special groups that constitute the community of scientists." – Chapter 9 of Structures, emphasis added.
[The] most fundamental aspect of the incommensurability of competing paradigms… is that "the proponents of competing paradigms practice their trades in different worlds. – as cited in: Scott L. Pratt (2009) Logic: Inquiry, Argument, and Order.
Yes, Kuhn's constructionism is different from that of the postmodernist moral relativists. Kuhn is complex. He rejects epistemic presumptuousness and epistemic modesty at the same time – and does so rationally. He's part philosophical realist and part logical positivist. He is not a strong constructionist, but but he's a constructionist of some sort. Or so thinks this amateur multidisciplinarian.
How many Kuhnian constructionists does it take to change a light bulb?
You're still thinking in terms of incremental change, but we need a paradigm shift.
This entry was posted on September 28, 2013, 10:33 am and is filed under Philosophy of Science. You can follow any responses to this entry through RSS 2.0. You can leave a response, or trackback from your own site.
Was Thomas Kuhn Right about Anything?


The Absolute Remodeling barrier free remodeling team is innovative, creative and professional and will treat your barrier free remodeling project with care and insight from start to finish! To request a free in-home remodeling consultation and estimate, click here. For general questions contact us here or call us directly at (989)770-0879.