text:
Cloud Imperium Games (kurz: CIG) ist ein amerikanischer Computerspielentwickler, der im Jahr 2012 von Chris Roberts und Ortwin Freyermuth gegründet wurde. Es gibt Büros in Los Angeles, Austin (Texas), Manchester, Derby (Derbyshire) und Frankfurt am Main.

Struktur

Abteilungen
 Cloud Imperium Games Texas, LLC 13420 Galleria Cir. Ste A-250 Bee Cave, TX 78738 USA
 Cloud Imperium Games Limited, f.k.a. Foundry 42 Limited,. Freedom House Church Street Wilmslow, SK9 1AX United Kingdom

Tochtergesellschaften
 Foundry 42 Ltd.
 Foundry 42 Germany
 Roberts Space Industries Corp.
 Roberts Space Industries International Ltd.

Geschichte
2012 gründete der Spieleentwickler Chris Roberts (u. a. Wing Commander, Freelancer) zusammen mit seinem Geschäftspartner und langjährigen internationalen Medienanwalt Ortwin Freyermuth das Unternehmen, um an einem neuen Spiel zu arbeiten. Neben dem Firmennamen Cloud Imperium Games tritt das Unternehmen wiederholt mit dem Namen Roberts Space Industries auf, wie CIG eine eingetragenen Marke von Cloud Imperium Rights LLC.

Am 10. Oktober 2012 startete Cloud Imperium Games eine Crowdfunding-Kampagne auf der Roberts-Space-Industries-Website mit dem erklärten Ziel, von Endkunden zwischen zwei und vier Millionen US-Dollar für die Entwicklung einer Weltraum-Flugsimulation für den PC im Sandbox-Stil zu sammeln. Roberts versprach, einen Einzelspieler-Titel mit nicht-linearer Handlung namens Squadron 42 in einem dauerhaften Online-Spiel namens Star Citizen zu integrieren. Die Finanzierung wurde am 18. Oktober 2012 um eine zusätzliche Kampagne auf der Website des Anbieters Kickstarter ausgeweitet. Bis zum 19. November 2012, als die kombinierten Kampagnen abgeschlossen waren, konnte Roberts etwas mehr als 6,2 Millionen US-Dollar einnehmen, davon 4,1 Millionen aus der RSI-Kampagne und 2,1 aus der Kickstarter-Kampagne. Damit wurde das ursprüngliche Finanzierungsziel deutlich übertroffen und Star Citizen avancierte damit zur erfolgreichsten Crowdfunding-Kampagne eines Computerspiels, sowohl in Bezug auf die erhaltenen Mittel als auch auf die Anzahl der Unterstützer. Chris Roberts hatte erklärt, dass, wenn im Laufe der Crowdfunding-Kampagne mindestens 23 Millionen US-Dollar aufgebracht werden könnten, keine Finanzierung durch externe Investoren oder Entwickler erforderlich wäre. Dieses Ziel wurde am 18. Oktober 2013 erreicht. Stand Oktober 2018 heißt es auf der Unternehmenswebsite, dass sie über 195 Millionen US-Dollar gesammelt haben.

Geplante Veröffentlichungen
Das erste geplante Produkt Star Citizen ist eine Weltraumflug- und Handelssimulation, die als Massively Multiplayer Online Game mit einer persistenten Spielwelt ausgelegt ist und sich seit der erfolgreichen Finanzierungskampagne 2012 in Entwicklung befindet. Parallel dazu entwickelt das Studio mit Squadron 42 eine eigenständige Einzelspielerkampagne zu Star Citizen. Squadron 42 sollte laut Trailer im Jahr 2016 veröffentlicht werden, wurde jedoch wie das Hauptspiel verschoben. Insgesamt steht Star Citizen u. a. wegen seiner langen Entwicklungszeit und immer neuen Finanzierungsrunden durch den Verkauf von künftigen Spielinhalten in der Kritik, die dem Unternehmen über die Jahre eine kontinuierliche Einnahmequelle schufen (vgl. Rezeptionsabschnitt des Spieleartikels).

Weblinks

 Offizielle Website

Einzelnachweise

Unternehmen (Los Angeles)
Spielesoftwareunternehmen (Kalifornien)
Gegründet 2012

redpajama_set_name: RedPajamaWikipedia


The North West End Singers went down a storm last week when they performed at the Chester Live Festival Brook Street. They sung all the latest hits from 'The Greatest Showman' to 'Wicked' to 'Matilda' and the audience loved them! A huge congratulations to the very talented group who sung their hearts out in the glorious sunshine.
WE HAVE BEEN INVITED TO PERFORM AGAIN!
At an event held in Hoole for the Supertree Chester Charity on the 21st July at 12pm. PLease come and join us and listen to this impressive group.
Liverpool Everyman theatre is notorious for its Christmas rock n roll Panto. Francis was part of the team that created this unique and popular Christmas smash hit having been involved for nearly 20 years at the theatre. Last year he gave his much celebrated and hugely popular Dame playing the role of 'Pearl' ("the not so Little Mermaid") in The production of 'The Little Mermaid' and once again had the audience in the palm of his hand and rolling with laughter. Her second year in, Lucy was staring as the infamous 'Ivanna Golddig' who is all the things a baddie should be!
The pair had very high critical acclaim and once again the show was awarded its 5 star reviews all round.
Not only was Lucy starring in the show she was also a part of the creative team and choreographed the production. A spot, which she has already been invited back to fulfill again for Christmas 2019.
Francis is also linked to the writing development programme at The Liverpool Everyman and is just starting his career as a playwright.
Due to its popularity the show sells out pretty fast, however if you are keen to see Francis and Lucy in action, singing, clowning, playing their instruments and working the crowd then do stay in touch via the site and we will keep you informed of the work they are doing.
Our Summer Workshops are an opportunity for children to create and be a part of something wonderful with emphasis on confidence building, having fun and making new friends!
Have a look at some of the amazing feedback we've received from last year! It was a blast! Make sure you're a part of the fun this year!
My daughter 'Matilda' had an absolute ball with Francis and Lucy in their summer workshop. Matilda has attended my acting groups before and said this was her all time favourite experience. She was excited to go in every day and was so proud of her achievement playing the role of Miss Trunchball, which left me and the audience in stitches. I also saw that the children not only had lots of fun, but were pushed to really explore their talents and potential in a professional environment. I felt too that the children were well cast in their roles and were able to play to their particulate strengths whether this might be singing, dancing or acting. I am crossing my fingers that this group runs again next summer!
Lucy developed such positive relationships with all the children, whilst also producing such a quality show.
You have genuinely boosted our girls' confidence, whilst also allowing them to refine their performance skills. To put on a show like that, which was polished, entertaining and had real heart is such an accomplishment, and almost a miracle considering your time scale. As teachers what was so amazing to see was that kids of all ages and abilities clearly felt fully invested and valued and that is so rare. There was not a single child on stage not loving it or giving their all.
(Hermione had autism and would normally have a carer) It has been the first time that I have ever had any time off over the holidays and been able to leave Hermione anywhere and know she's OK. It has been a massive accomplishment for her and while I felt sure she would cope due to the nature of what she was doing it's wonderful that she has done it.
My daughter absolutely loved it. We're now looking for a theatre group for her as she enjoyed herself so much. Her only criticism was that she only got to do the show once!!
they all had a great time and arthur has been performing naughty and revolting children to us ever since...!!
My kids absolutely loved the week. I've not heard them so animated after a camp! The show itself was fantastic and we were shocked at how much you managed to get from them in just 5 days - very impressive. Thanks so much.
She didn't want it to end and said she wished it started earlier in the day and ended later!


The domain name secma-batiment.fr is registered through Speednames on behalf of a client. Read our privacy statement, legal notice, registration agreement, and dispute policy for more details.
If you are the party who registered secma-batiment.fr with Speednames, you may manage Web Alias, Mail Alias and DNS online, by logging in your Control Panel.


text:
Wind Energy Development Programmatic EIS news, events, and announcements.
Informational Materials Available on BLM's Competitive Leasing Rule for Solar and Wind Energy Development
The Bureau of Land Management (BLM) recent Competitive Leasing Rule for Solar and Wind Energy Development governs solar and wind energy development on public lands. It was published in the Federal Register on December 19th, and went into effect on January 18, 2017. The rule strengthens existing policies and creates a new leasing program that will support renewable energy development. Copies of the rule and a fact sheet explaining the key changes between the proposed and final rules are available on BLM's website.
On January 17th the BLM hosted a presentation on the recent rule, intended to inform members of industry, non-governmental organizations, local, state, and federal regulators, and the general public on the key elements of the new rule.
Presentation slides (PDF, 874 KB) are now available. A recording of the presentation may be available at a later date.
Webinar – General Overview of BLM's Competitive Leasing Rule for Solar and Wind Energy Development: January 17, 2017
Jayme Lopez, principal author, will host a webinar on the Bureau of Land Management (BLM) recent Competitive Leasing Rule for Solar and Wind Energy Development. The webinar will take place on Tuesday, January 17th, from 1:00 PM to 2:30 PM EST (10:00 AM to 11:30 AM PST). This webinar, which is intended for members of industry, non-governmental organizations, local, state, and federal regulators, and the general public, will provide an overview of key elements of the new rule.
The rule governs solar and wind energy development on public lands. It was published in the Federal Register on December 19th, and goes into effect on January 18, 2017. The rule strengthens existing policies and creates a new leasing program that will support renewable energy development. Copies of the rule and a fact sheet explaining the key changes between the proposed and final rules are available on BLM's website.
The dial-in number for the webinar is 1-888-850-4523; Passcode: 473080
To register for the webinar, please use the following link:
https://anl.adobeconnect.com/blmleasingjan17/event/registration.html
After registering you will receive a confirmation email containing information about joining the webinar. Please note that this webinar is limited to the first 100 people who register.
Competitive Leasing Rule for Wind and Solar Leasing is Finalized, Providing a Foundation for the Future of BLM's Renewable Energy Program
The Bureau of Land Management (BLM) has finalized its rule governing solar and wind energy development on public lands, as described in a Press Release issued November 10th. The rule strengthens existing policies and creates a new leasing program that will support renewable energy development through, among other things, competitive leasing processes and incentives to encourage development in suitable areas.
The rule complements the Department's landscape-scale planning efforts, including the Western Solar Plan, California's Desert Renewable Energy Conservation Plan, and Arizona's Restoration Design Energy Project, which were designed to streamline development in areas with high generation potential, while protecting important environmental, cultural, and recreational resources.
The rule will support a full range of development activities anticipated by the BLM across the lands it manages. Its competitive leasing provisions will help development flourish on the 700,000 acres of public lands that have been identified as designated leasing areas (DLAs) in Arizona, California, Colorado, Nevada, New Mexico and Utah. Similar provisions in effect in the Dry Lake Solar Energy Zone in Nevada enabled the BLM to approve projects in half the time of the current process.
The rule also ensures that the BLM will continue to make progress in permitting outside of DLAs. There, the rule refines the application review process and increases financial certainty by giving developers the option of scheduled rate adjustments and providing for MW capacity fee phase-ins. The rule also allows the BLM to offer lands outside of DLAs competitively; however, the BLM anticipates that most projects in these areas will continue to use the application-by-application process.
Copies of the rule and a fact sheet explaining the key changes between the proposed and final rules are available on BLM's website. The regulations will become effective 30 days after they are published in the Federal Register.
BLM Extends Public Comment Period for Solar/Wind Competitive Leasing Proposed Rule and Announces Webinar
The Bureau of Land Management (BLM) has extended the comment period for the proposed rule that would promote the use of "designated leasing areas" for solar and wind energy development. The proposed rule would establish competitive processes, terms, and conditions (including rental and bonding requirements) for solar and wind energy development right-of-ways both inside and outside the designated leasing areas and provide incentives for leases in designated leasing areas.
The proposed rule was initially published on September 30, 2014, with a 60-day comment period closing on December 1, 2014. The BLM is extending the comment period for 15 days beyond the end of the initial comment period. As a result of this extension, the comment period will close on December 16, 2014.
The BLM will host a webinar for interested parties on Wednesday, December 3rd, from 1:00 to 2:30 p.m. Eastern Time to discuss the competitive leasing proposed rule and answer any questions. The dial-in number for the webinar is: 1-888-324-4391; Passcode 7595414. The URL for the webinar is: http://anl.adobeconnect.com/blmleasing/. Please include your name and organization name (if applicable) in the name field when logging in to the webinar. For more information regarding the webinar, please contact Jayme Lopez by telephone at 202-912-7547, or by email at [email protected].
BLM's Draft Competitive Leasing Rule for Wind and Solar Leasing Released for Comment
On September 30, 2014, the BLM issued its Draft Competitive Leasing rule for Wind and Solar Leasing in a Federal Register notice. Publication kicks off a 60-day comment period that closes on December 1, 2014. The proposed regulations would promote the use of "designated leasing areas." The rule would establish competitive processes, terms and conditions (including rental and bonding requirements) for solar and wind energy development rights-of-way (ROWs) both inside and outside the designated leasing areas, and provide incentives for leases in designated leasing areas. A Draft Environmental Assessment and an Economic Analysis supporting the draft rule are available.
Revised BLM Wind Energy Policy Instruction Memorandum Available
The full text of the revised BLM Wind Energy Policy Instruction Memorandum is now available for viewing and downloading via this web site.
Biological Opinion Available
The U.S. Fish and Wildlife Service Biological Opinion on the Likely Effects of the Proposed Wind Energy Development Program is now available for viewing and downloading via this web site.
NOA for Record of Decision Available
The Notice of Availability of the Record of Decision for the Wind Energy Development Programmatic Environmental Impact Statement (PEIS) and Associated Land Use Plan Amendments (52 KB) published in Federal Register.
Notice of Availability of Record of Decision Available
The Record of Decision to implement a Wind Energy Development Program and amend land use plans is now available for viewing and downloading via this web site.
Notice of Availability for Final PEIS Published in Federal Register
Notice of Availability of Final Programmatic Environmental Impact Statement (FPEIS) on Wind Energy Development on BLM-Administered Lands in the Western United States (59 KB) published in Federal Register.
Wind Energy Final Programmatic EIS Documents Available
The Wind Energy Development Final Programmatic EIS is available for downloading or online browsing in Adobe Acrobat PDF format.
The Final PEIS includes proposed amendments to 52 BLM land use plans in Colorado, Idaho, Montana, Nevada, New Mexico, Oregon, Utah, Washington, and Wyoming, as described in Appendix C of the Final Programmatic EIS. BLM land use planning regulations (43 CFR 1610.5-2) state that any person who participated in the planning process, and has an interest that may be adversely affected, may protest. The protest must be filed within 30 days of the date that the Environmental Protection Agency publishes the Notice of Availability in the Federal Register. Instructions for filing of protests are described in the "Dear Reader" letter in the front of Volume 1 of the Final PEIS.
Wind Energy Draft Programmatic EIS Comments Available
Please note that the Draft Programmatic EIS comments have been incorporated into Volume 3 of the Final Programmatic EIS, and the comment documents are no longer available on this Web site. This news item is retained for archival purposes.
The Bureau of Land Management (BLM) has completed the public comment phase for the Draft Wind Energy Development Programmatic Environmental Impact Statement (EIS). Public comments were accepted from September 10, 2004 through December 10, 2004. More than 690 comments were received.
Comment documents received during the draft phase are available for review on this Web site.
Draft Programmatic Environmental Impact Statement (DPEIS) Available
Please note that the Draft Programmatic EIS has been replaced with the Final Programmatic EIS. The Draft Programmatic EIS is no longer available on this Web site, and the comment period has closed. This news item is retained for archival purposes.
The Bureau of Land Management (BLM) announces the availability of the Draft Programmatic Environmental Impact Statement (DPEIS) on Wind Energy Development on BLM-Administered Lands in the Western United States. The BLM has prepared this DPEIS to (1) assess the environmental, social, and economic impacts associated with wind energy development on public lands in 11 western states (excluding Alaska) and (2) evaluate a number of alternatives to determine the best management approach to mitigating potential impacts and facilitating wind energy development.
The DPEIS is available for review on this Web site in a searchable and downloadable format. The DPEIS also is available for review during normal business hours at BLM State Offices located in Arizona (222 N. Central Ave., Phoenix); California (2800 Cottage Way, Suite W-1834, Sacramento); Colorado (2850 Youngfield St., Lakewood); Idaho (1387 S. Vinnell Way, Boise); Montana (5001 Southgate Dr., Billings); Nevada (1340 Financial Blvd., Reno); New Mexico (1474 Rodeo Rd., Santa Fe); Oregon (333 SW 1st Ave., Portland); Utah (324 South State St., Salt Lake City); and Wyoming (5353 Yellowstone Rd., Cheyenne).
The public has 90 days to review and comment on the DPEIS following publication of the required EPA Notice of Availability.
Comments can be submitted electronically via a comment form available on this web site or by mail to:
BLM Wind Energy Programmatic EIS
Argonne National Laboratory, EAD/900
9700 S. Cass Avenue
Argonne, IL 60439
Wind Energy Development EIS Scoping Phase Completed; Summary and Comments Available Online
The Bureau of Land Management (BLM) has completed the scoping phase for the Wind Energy Development Programmatic Environmental Impact Statement (PEIS). Public scoping comments were accepted from October 17 through December 19, 2003. Over 800 comments were received during five public meetings, by mail and facsimile, and via this Web site.
The Summary of Public Scoping Comments reflects all comments received during the scoping phase and will be used to assist the BLM in developing the scope of analysis to be conducted in the PEIS. Specific comments are not provided in the report; however, written documents received during the scoping phase are available for review on this Web site.
Wind Energy Development EIS Public Scoping Meetings in November
The BLM will hold public scoping meetings to obtain comments for the Programmatic EIS at the following locations on the dates specified below.
See Getting Involved for information on public participation in the EIS process.
Notice of Intent Published in Federal Register
Notice of Intent to Prepare a Programmatic Environmental Impact Statement (EIS) to Evaluate Wind Energy Development on Western Public Lands Administered by the Bureau of Land Management (39 KB) published in Federal Register
Home | Wind Energy EIS | Getting Involved | Wind Energy Guide | EIS Documents
News | FAQs | E-Mail Services
Contact Us | About Us | Privacy/Security | Site Index

redpajama_set_name: RedPajamaCommonCrawl


Found in Bantry, County Cork, Bantry House boasts a collection of art treasures as well as splendid gardens that date back to the 1850s. After many years of neglect, the gardens have been restored to their former glory.
Bantry House and Garden is a stately home owned and lived in by Egerton Shelswell-White, who is a descendent of Richard White, the Earl of Bantry. The house sits on an elevated position overlooking the bay and just a five-minute walk from the bustling market town of Bantry, County Cork.
The house offers self-guided tours of the three floors, including drawing rooms, with tapestries from Versailles, the dining room and library. It has a collection of art treasures that were mainly collected in the 1800s. The gardens were created in the 1850s. The second Earl of Bantry terraced the land around the house, with seven terraces in all.
For opening times, admission prices, special events and other details, please see the Bantry House and Garden website.


Business Checking Accounts Nevada IA - State Bank & Trust Co.
Manage your cash flow easily with the convenience of a checking account from State Bank & Trust Co. Each checking account has unique benefits. Checking accounts to be used in conjunction with other programs as your business needs evolve. Contact us to learn more.
A Commercial Checking account with State Bank & Trust Co. will provide you with the essentials that you are looking for in an account to manage your business finances.
*Fees may apply. See branch for details.
To offset fees on earnings, a credit is applied to the average collected balance.
A Basic Business Checking account with State Bank & Trust Co. offers you the flexibility for those who own a small business, who are just starting their business, non-personal entities or for non-profit organizations.
**If balance falls below $2500, a low $10 monthly fee will be assessed.
***Fees may apply. See branch for details.


text:
using std::bind;
using std::chrono::seconds;
using std::chrono::system_clock;
using std::function;
using std::get;
using std::lock_guard;
using std::make_shared;
using std::make_tuple;
using std::map;
using std::move;
using std::multimap;
using std::mutex;
using std::ostringstream;
using std::shared_ptr;
using std::stoi;
using std::string;
using std::to_string;
using std::tuple;
using std::unique_lock;
using std::vector;
using util::Status;
using util::StatusOr;
using util::Task;

namespace cert_trans {
namespace {

string NormalizeKey(const string& input) {
  CHECK(!input.empty());
  CHECK_EQ(input[0], '/');

  string::size_type offset(0);
  string output;
  while (offset < input.size()) {
    const string::size_type next_part(input.find_first_not_of('/', offset));
    const string::size_type next_slash(input.find_first_of('/', next_part));

    if (next_part != string::npos) {
      const string part(
          input.substr(next_part - 1, next_slash - next_part + 1));

      if (part == "/..") {
        const string::size_type prev_slash(output.find_last_of('/'));
        if (prev_slash != string::npos) {
          output.erase(prev_slash);
        }
      } else if (part != "/.") {
        output.append(part);
      }
    }

    offset = next_slash;
  }

  if (output.empty()) {
    output.push_back('/');
  }

  return output;
}

bool WatchMatchesKey(const string& watch_key, const string& notify_key,
                     bool recursive) {
  if (watch_key == notify_key) {
    return true;
  }

  if (!recursive) {
    return false;
  }

  const string dir(watch_key + "/");
  return watch_key == "/" || notify_key.compare(0, dir.size(), dir) == 0;
}

}  // namespace

namespace {
const char* kStoreStats[] = {"setsFail",
                             "getsSuccess",
                             "watchers",
                             "expireCount",
                             "createFail",
                             "setsSuccess",
                             "compareAndDeleteFail",
                             "createSuccess",
                             "deleteFail",
                             "compareAndSwapSuccess",
                             "compareAndSwapFail",
                             "compareAndDeleteSuccess",
                             "updateFail",
                             "deleteSuccess",
                             "updateSuccess",
                             "getsFail"};
}  // namespace

FakeEtcdClient::FakeEtcdClient(libevent::Base* base)
    : base_(CHECK_NOTNULL(base)), parent_task_(base_), index_(1) {
  for (const auto& s : kStoreStats) {
    stats_[s] = 0;
  }
}

FakeEtcdClient::~FakeEtcdClient() {
  parent_task_.task()->Return();
  parent_task_.Wait();
  CHECK_EQ(parent_task_.status(), Status::OK);
}

void FakeEtcdClient::DumpEntries(const unique_lock<mutex>& lock) const {
  CHECK(lock.owns_lock());
  for (const auto& pair : entries_) {
    VLOG(1) << pair.second.ToString();
  }
}

void FakeEtcdClient::Watch(const string& rawkey, const WatchCallback& cb,
                           Task* task) {
  const string key(NormalizeKey(rawkey));
  unique_lock<mutex> lock(mutex_);
  vector<Node> initial_updates;
  map<string, Node>::const_iterator it(entries_.find(key));
  if (it != entries_.end()) {
    if (it->second.is_dir_) {
      const string key_prefix(key + "/");
      for (++it; it != entries_.end() &&
                 it->first.compare(0, key_prefix.size(), key_prefix) == 0;
           ++it) {
        CHECK(!it->second.deleted_);
        initial_updates.emplace_back(it->second);
      }
    } else {
      CHECK(!it->second.deleted_);
      initial_updates.emplace_back(it->second);
    }
  }
  ScheduleWatchCallback(lock, task, bind(cb, move(initial_updates)));
  watches_[key].push_back(make_pair(cb, task));
  task->WhenCancelled(bind(&FakeEtcdClient::CancelWatch, this, task));
  ++stats_["watchers"];
}

void FakeEtcdClient::PurgeExpiredEntriesWithLock(
    const unique_lock<mutex>& lock) {
  CHECK(lock.owns_lock());
  for (auto it = entries_.begin(); it != entries_.end();) {
    if (it->second.expires_ < system_clock::now()) {
      VLOG(1) << "Deleting expired entry " << it->first;
      it->second.deleted_ = true;
      NotifyForPath(lock, it->first);
      it = entries_.erase(it);
      ++stats_["expireCount"];
    } else {
      ++it;
    }
  }
}

void FakeEtcdClient::PurgeExpiredEntries() {
  unique_lock<mutex> lock(mutex_);
  PurgeExpiredEntriesWithLock(lock);
}

void FakeEtcdClient::NotifyForPath(const unique_lock<mutex>& lock,
                                   const string& path) {
  CHECK(lock.owns_lock());
  VLOG(1) << "notifying " << path;
  const map<string, Node>::const_iterator node_it(entries_.find(path));
  CHECK(node_it != entries_.end());
  const Node& node(node_it->second);

  const multimap<string, tuple<bool, GetResponse*, Task*>>::iterator last(
      waiting_gets_.upper_bound(path));
  multimap<string, tuple<bool, GetResponse*, Task*>>::iterator it;
  for (it = waiting_gets_.begin(); it != last;) {
    if (WatchMatchesKey(it->first, node.key_, get<0>(it->second))) {
      get<1>(it->second)->node = node;
      get<2>(it->second)->Return();
      it = waiting_gets_.erase(it);
    } else {
      ++it;
    }
  }

  for (const auto& pair : watches_) {
    if (path.find(pair.first) == 0) {
      for (const auto& cb_cookie : pair.second) {
        ScheduleWatchCallback(lock, cb_cookie.second,
                              bind(cb_cookie.first, vector<Node>{node}));
      }
    }
  }
}

void FakeEtcdClient::Get(const Request& req, GetResponse* resp, Task* task) {
  VLOG(1) << "GET " << req.key;
  const string key(NormalizeKey(req.key));

  CHECK_NE(key, "/") << "not implemented";

  task->CleanupWhenDone(
      bind(&FakeEtcdClient::UpdateOperationStats, this, "gets", task));

  unique_lock<mutex> lock(mutex_);
  PurgeExpiredEntriesWithLock(lock);
  resp->etcd_index = index_;

  if (req.wait_index > 0) {
    if (req.wait_index <= index_) {
      // Our fake history log is *very* small!
      task->Return(
          Status(util::error::ABORTED,
                 "The event in requested index is outdated and cleared"));
      return;
    }

    waiting_gets_.insert(
        make_pair(key, make_tuple(req.recursive, resp, task)));
    task->WhenCancelled(
        bind(&FakeEtcdClient::CancelWaitingGet, this, key, task));
    return;
  }

  map<string, Node>::const_iterator it(entries_.find(key));
  if (it == entries_.end()) {
    task->Return(Status(util::error::NOT_FOUND, "not found"));
    return;
  }
  resp->node = it->second;
  ++it;

  vector<Node*> parent_nodes{&resp->node};
  while (!parent_nodes.empty() && it != entries_.end()) {
    const string key_prefix(parent_nodes.back()->key_ + "/");
    if (it->first.compare(0, key_prefix.size(), key_prefix) > 0) {
      parent_nodes.pop_back();
      continue;
    }

    if (req.recursive) {
      parent_nodes.back()->nodes_.emplace_back(it->second);

      if (it->second.is_dir_) {
        // The node we just added is now the current parent node.
        parent_nodes.push_back(&parent_nodes.back()->nodes_.back());
      }
    } else {
      if (it->first.find_first_of('/', key_prefix.size()) == string::npos) {
        resp->node.nodes_.emplace_back(it->second);
      }
    }

    ++it;
  }
  task->Return();
}

void FakeEtcdClient::InternalPut(const string& rawkey, const string& value,
                                 const system_clock::time_point& expires,
                                 bool create, int64_t prev_index,
                                 Response* resp, Task* task) {
  const string key(NormalizeKey(rawkey));
  CHECK_NE(key.back(), '/');
  CHECK(!create || prev_index <= 0);

  vector<string> parents;
  for (string::size_type offset = 0; offset < key.size();) {
    const string::size_type next_slash(key.find_first_of('/', offset + 1));
    if (next_slash == string::npos) {
      break;
    }

    parents.emplace_back(key.substr(offset + 1, next_slash - offset - 1));
    offset = next_slash;
  }

  *resp = EtcdClient::Response();
  unique_lock<mutex> lock(mutex_);
  PurgeExpiredEntriesWithLock(lock);
  const int64_t new_index(index_ + 1);

  // If we're creating, make sure all the parent entries exist and are
  // directories, creating them as needed.
  if (create) {
    string parent_key;
    for (const string& path : parents) {
      parent_key.append("/" + path);
      // Either this inserts a directory, or it fails, and it gets us
      // the entry. If we insert a directory, then success is
      // guaranteed below, so we're sure to update index_
      // appropriately.
      if (!entries_.insert(make_pair(parent_key,
                                     Node(new_index, new_index, parent_key,
                                          true, "", {}, false)))
               .first->second.is_dir_) {
        task->Return(Status(util::error::ABORTED, "Not a directory"));
        return;
      }
    }
  }

  Node node(new_index, new_index, key, false, value, {}, false);
  node.expires_ = expires;
  const map<string, Node>::const_iterator entry(entries_.find(key));
  if (create && entry != entries_.end()) {
    task->Return(
        Status(util::error::FAILED_PRECONDITION, key + " already exists"));
    return;
  }

  if (prev_index > 0) {
    if (entry == entries_.end()) {
      task->Return(Status(util::error::FAILED_PRECONDITION,
                          "node doesn't exist: " + key));
      return;
    }
    if (prev_index != entry->second.modified_index_) {
      task->Return(Status(util::error::FAILED_PRECONDITION,
                          "incorrect index:  prevIndex=" +
                              to_string(prev_index) + " but modified_index_=" +
                              to_string(entry->second.modified_index_)));
      return;
    }
    node.created_index_ = entry->second.created_index_;
  }

  entries_[key] = node;
  resp->etcd_index = new_index;
  index_ = new_index;
  task->Return();
  NotifyForPath(lock, key);
  DumpEntries(lock);
  if (expires < system_clock::time_point::max()) {
    const std::chrono::duration<double> delay(expires - system_clock::now());
    base_->Delay(delay, parent_task_.task()->AddChild(
                            bind(&FakeEtcdClient::PurgeExpiredEntries, this)));
  }
}

void FakeEtcdClient::InternalDelete(const string& key,
                                    const int64_t current_index, Task* task) {
  VLOG(1) << "DELETE " << key;
  CHECK(!key.empty());
  CHECK_EQ(key.front(), '/');
  CHECK_NE(key.back(), '/');

  const string op_name(current_index > 0 ? "compareAndDelete" : "delete");

  unique_lock<mutex> lock(mutex_);
  PurgeExpiredEntriesWithLock(lock);
  const map<string, Node>::iterator entry(entries_.find(key));
  if (entry == entries_.end()) {
    ++stats_[op_name + "Fail"];
    task->Return(Status(util::error::NOT_FOUND, "Node doesn't exist: " + key));
    return;
  }
  if (current_index > 0 && entry->second.modified_index_ != current_index) {
    ++stats_[op_name + "Fail"];
    task->Return(Status(util::error::FAILED_PRECONDITION,
                        "Incorrect index:  prevIndex=" +
                            to_string(current_index) +
                            " but modified_index_=" +
                            to_string(entry->second.modified_index_)));
    return;
  }
  entry->second.modified_index_ = ++index_;
  entry->second.value_.clear();
  entry->second.deleted_ = true;
  ++stats_[op_name + "Success"];
  task->Return();
  NotifyForPath(lock, key);
  entries_.erase(entry);
}

void FakeEtcdClient::UpdateOperationStats(const string& op, const Task* task) {
  CHECK_NOTNULL(task);
  if (!task->IsActive()) {
    std::lock_guard<std::mutex> lock(mutex_);
    ++stats_[op + (task->status().ok() ? "Success" : "Fail")];
  }
}

void FakeEtcdClient::Create(const string& key, const string& value,
                            Response* resp, Task* task) {
  task->CleanupWhenDone(
      bind(&FakeEtcdClient::UpdateOperationStats, this, "create", task));
  InternalPut(key, value, system_clock::time_point::max(), true, -1, resp,
              task);
}

void FakeEtcdClient::CreateWithTTL(const string& key, const string& value,
                                   const seconds& ttl, Response* resp,
                                   Task* task) {
  task->CleanupWhenDone(
      bind(&FakeEtcdClient::UpdateOperationStats, this, "create", task));
  InternalPut(key, value, system_clock::now() + ttl, true, -1, resp, task);
}

void FakeEtcdClient::Update(const string& key, const string& value,
                            const int64_t previous_index, Response* resp,
                            Task* task) {
  task->CleanupWhenDone(bind(&FakeEtcdClient::UpdateOperationStats, this,
                             "compareAndSwap", task));
  InternalPut(key, value, system_clock::time_point::max(), false,
              previous_index, resp, task);
}

void FakeEtcdClient::UpdateWithTTL(const string& key, const string& value,
                                   const seconds& ttl,
                                   const int64_t previous_index,
                                   Response* resp, Task* task) {
  task->CleanupWhenDone(bind(&FakeEtcdClient::UpdateOperationStats, this,
                             "compareAndSwap", task));
  InternalPut(key, value, system_clock::now() + ttl, false, previous_index,
              resp, task);
}

void FakeEtcdClient::ForceSet(const string& key, const string& value,
                              Response* resp, Task* task) {
  task->CleanupWhenDone(
      bind(&FakeEtcdClient::UpdateOperationStats, this, "sets", task));
  InternalPut(key, value, system_clock::time_point::max(), false, -1, resp,
              task);
}

void FakeEtcdClient::ForceSetWithTTL(const std::string& key,
                                     const std::string& value,
                                     const std::chrono::seconds& ttl,
                                     Response* resp, util::Task* task) {
  task->CleanupWhenDone(
      bind(&FakeEtcdClient::UpdateOperationStats, this, "sets", task));
  InternalPut(key, value, system_clock::now() + ttl, false, -1, resp, task);
}

void FakeEtcdClient::Delete(const string& key, const int64_t current_index,
                            Task* task) {
  CHECK_GT(current_index, 0);
  InternalDelete(key, current_index, task);
}

void FakeEtcdClient::ForceDelete(const string& key, Task* task) {
  InternalDelete(key, 0, task);
}

void FakeEtcdClient::GetStoreStats(StatsResponse* resp, Task* task) {
  CHECK_NOTNULL(resp);
  CHECK_NOTNULL(task);
  resp->stats = stats_;
  task->Return();
}

void FakeEtcdClient::CancelWatch(Task* task) {
  lock_guard<mutex> lock(mutex_);
  bool found(false);
  for (auto& pair : watches_) {
    for (auto it(pair.second.begin()); it != pair.second.end();) {
      if (it->second == task) {
        CHECK(!found);
        found = true;
        VLOG(1) << "Removing watcher " << it->second << " on " << pair.first;
        --stats_["watchers"];
        // Outstanding notifications have a hold on this task, so they
        // will all go through before the task actually completes. But
        // we won't be sending new notifications.
        task->Return(Status::CANCELLED);
        it = pair.second.erase(it);
      } else {
        ++it;
      }
    }
  }
}

void FakeEtcdClient::CancelWaitingGet(const string& key, Task* task) {
  lock_guard<mutex> lock(mutex_);
  const multimap<string, tuple<bool, GetResponse*, Task*>>::iterator last(
      waiting_gets_.upper_bound(key));

  for (auto it = waiting_gets_.lower_bound(key); it != last; ++it) {
    if (get<2>(it->second) == task) {
      waiting_gets_.erase(it);
      task->Return(Status::CANCELLED);
      return;
    }
  }
}

void FakeEtcdClient::ScheduleWatchCallback(
    const unique_lock<mutex>& lock, Task* task,
    const std::function<void()>& callback) {
  CHECK(lock.owns_lock());
  const bool already_running(!watches_callbacks_.empty());

  task->AddHold();
  watches_callbacks_.emplace_back(make_pair(task, move(callback)));

  // TODO(pphaneuf): This might fare poorly if the executor is
  // synchronous.
  if (!already_running) {
    watches_callbacks_.front().first->executor()->Add(
        bind(&FakeEtcdClient::RunWatchCallback, this));
  }
}

void FakeEtcdClient::RunWatchCallback() {
  Task* current(nullptr);
  Task* next(nullptr);
  function<void()> callback;

  {
    lock_guard<mutex> lock(mutex_);

    CHECK(!watches_callbacks_.empty());
    current = move(watches_callbacks_.front().first);
    callback = move(watches_callbacks_.front().second);
    watches_callbacks_.pop_front();

    if (!watches_callbacks_.empty()) {
      next = CHECK_NOTNULL(watches_callbacks_.front().first);
    }
  }

  callback();
  current->RemoveHold();

  // If we have a next executor, schedule ourselves on it.
  if (next) {
    next->executor()->Add(bind(&FakeEtcdClient::RunWatchCallback, this));
  }
}

}  // namespace cert_trans

redpajama_set_name: RedPajamaGithub


St. Patrick's Day is a great day to cheer ourselves up with beautiful sights of Ireland; so stunning you'll feel immediately uplifted. This stunning country with a bloody history presents so many reasons to visit, with the attractions of Ireland running from coast to coast, north to south and from countryside to city. Join me in browsing a photo album of the sights of Ireland.
Ireland's coastline easily rivals that of anywhere else in the world. The beaches are among the glorious sights of Ireland.


SUNNYVALE, Calif., Feb. 5, 2019 — ParallelM, a leader in MLOps, today announced integration with H2O open source to drive the adoption of AI across industries. The integrations will allow H2O.ai customers to quickly deploy and manage models in ParallelM MCenter and manage ongoing lifecycle needs like model health monitoring and model retraining for models running in production.
The initial integration, which is available now, makes it easy to import H2O models into MCenter in either the POJO or MOJO formats. Models can then be run in batch or real-time modes. Real-time models can take advantage of the new MCenter REST endpoint, a robust and scalable REST interface for production ML applications.
ParallelM also plans to integrate H2O models with instrumentation for the ParallelM MLOps API to generate model statistics without data scientists or even data analysts needing to touch the model code. This is particularly important for continuing democratization of AI as data analysts are creating more and more models using automatic machine learning systems like H2O Driverless AI.
ParallelM is also adding H2O as a natively supported engine for model retraining. With this integration, MCenter will be able to automatically trigger automated machine learning platforms like H2O AutoML and H2O DriverlessAI to retrain models. MCenter will then automatically import and deploy the new version without interrupting real-time serving or batch processing or requiring data scientists to be involved in the retraining process.
ParallelM is a company entirely focused on delivering machine learning operationalization (MLOps) at scale. ParallelM's breakthrough MCenter solution is built specifically to power the deployment, optimization, and governance of machine learning pipelines in production so that companies can scale machine learning across their business applications. ParallelM's approach is that of a single, unified MLOps solution that embeds best practice processes in technology, enabling all ML stakeholders to unlock the business value of AI. Please visit www.parallelm.com or email us at [email protected].


text:
Chester French – "She Loves Everybody" (2009)
Well she craves affection
So I use protection
That's always a good idea, of course. But it's an especially good idea given the title of today's featured song.
"She Loves Everybody" plays during the closing credits of the first episode of the fourth season of the HBO comedy, Entourage.
I've currently watching Entourage on DVD. (Thank you, public library!)
The show, which ran for eight seasons, depicts the career of a young, up-and-coming movie star who grew up on the mean streets of Queens.
The boys of Entourage
The actor's entourage consists of an older half-brother (a lesser TV and movie actor) and two childhood friends – one is his driver and all-around gofer while the other one becomes his manager.
Entourage was inspired by the career of movie star Mark Wahlberg, who grew up in a tough part of Boston. Wahlberg was a bad, bad boy who was arrested many times while still a teenager. (We're not talking jaywalking or littering, boys and girls – once he was charged with attempted murder.)
Wahlberg eventually cleaned up his act. After fronting a hip-hop band (Marky Mark and the Funky Bunch) and gaining fame as a Calvin Klein underwear model, he made his movie debut at age 22 and today is a successful leading man.
Mark Wahlberg in The Departed
Vincent Chase, the fictional star of Entourage, is Wahlberg without the rap sheet. He and his buddies live the good life in L.A. – their life abounds with sex, drugs, and sex 'n' drugs.
There's not quite as much nudity as you might expect from an HBO show, but that's really my only complaint about Entourage.
Click here for a list of the 100 hottest women to appear on Entourage.
I'd call Entourage a guilty pleasure except that I don't feel the least bit guilty about watching it.
"She Loves Everybody" is a pretty good, but the backstory of the two-man band that recorded it is why I'm featuring it today.
Chester French consists of D. A. Wallach and Maxwell Drummey, two friends who met as Harvard College freshmen in 2003.
The group is named after sculptor Daniel Chester French, who is best-known for the iconic 19-foot-tall statue of Abraham Lincoln that is the centerpiece of the Lincoln Memorial:
French's other works include the famous statue of a Minuteman in Concord, Massachusetts, and the seated statue of the founder of Harvard College, John Harvard, which stands in Harvard Yard:
By the way, the French statue of John Harvard is known as "the statue of three lies."
First, the statue isn't a likeness of Harvard – no one knows what John Harvard looked like, so the sculptor used a friend as the model for the statue.
Daniel Chester French
Second, John Harvard was not Harvard's founder, although he was the college's first major benefactor, leaving half of his estate and his library of some 400 volumes to Harvard.
Third, Harvard was founded in 1636 – not 1638, as the engraving on the statue says.
Wallach and Drummey learned how to record and produce music at Harvard's recording studio, and put together a demo album their senior year. That demo ended up in the hands of Kanye West and Pharrell Williams, among others, and became the subject of a full-scale bidding war that was eventually won by Interscope Records (whose other artists include Eminem, Lady Gaga, and the Black Eyed Peas.)
Maxwell Drummey and D. A. Wallach:
a/k/a "Twee and Tweer"
Vocalist/songwriter Wallach has a very interesting biography. It's so interesting that you have to wonder if it's really true.
Wallach was a two-time finalist in the Federal Reserve Bank's "Fed Challenge," a monetary policy competition for high-school students.
Here's the Wikipedia description of the "Fed Challenge":
The Fed Challenge begins with regional and district rounds of competition. Each Fed Challenge team, consisting of three to five students, presents an analysis of the current state of the economy backed by current economic data and a monetary policy recommendation for the Federal Open Market Committee (FOMC). Following the presentation, judges question each team about their presentation and their knowledge of macroeconomic theory. Federal Reserve Bank economists and officers judge the district competitions.
(I did a lot of really nerdy stuff in high school, but I never did anything that was nearly that nerdy.)
At Harvard, Wallach won a prize as the outstanding African-American Studies major. (He is white.) He also studied the Gikuyu language, which is spoken primarily by Bantu tribesmen in Kenya.
Today, Wallach is not only a member of Chester French but also a solo recording artist. He is the official artist-in-residence at Spotify and an investor in a number of technology companies (including a digital currency network and a telemedicine provider).
"She Loves Everybody" was the first single from Chester French's 2009 debut album, Love the Future. The packaging for the single resembled a condom wrapper:
The "She Loves Everybody" video features a hot girl beating the crap out of Wallach and Drummey.
It goes without saying that a video that featured a guy doing one-tenth as much violence to a girl would likely result in the party responsible for it being drawn and quartered. But I don't recall hearing any protests over this video's depiction a woman whaling away on a couple of males:
Labels: 2 or 3 lines, Chester French, Entourage, Mark Wahlberg, She Loves Everybody
Alan Price – "O Lucky Man!" (1973)
If you've got the secret
Just try not to blow it
Stay a lucky man!
A couple of weeks ago, the Washington Post Magazine featured a short story by Alice McDermott titled "Gloria," which was about a Thanksgiving dinner that was similar in many ways to the one at my house earlier today. Click here to read that story.
Alice McDermott
The host of the fictional dinner in "Gloria" was a successful man named Richard. The dinner was attended by his adult children and grandchildren:
They were a happy family. His children, and their children were thriving.
Before everyone began to eat, Richard rose to give a Thanksgiving toast, a "sentimental (and, yes, self-congratulatory) enumeration of their many talents, triumphs [and] joys."
Richard ended his toast by saying, "We are truly blessed" – which was not what he had planned to say:
He had intended to say "lucky," even to rap his knuckles on the table as he spoke. But he said "blessed" instead.
Richard is seated next to his son Ryan's fiancée, a poised and beautiful young woman named Gloria whom he has only recently met. Once everyone has had his or her fill of turkey, the grandchildren are allowed to leave the table and play in the family room while the dishes are cleared and dessert is prepared.
During this interval between dinner and dessert, Richard learns that when Gloria was only 13, her mother began to show signs of early-onset Alzheimer's. Her father eventually quit his job so he could care for her himself in their home.
When Gloria was a junior in college, her father died from a heart attack while making breakfast for her mother. Most people attributed his heart attack to the stress of caring for his wife.
After her father's death, Gloria dropped out of college temporarily so she could care for her mother: "I couldn't give her to strangers, either," she explains.
Gloria talks about what good, kind people her parents were – and explains why she is an only child:
They wanted to have a pack of kids, but things didn't work out. My mother lost four babies before she had me.
Next, she questioned Richard's use of "blessed" in his pre-dinner toast:
I don't understand people who think they have been blessed. That God somehow favors them because they're good people, or they worked hard. My parents were good people who worked hard. They deserved to grow old together, to see their grandchildren. . . . But I guess we weren't blessed the way you guys are, by whoever it is who does the blessing.
Ryan agrees with his future wife, opining that his family – in particular, his father – may be "too self-satisfied about their own good fortune, too oblivious to the troubles of others." He tells his father, "You did sound kind of smug."
Later, as Richard's youngest granddaughter sits quietly in his lap, he sees Gloria watching the two of them. She's smiling, "but with a certain arrogance":
As if her sorrow had made her prescient. As if she saw the end of his luck somewhere, if not in his own fortunate life then in his children's, his children's children's. As if she understood, but he did not, that it would take no more than a breath, a loosened blood clot, a bad gene – the cold work of some invisible hand, striking unexpectedly from out of darkness – to put an end to it all, his happiness, his complacency, his many blessings.
Owen Freeman's illustration for "Gloria"
Thanksgiving may be my favorite holiday. We host Thanksgiving dinner every year, and we always have a good-sized crowd. Today, there were a total of 20 of us in attendance – three of my four kids (plus two of their spouses), assorted in-laws, and a half-dozen nieces and nephews.
I'm the Richard of the family, so it falls to me to make brief pre-dinner remarks every year. Usually those remarks are sort of half-toast, half-prayer.
Like Richard, I've used the word "blessed" in my Thanksgiving remarks.
I believed I'm blessed, but not because I've done something to deserve my blessings – to the contrary. I suffer at times from arrogance, and complacency, and smugness. But I'm not so arrogant and complacent and smug to think that I've earned the blessings I've been given.
Humility may not be my strong suit, but I can't feel anything except humility when I think about the extraordinary gifts I've been given – above all else, my four children. I fall so far short of deserving them that I would have to be the world's biggest fool to think otherwise.
In the story, Richard intended to say "lucky," but said "blessed" instead. His choice of words matters because "it was a toast he had stood to offer, a Thanksgiving toast. No one had asked him for a prayer."
I agree that "blessed" implies that your good fortune has come from God, while "lucky" lacks any religious connotation.
But other than that difference, I think the words are interchangeable. I might describe myself as either "blessed" or "lucky" to express the same important truth – which is that I have been given much more than I deserve to have been given.
I don't know why that is. But I do know that I can't count on that good fortune to continue, because things can change in an instant.
By the end of "Gloria," Richard is less complacent than he was at the beginning of the story. After hearing the story of Gloria's life, he appreciates that all it takes is "a loosened blood clot, a bad gene . . . to put an end to it all."
Gloria has already learned that lesson the hard way. Richard will no doubt have a similar experience sooner or later.
But for the time being, Richard and his family have been spared the kind of sadness that Gloria has experienced. Perhaps as a result of his conversation with Gloria, his is more appreciative of his blessings – or his luck, if you prefer. Perhaps I am more appreciative as well for having read the story.
"O Lucky Man!" plays during the opening credit sequence of the 1973 movie of the same name. Alan Price, who is best-known for his extraordinary keyboard work on the Animals' "House of the Rising Sun," wrote and performed the score for the movie.
Contrary to Price's lyrics, there's no "secret" that enables you to "stay a lucky man." Luck comes and goes as it pleases, boys and girls.
Here's "O Lucky Man!":
Labels: Alan Price, Alice McDermott, O Lucky Man!, Thanksgiving
April Wine -- "You Could Have Been a Lady" (1972)
They all love you
You're a good girl
Mae West was not very interested in being a good girl.
"When I'm good, I'm very, very good," she once said. "But when I'm bad, I'm better."
She also said this: "There are no good girls gone wrong – just bad girls found out."
And this: "I was once pure as snow . . . but I drifted."
Recently, I was talking to a friend who would like to be more like Mae West. But I just don't think she has it in her to be a bad girl.
We were in a bar in Washington that was so crowded that I wondered if President Obama had issued an executive order reinstating Prohibition the next day and nobody had told me.
The bar was so crowded that I went across the street to another bar, but it was even more crowded than the first one. So I returned to the first bar.
I was stunned by something that happened there later that night. It was a Thursday, so there was an NFL game on the TV above the bar. The sound was off, or at least turned down very low -- not a big deal because you could see the score any time you looked at the screen.
But near the end of the first quarter, the bartender changed channels so the customers could watch President Obama give a speech about immigration.
I have never been in a bar where they switched from an NFL game to a Presidential speech. Even in Washington, DC – where I've lived since 1977 – I've never seen that happen.
It's not like the Chinese Army had just invaded California. The President's announcement that he was taking executive action to shield five million illegal aliens from being deported is hardly the kind of earth-shattering news that justified interrupting a professional football game, even though the Oakland Raiders were one of the teams playing.
The bartender's changing channels was shocking enough, but he also turned the volume up loud enough so the President's remarks could be heard above the roar of the crowd. That was the biggest surprise – I've never seen that happen.
I was at an Irish bar, but I couldn't think of any connection between the Irish and U.S. immigration policy. Irish immigration peaked in the 1850s, when Ireland was devastated by the "Irish Potato Famine."
Irish immigrants on the way to America
I don't think anyone's trying to keep the Irish out of the country any more – I'm afraid we've lost that battle already – so I'm not sure why people at an Irish bar would really care about what the President had to say about immigration.
Fortunately, President Obama stopped verbally flipping the bird to Congressional Republicans after only 15 minutes or so, so I didn't miss tonight's featured song when it came up on the bar's musical playlist.
The din in the bar was such that I couldn't hear the vocals to April Wine's hit, "You Could Have Been a Lady."
But I could hear the bass line, and that was enough for expert ears like mine to immediately recognize the song.
The pride of Nova Scotia: April Wine
I would have sworn that I had already written about this song, but I would have sworn wrong (and possibly been indicted by a grand jury for perjury). I have a vivid memory of recently reading about April Wine, the best little rock-and-roll band ever to come out of Halifax, Nova Scotia. But it appears that my interest did not result in my putting pen to paper (or fingers to computer keyboard) and posting the resulting hot mess to my wildly successful little blog.
"You Could Have Been a Lady" was a UK for the British funk band Hot Chocolate in 1971. April Wine's cover was a big hit in Canada, and made it to #32 on the U.S. singles chart the following year.
Hot Chocolate's version is pretty good, but it doesn't hold a candle to April Wine's cover -- especially the part near the end where the guitars drop out and the band's members sing "nah-nah-nah-nah-nah-nah" over a hi-hat and tambourine accompaniment.
You'd best believe April Wine is tight, boys and girls – this song is silly.
Here's "You Could Have Been a Lady":
Labels: 2 or 3 lines, April Wine, Hot Chocolate, Irish Potato Famine, You Could Have Been a Lady
Outkast -- "Hey Ya!" (2003)
Y'all don't want to hear me
You just want to dance
"Hey Ya!" topped the Billboard "Hot 100" for nine weeks in the winter of 2003-2004, when my daughters Sarah and Caroline were juniors in high school.
That may explain why it was on the playlist at Sarah's wedding reception last week, and why so many of her high-school and college friends sprinted to the dance floor when the DJ started playing it.
As I watched my daughters' friends dancing to our featured song, I was reminded of the 2005 movie, Wedding Crashers.
Have you seen Wedding Crashers? It's a truly execrable movie about a couple of louts who crash wedding receptions in order to snarf up free food and drink and bag babes.
It will come as no surprise that most of the babes the two louts bagged in the movie were drunk.
It was a case of life imitating art Sarah's reception, where a number of the female guests were posilutely, absotively hammered by the end of the evening.
There are at least two songs about drunk girls that would have been perfect choices for this post. But 2 or 3 lines has already featured LCD Soundsystem's "Drunk Girls" and Kanye West's "Drunk and Hot Girls." So I went with "Hey Ya" instead.
At Sarah's wedding reception
Oddly, none of the guys at the reception acted very drunk. I'm sure some of them were quite inebriated, but none of them kicked off their shoes, raced on to the dance floor, and started writhing around like so many dogs in heat.
I'm happy to say that my daughters were not out of control like some of their friends. That's not to say they abstained. Au contraire, I saw each of them down more than one bottle of beer.
But they limited their beer consumption. So there was no risk they would end up like this girl:
Drunk girl
(My daughters are such classy broads. You'd think they might go for a nice glass of wine, or at least pour those beers into glasses. But no . . . when it comes to drinking, my girls usually choose beer right out of the bottle. I guess the redneck genes my daughters inherited from me were dominant.)
I don't want you to get the wrong impression of Sarah's wedding. Up until the girls got bombed, it was a classy affair.
The wedding itself was at the 200-year-old St. John's Church (Lafayette Square), which was designed by Benjamin Latrobe, who also designed the U.S. Capitol.
St. John's is known as the "Church of the Presidents" because every sitting President since James Madison has attended services at the church.
Here's a picture of Sarah and her soon-to-be husband at the wedding rehearsal:
The weekend of the wedding was a bit chilly for mid-November. Sarah must have been freezing when she posed for photographs in Lafayette Square before the ceremony. But as Frank Zappa once said, "Beauty knows no pain"!
I took this picture of Sarah and her bridesmaids -- two high-school friends, two college friends, and her twin sister Caroline (who had been married only seven weeks earlier) as matron of honor -- just a couple of minutes before we walked down the aisle:
The reception was at the National Museum of Women in the Arts, which was built as a Masonic temple in 1903:
The building was used as a movie theatre -- the Town Theatre -- between 1959 and 1972. Washington author George Pelecanos remembers seeing The Dirty Dozen there with his father, and he later set a scene in one of his books there.
I have to share this photo of Sarah's chocolate Lab puppy, Remington:
Yes, that's Sarah's wedding dress.
"Hey Ya!" was written and produced by André 3000, one of the two principals of the very successful OutKast. As my son Peter has noted in his blog, André 3000 is a dead ringer for Washington Redskins quarterback Robert Griffin III:
André 3000 and Robert Griffin III
Here's "Hey Ya!":
Labels: 2 or 3 lines, André 3000, George Pelecanos, Hey Ya!, National Museum of Women in the Arts, OutKast, Sarah's wedding, St. John's Church (Lafayette Square), Town Theatre
Sugarcubes -- "Hit" (1992)
This wasn't supposed to happen
I was happy by myself
Accidentally you seduced me
I'm in love again
(If I only had a dollar for every woman who has said those words to me, you'd best believe I'd be living high on the hog on Easy Street instead of driving a 2008 Honda Accord with 64,000 miles on it.)
Happy November 21, boys and girls!
You're probably wondering what's the big deal about November 21.
For one thing, on that date in 164 B.C., Judas Maccabeus restored the Temple in Jerusalem, an event that is commemorated every year by the festival of Hannukah.
On November 21, 1783, two crazy French daredevils made the first untethered hot-air balloon flight.
Exactly 94 years after that, Thomas Edison announced that he had invented the phonograph.
Sticking with music-related November 21 events, this date in 1959 was when famed DJ Alan Freed – the man who invented the term "rock and roll" – was fired from WABC-AM in New York City because he refused to certify in writing that he had never accepted payola to play particular records on his radio show.
November 21 is the birthdate of a long list of remarkable individuals, including the French author and philosopher Voltaire, the infamous Western hired gun Tom Horn, surrealist painter René Magritte, Hall of Fame baseball players Stan Musial and Ken Griffey, Jr., Hall of Fame basketballer Earl "The Pearl" Monroe, That Girl star Marlo Thomas, comedy writer-director (Caddyshack, National Lampoon's Vacation, Groundhog Day) Harold Ramis, comedienne and actress Goldie Hawn, and "Call Me Maybe" chanteuse Carly Rae Jepsen.
Today 2 or 3 lines is featuring a song by another notable person born on November 21 – Icelandic singer-songwriter-producer Björk Guõmundsdóttir, who fortunately goes by plain old "Björk."
Baby Björk
Björk was born in Reykjavík, Iceland in 1965. Her mother was a political activist and her father was a union leader. When they got divorced, she and her mother moved to a hippie commune.
When Björk was six, she enrolled at a Reykjavík music school where she studied classical piano and flute. After she sang Tina Charles's 1976 hit, "I Love to Love" at a school recital, her teachers sent a recording of her singing to Iceland's only radio station. (I wonder what Icelanders back then did with all the other pushbuttons on their car radios?)
After hearing that recording, a record company offered Björk a recording contract. Her self-titled debut, Björk, was recorded and released in Iceland in December 1977, when she was barely twelve years old.
During her teens, Björk formed an all-girl punk band called Spit and Snot. In 1980, she formed a jazz fusion group called Exodus. In 1982, when she was 16, Björk and bassist Jakob Magnússon formed yet another group, Tappi Tíkarrass, which means "Cork the Bitch's Ass" in Icelandic.
(If you're wondering where Björk's mother was during all this, you're not alone. )
A couple of years later, while Björk was touring with a Goth band called Kukl, she published a hand-colored book of poems to make money so she could pay her rent. She also got knocked up by the group's guitarist, whom she married in 1986, when she was 20 years old.
She and her husband then formed the arts collective Smekkleysa ("Bad Taste" in Icelandic). They revamped their band and changed the name to the Sugarcubes, whose first single was released on Björk's 21st birthday.
In the meantime, Björk and her husband got divorced, although they remained in the band together. (His new girlfriend became the Sugarcubes' keyboard player.)
The group's first album sold a million copies, and they appeared on Saturday Night Live in 1988. Björk eventually left the Sugarcubes after the band's third album, Stick Around for Joy, was released in 1992.
After I got my first CD player twenty-odd years ago, I promptly joined one of those "buy-one-get-twelve-free" CD clubs. I chose Stick Around for Joy as one of my free albums on the strength of today's featured song, "Hit," which made it to #1 on the Billboard "Modern Rock Tracks" chart (now the "Alternative Tracks" chart) and got considerable radio play.
I still have that CD, which I don't think I ever listened to all the way through.
In 1996, Björk was the intended victim of a truly bizarre plot. From Wikipedia:
On 12 September 1996, obsessed fan Ricardo Lopéz mailed an acid-spraying letter bomb to Björk's London home and then killed himself, but the package was intercepted by the Metropolitan Police. López filmed himself in the process of making the acid bomb which was intended to severely scar the singer's face and torso. The nearly 18 hours of videotape described López's obsession with Björk, the construction of the device, his thoughts on love and other subjects, including racial remarks against Björk's then-boyfriend Goldie. The video footage continues after his mailing the bomb to Björk's London home and ends as López shaves his head, applies face paint, and commits suicide by shooting himself on camera.
Björk has released seven solo albums since leaving the Sugarcubes. I have four of those albums on my iTunes, and I don't think I've played a single song from any of them.
Björk is much beloved by critics, and she's sold more than 20 million albums as a solo artist. But I just don't get it.
I don't have a problem with weird. But Björk is a little weird even for me.
Here's "Hit":
Labels: Björk, Hit, Sugarcubes
Elvis Costello (ft. Burt Bacharach) -- "Toledo" (1998)
And does anybody in Ohio
Dream of that Spanish citadel?
Toledo, Ohio was founded in 1833 when two existing towns – Port Lawrence and Vistula – merged.
Toledo, Ohio in 1945
It's not clear why the residents of the new city chose to name it after the ancient Spanish city of Toledo. One story is that Washington Irving, who spent several years researching and writing in Spain, suggested the name to his brother, who was a resident of the Ohio Toledo.
Another legend is that the name was suggested by Two Stickney, who caused the only casualty of the "Toledo War" – an otherwise bloodless border dispute between Ohio and Michigan – when he stabbed a Michigan deputy sheriff who was attempting to arrest One Stickney, Two's older brother.
Two Stickney, hero of the Toledo War
(The brothers' father, Benjamin Franklin Stickney – named after his famous great-uncle – said that he named his sons One and Two so they could pick their own names when they grew up, but they stuck with One and Two instead. You can click here if you'd like to read more about the eccentric Benjamin Franklin Stickney.)
Yet another story gives credit for the choice of Toledo to a local merchant who said the name "is easy to pronounce, is pleasant in sound, and there is no other city of that name on the American continent."
Toledo, Spain
(photo by Tnarik Innael)
The original Toledo is an ancient Spanish city with a rich cultural and architectural heritage. Our featured song accurately describes the Spanish Toledo as a "citadel" – the old part of the city is located on a mountaintop overlooking the Tagus River, the longest river on the Iberian Peninsula.
One of Toledo's most famous residents was the artist Doménikos Theotokópoulos, who is better known by his nickname – El Greco ("the Greek").
A presumed self-portrait by El Greco
El Greco was born in 1541 on the Greek island of Crete, which then belonged to the Republic of Venice. After learning to paint in Crete, he moved to Venice and then to Rome, where he opened a workshop. In 1577, he moved to Madrid and then on to Toledo, where he lived until his death in 1614.
The National Gallery of Art in Washington, DC, has seven paintings by El Greco. I recently attended the press preview of a new NGA exhibition marking the 400th anniversary of El Greco's death that features his NGA paintings along with several others from other Washington and Baltimore museums.
Here's Saint Martin and the Beggar:
And here's Madonna and Child with Saint Martina and Saint Agnes:
Those two paintings, both of which are in the NGA's permanent collection, once hung opposite one another, flanking the central altar in the Chapel of Saint Joseph in Toledo, Spain.
Perhaps the most interesting of the eleven works in the exhibition is Laocoön, the only surviving El Greco painting with a mythological subject:
Laocoön was a Trojan priest who warned his countrymen to beware of the Trojan Horse. In the Aeneid, Virgil has Laocoön say these words:
Do not trust the horse, Trojans
Whatever it is, I fear the Greeks even bearing gifts
But Laocoön was punished by a Greek-friendly god -- Athena, Poseidon, or Apollo, depending on the teller of the story -- for his attempt to defeat the Greek subterfuge. Giant sea serpents slithered up from the sea and strangled Laocoön and his two sons.
According to one source, however, Laocoön was actually punished for having sex with his wife on holy ground sacred to the gods.
In any event, Laocoön's warning wasn't heeded and the Greeks' sneak attack on Troy was successful.
Art historians believe that El Greco's painting was inspired by this ancient sculpture of Laocoön and his sons, which was excavated in Rome 1506 and is now on display in one of the Vatican museums:
El Greco's Laocoön sets the scene outside the gates of Toledo. Toledo is featured in a number of El Greco's paintings, including several that depict Biblical scenes that took place far away from Spain.
El Greco's only two surviving landscapes both depict Toledo. "View of Toledo," which is owned by the Metropolitan Museum of Art in New York City, is a dramatic painting that takes some liberties with the actual configuration of the city's buildings:
The National Gallery of Art's El Greco exhibition can be viewed in the NGA's West Building through February 16, 2015. Click here to learn more.
"Toledo" is from the 1998 album Painted from Memory, which features a dozen songs co-written by Elvis Costello and Burt Bacharach.
Here's a video of a live performance of "Toledo":
Click below to buy the version of the song that appeared on Bill Frisell's 1999 album, The Sweetest Punch, which consists of jazz arrangements of the Painted from Memory songs. Most of the tracks on that album are instrumentals, but Costello did sing on "Toledo."
Labels: Burt Bacharach, El Greco, Elvis Costello, Laocoön, National Gallery of Art, Toledo, Two Stickney
Frank Sinatra -- "The Way You Look Tonight" (1964)
There is nothing for me but to love you
And the way you look tonight
Seven weeks ago, 2 or 3 lines featured "Summer Wind," a Frank Sinatra classic that was the song that my daughter Caroline and I danced to at her September 28 wedding reception.
Today is my daughter Sarah's wedding, which will take place at St. John's Episcopal Church/Lafayette Square, in Washington, DC. St. John's is often called "The Church of the Presidents" because every sitting president since James Madison has attended services there.
More important to me is the fact that St. John's is the church where Sarah and her siblings were baptized. (Sarah's late grandfather was the rector there for 30-plus years.)
St. John's/Lafayette Square
Later tonight, Sarah and I will be dancing to "The Way You Look Tonight," an Academy Award-winning song song that was originally sung by Fred Astaire to Ginger Rogers in Swing Time, the 1936 musical comedy that most critics believe is the best of the Astaire-Rogers movies.
Here's the scene where Fred sings "The Way You Look Tonight" to Ginger:
No one will mistake me for Fred Astaire when I take the dance floor at the National Museum of Women in the Arts in downtown Washington, DC, for the traditional father-daughter dance.
Women in the Arts
And to be honest, no one will mistake Sarah for Ginger Rogers. But it goes without saying that there's no one I'd rather dance with tonight than her.
I settled on "The Way You Look Tonight" for our dance pretty quickly. It would have been nice to dance to a song with her name in the title, of course, but none of the "Sarah" songs I'm familiar with really tempted me.
Inside the museum
They don't write songs like "The Way You Look Tonight" any more.
The music for "The Way You Look Tonight" was composed by Jerome Kern, who is best remembered as the composer of the musical Show Boat and the oft-recorded song, "Smoke Gets in Your Eyes."
The lyrics were written by Dorothy Fields, one of the first successful female Tin Pan Alley songwriters. Her hits include "On the Sunny Side of the Street" and "I Can't Give You Anything But Love."
Jerome Kern and Dorothy Fields
I almost began this post by quoting these lines from the first verse of "The Way You Look Tonight":
Some day, when I'm awfully low
When the world is cold
I will feel a glow just thinking of you
I think every father who is fortunate enough to have been blessed with one or more daughters would agree with that sentiment. No matter how bad things get in my life, thinking of my daughters always brings me joy.
Sarah and Caroline (age 9)
But I couldn't resist leading with this line from the song's second verse:
Ever since Sarah was born, there was nothing for me but to love her.
Sarah (in 2009)
Sarah is and always has been beautiful. But the way she looks is just the icing on the cake.
The way she looks tonight is so much less important than the way she is inside. That's why there is nothing for me but to love her.
We'll dance to Rod Stewart's recording of "The Way You Look Tonight":
I like the Sinatra version better, but its tempo is a little too fast for us to dance to:
Click below to buy that version of the song from Amazon:
Labels: Dorothy Fields, Frank Sinatra, Jerome Kern, Rod Stewart, Sarah, The Way You Look Tonight
Cowboy Junkies -- "Anniversary Song" (1993)
And I don't know how I survived those days
Before I held your hand
I first heard about the Cowboy Junkies years ago, but I've never actually listened to any of their music.
Their 1988 album, The Trinity Session, made a lot of "ten best albums of the year" lists. It was recorded live, using only one microphone, at the historic Church of the Holy Trinity in Toronto. The Trinity Sessions was not mixed, overdubbed, or otherwise edited – what they played is what you get.
The Cowboy Junkies
The Cowboy Junkies' music has been described as alt-country, country rock, folk rock, blues rock, indie rock, and "Americana" (despite the fact that they are Canadian). In other words, no one knows how the hell to describe them.
Suffice it to say that The Trinity Sessions includes covers of Hank Williams and Patsy Cline songs but also a cover of the Velvet Underground's "Sweet Jane." None of those covers sound anything like the originals, mostly because the tempos on the album are (in the words of the Allmusic review of the album) "heroin-slow."
Toronto's Church of the Holy Trinity
The Cowboy Junkies' guitarist, Michael Timmins, persuaded his sister Margo to become the group's lead vocalist despite the fact that she had never sung in public before. (A third Timmins sibling is the group's drummer.) Margo was so shy at first that she routinely stood with her back to the audience as she sang.
According to Wikipedia, the refrigerator in the old farmhouse where Margo lives with her husband and son is covered with pictures of celebrities she has met over the years, including Sean Penn, Sylvester Stallone, Molly Ringwald, Meat Loaf, and Bruce Springsteen.
Margo Timmons in 1990
Margo has quite the crush on Springsteen. When she got married, she told her husband that if Bruce ever wanted her, she "would be his." Margo once made People magazine's "50 Most Beautiful People" list, so maybe she's got a shot.
"Anniversary Song," which was released on the group's Pale Sun Crescent Moon album in 1993, is a little over top when it comes to lyrics.
Here are the song's first lines:
Have you ever seen a sight as beautiful
As that of the rain-soaked purple
Of the white birch in the spring?
Do white birches really turn purple when they get rained on?
Here are the next lines:
Have you ever felt more fresh or wonderful
Than on a warm fall night under a mackerel sky
The smell of grapes on the wind?
In case you don't know, a mackerel sky refers to a sky mostly covered by altocumulus clouds because such a sky is said to resemble a mackerel's scales.
I don't see that myself, but maybe you do:
A mackerel sky
A mackerel sky is a sign of an old, disintegrating weather front, and usually indicates dry weather. Hence, the old saying "Mackerel in the sky, three days dry." (I'm sure you've heard that old saying many, many times.)
But let's not get distracted and forget what follows the "mackerel sky" reference in the song: "The smell of grapes on the wind"?
Songwriter Michael Timmins eventually calmed down and wrote some nice, simple lines. For example:
As a face in a crowd of people
That lights up just for you?
As when you wake by the side of that boy or girl
Who has pledged their love to you?
Much better than purple rain-soaked birches and mackerel skies, n'est-ce pas?
So why am I featuring "Anniversary Song" today? After all, we just celebrated the 5th anniversary of 2 or 3 lines on November 1, didn't we?
Cyril Jordan and Chris Wilson
of the Flamin' Groovies --
exactly one year ago today
Yes, we did. But today is the anniversary of my attending the Flamin' Groovies show right here in Your Nation's Capital. Of course, that wasn't as big a deal as the 5th anniversary of my wildly popular little blog, but it was still a very big deal.
Click here to read all about that concert.
"Anniversary Song" isn't a great song, but it seemed like a better choice than the alternatives.
For example, there's "The Anniversary Song," which was first recorded by Al Jolson in 1947 and subsequently covered by everyone from Dinah Shore to Guy Lombardo to Rosemary Clooney to Frank Sinatra.
The music used for "The Anniversary Song" was a waltz originally composed by the Romanian Ion Ivanovici in 1880. He gave it the name "Waves of the Danube," and it is sometimes confused with Johann Strauss's much more famous waltz, "The Blue Danube." (To further complicate matters, "The Anniversary Song" – which is a waltz – is sometimes confused with "The Anniversary Waltz.")
Here are the first two lines of "The Anniversary Song":
Oh, how we danced on the night we were wed
We vowed our true love, though a word wasn't said
When I was a kid, I would occasionally accompany my parents on their Saturday-night excursions to Hidden Acres, a supper club in my hometown (Joplin, Missouri).
Hidden Acres had a two-man dance combo that would play requests, and every time they were asked to play a song for a couple celebrating a wedding anniversary, the pianist would preface the request by singing a slightly modified snippet of "The Anniversary Song":
We danced and we danced, 'cause our folks had the bed
Here's "Anniversary Song":
Labels: Anniversary Song, Cowboy Junkies, Flamin' Groovies, Hidden Acres, Ion Ivanovici, Waves of the Danube
David Bowie -- "Five Years" (1972)
Arbors -- "The Letter" (1968)
Arbors -- "I Can't Quit Her/For Emily, Whenever I ...
Frank Sinatra -- "The Way You Look Tonight" (1964)...
Elvis Costello (ft. Burt Bacharach) -- "Toledo" (1...


On September 14-16, 2018 the annual CureFest for Childhood Cancer event returns to Washington D.C. Join us on a mission to make childhood cancer a priority. Children deserve better and less toxic treatments. Thousands of people who come to the event, over 250 of advocacy organizations and foundations, and survivors, parents and siblings will participate in advocacy, a rally and a walk, a candlelight vigil, and will enjoy kids' activities and music. You can learn more here. Click on Free Registration to see the full schedule of events. The event will be held in front of the Capitol on the National Mall. You will find Kids v Cancer in the legislative tent.


http://wordpress.org/extend/plugins/bbpress-direct-quotes/ – Does what it says on the tin.
http://wordpress.org/extend/plugins/bbpress-unread-posts/ – We're aware of existing plugins. But to maintain the same experience for our users it seemed more appropriate to roll our own. If some version of "Unread Posts" comes to bbPress core we'll probably readjust to that.
http://wordpress.org/extend/plugins/bbpress-post-ratings/ – This was made to fill in for BuddyPress Rate Forum Posts. We successfully converted all of our old ratings to bbPress. We have a plugin for that as well, though since it's an edge-case thing we haven't published it. Feel free to message me if you need this converter for your site.
Please be aware that @destroflyer cannot actively support these plugins (legitimate bug reports are welcome of course) since their original intent was for in-house use, and he's making them public as a courtesy.
Thank you for these wonderful plugins and kudos to destroflyer.
I have a quick bug report about bbPress Direct Quote in that the citation link is for jmonkeyengine. Obviously it should be pulling the data from our sites.
thanks @xmasons , I've notified destro about it.
Thanks for reporting, totally forgot about it.
Thanks for the update. It works great.
Seriously, thanks for these plugins. They've filled a role that I've been looking for a while.
THANK YOU SO MUCH FOR CREATING THESE PLUGINS. Some of these have been on my To Do list for ages. Thank you again, all are working terrifically. Really helped me out here! Kudos.
So far the quotes plugin works amazing.
Any idea how to fix this? (I will donate to the cause.. glad to see someone putting out new plugins to make bbpress more like a normal forum).
@destroflyer – If you can help out, i'll be checking this page.. mention me and post up a paypal account for donations for the support.
@ridecbrcom – What version of bbPress do you use?
We use 2.0.3 and can't upgrade yet until we work out theme issues. The latest BBpress completely breaks our theme and makes the site un-usable. We're working on a new theme but I was hoping I could get these to work without it.
Pretty neat. Thanks y'all for making and sharing these.
I don't suppose you guys have a plugin to display the top voted posts?
@ridecbrcom-1 Supporting older bbPress versions is not within our scope I'm afraid.
@johnjamesjacoby 'least we could do!
@limitx3m nope, and it's not likely to be made either. Votes on our forum are applied much like on reddit: some "go gold" because they shared quality content, while some might've just cracked a good joke. We would need a different voting system altogether (for which there are long-term plans in place) to make such a thing valuable – i.e. for our purposes, "top posts" should be the informative ones, not the funny ones, as newcomers probably wouldn't get most of the jokes anyhow.
Hi and thanks for the great plugin.
I have a problem when new topics created the icon doesn't change.
I tested with new topic creation from Key master, Moderator, Participant.
Perhaps some type of "Moderation" feature would be useful so that only certain top content could be voted?
Sorry, I was talking about the bbpress-unread-posts plugin!
@matrixd did you test on the default twentytwelve theme to see if it works the same way there?
@limitx3m perhaps, but you're being very vague here ^^ What did you have in mind exactly?
The problem was the theme! Now it works.
I have a problem with the read/unread icons. If i view a toppic and the last post is less than two hours created, then i still have an unread icon. If i view a toppic, which its last post is more than two hours posted then it functions well and it shows the read icon. What should i do to fix it?
Hmmm, that's strange. We haven't experienced anything like that on our site. Are you running any kind of caching or minification plugin?
Hi Erlend, I found where is the problem, but I dont know the solution!
In WordPress in General settings I have setup the time of my country (Greece) which is +2 hours UTC.
If I change to UTC the problem with unread icons solved, but I have wrong time in my bbpress posts.
Is something you can do?
We haven't been able to reproduce this bug on our own site yet. I'll let you know if we find anything.
I came across little bug/logical inconsistency with the direct quote plugin.
When used along with "bbPress threaded replies" plugin, the quoted reply created responds to the main (as top level) as opposed to the one that has been quoted, which is wrong.
That is, currently it's like this.
Thanks for reporting. However, for now, Threaded Replies is custom plugin functionality that falls outside of our scope. If you can't fix this yourself you'll probably have to wait for bbPress 2.4, as it is my understanding that Threaded Replies will be merged into core by then.
Actually, in further testing I realized that it does multi-quote too. Now if that's the case, there will not be a unique parent comment to latch the quoted comment, in which case, the present logic is the way to go.
Thanks for these great and very much needed plugins.
The quote plugin doesn't work if the WP Editor is enabled and the currently selected pane is the preview/view pane. Only if the source code pane is selected, will the quote be inserted.