text:
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "extensions/browser/api/networking_private/networking_private_chromeos.h"

#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/callback.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/shill_manager_client.h"
#include "chromeos/login/login_state.h"
#include "chromeos/network/device_state.h"
#include "chromeos/network/managed_network_configuration_handler.h"
#include "chromeos/network/network_activation_handler.h"
#include "chromeos/network/network_connection_handler.h"
#include "chromeos/network/network_device_handler.h"
#include "chromeos/network/network_event_log.h"
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
#include "chromeos/network/network_util.h"
#include "chromeos/network/onc/onc_signature.h"
#include "chromeos/network/onc/onc_translator.h"
#include "chromeos/network/onc/onc_utils.h"
#include "chromeos/network/portal_detector/network_portal_detector.h"
#include "components/onc/onc_constants.h"
#include "content/public/browser/browser_context.h"
#include "extensions/browser/api/networking_private/networking_private_api.h"
#include "extensions/browser/extensions_browser_client.h"
#include "third_party/cros_system_api/dbus/service_constants.h"

using chromeos::DeviceState;
using chromeos::NetworkHandler;
using chromeos::NetworkStateHandler;
using chromeos::NetworkTypePattern;
using chromeos::ShillManagerClient;
using extensions::NetworkingPrivateDelegate;

namespace private_api = extensions::api::networking_private;

namespace {

chromeos::NetworkStateHandler* GetStateHandler() {
  return NetworkHandler::Get()->network_state_handler();
}

chromeos::ManagedNetworkConfigurationHandler* GetManagedConfigurationHandler() {
  return NetworkHandler::Get()->managed_network_configuration_handler();
}

bool GetServicePathFromGuid(const std::string& guid,
                            std::string* service_path,
                            std::string* error) {
  const chromeos::NetworkState* network =
      GetStateHandler()->GetNetworkStateFromGuid(guid);
  if (!network) {
    *error = extensions::networking_private::kErrorInvalidNetworkGuid;
    return false;
  }
  *service_path = network->path();
  return true;
}

bool GetUserIdHash(content::BrowserContext* browser_context,
                   std::string* user_hash,
                   std::string* error) {
  std::string context_user_hash =
      extensions::ExtensionsBrowserClient::Get()->GetUserIdHashFromContext(
          browser_context);

  // Currently Chrome OS only configures networks for the primary user.
  // Configuration attempts from other browser contexts should fail.
  if (context_user_hash != chromeos::LoginState::Get()->primary_user_hash()) {
    // Disallow class requiring a user id hash from a non-primary user context
    // to avoid complexities with the policy code.
    LOG(ERROR) << "networkingPrivate API call from non primary user: "
               << context_user_hash;
    *error = "Error.NonPrimaryUser";
    return false;
  }
  *user_hash = context_user_hash;
  return true;
}

void AppendDeviceState(
    const std::string& type,
    const DeviceState* device,
    NetworkingPrivateDelegate::DeviceStateList* device_state_list) {
  DCHECK(!type.empty());
  NetworkTypePattern pattern =
      chromeos::onc::NetworkTypePatternFromOncType(type);
  NetworkStateHandler::TechnologyState technology_state =
      GetStateHandler()->GetTechnologyState(pattern);
  private_api::DeviceStateType state = private_api::DEVICE_STATE_TYPE_NONE;
  switch (technology_state) {
    case NetworkStateHandler::TECHNOLOGY_UNAVAILABLE:
      if (!device)
        return;
      // If we have a DeviceState entry but the technology is not available,
      // assume the technology is not initialized.
      state = private_api::DEVICE_STATE_TYPE_UNINITIALIZED;
      break;
    case NetworkStateHandler::TECHNOLOGY_AVAILABLE:
      state = private_api::DEVICE_STATE_TYPE_DISABLED;
      break;
    case NetworkStateHandler::TECHNOLOGY_UNINITIALIZED:
      state = private_api::DEVICE_STATE_TYPE_UNINITIALIZED;
      break;
    case NetworkStateHandler::TECHNOLOGY_ENABLING:
      state = private_api::DEVICE_STATE_TYPE_ENABLING;
      break;
    case NetworkStateHandler::TECHNOLOGY_ENABLED:
      state = private_api::DEVICE_STATE_TYPE_ENABLED;
      break;
  }
  DCHECK_NE(private_api::DEVICE_STATE_TYPE_NONE, state);
  scoped_ptr<private_api::DeviceStateProperties> properties(
      new private_api::DeviceStateProperties);
  properties->type = private_api::ParseNetworkType(type);
  properties->state = state;
  if (device && state == private_api::DEVICE_STATE_TYPE_ENABLED)
    properties->scanning.reset(new bool(device->scanning()));
  device_state_list->push_back(properties.Pass());
}

void NetworkHandlerDictionaryCallback(
    const NetworkingPrivateDelegate::DictionaryCallback& callback,
    const std::string& service_path,
    const base::DictionaryValue& dictionary) {
  scoped_ptr<base::DictionaryValue> dictionary_copy(dictionary.DeepCopy());
  callback.Run(dictionary_copy.Pass());
}

void NetworkHandlerFailureCallback(
    const NetworkingPrivateDelegate::FailureCallback& callback,
    const std::string& error_name,
    scoped_ptr<base::DictionaryValue> error_data) {
  callback.Run(error_name);
}

void RequirePinSuccess(
    const std::string& device_path,
    const std::string& current_pin,
    const std::string& new_pin,
    const extensions::NetworkingPrivateChromeOS::VoidCallback& success_callback,
    const extensions::NetworkingPrivateChromeOS::FailureCallback&
        failure_callback) {
  // After RequirePin succeeds, call ChangePIN iff a different new_pin is
  // provided.
  if (new_pin.empty() || new_pin == current_pin) {
    success_callback.Run();
    return;
  }
  NetworkHandler::Get()->network_device_handler()->ChangePin(
      device_path, current_pin, new_pin, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

}  // namespace

////////////////////////////////////////////////////////////////////////////////

namespace extensions {

NetworkingPrivateChromeOS::NetworkingPrivateChromeOS(
    content::BrowserContext* browser_context,
    scoped_ptr<VerifyDelegate> verify_delegate)
    : NetworkingPrivateDelegate(verify_delegate.Pass()),
      browser_context_(browser_context),
      weak_ptr_factory_(this) {}

NetworkingPrivateChromeOS::~NetworkingPrivateChromeOS() {
}

void NetworkingPrivateChromeOS::GetProperties(
    const std::string& guid,
    const DictionaryCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string service_path, error;
  if (!GetServicePathFromGuid(guid, &service_path, &error)) {
    failure_callback.Run(error);
    return;
  }

  std::string user_id_hash;
  if (!GetUserIdHash(browser_context_, &user_id_hash, &error)) {
    failure_callback.Run(error);
    return;
  }

  GetManagedConfigurationHandler()->GetProperties(
      user_id_hash, service_path,
      base::Bind(&NetworkHandlerDictionaryCallback, success_callback),
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::GetManagedProperties(
    const std::string& guid,
    const DictionaryCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string service_path, error;
  if (!GetServicePathFromGuid(guid, &service_path, &error)) {
    failure_callback.Run(error);
    return;
  }

  std::string user_id_hash;
  if (!GetUserIdHash(browser_context_, &user_id_hash, &error)) {
    failure_callback.Run(error);
    return;
  }

  GetManagedConfigurationHandler()->GetManagedProperties(
      user_id_hash, service_path,
      base::Bind(&NetworkHandlerDictionaryCallback, success_callback),
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::GetState(
    const std::string& guid,
    const DictionaryCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string service_path, error;
  if (!GetServicePathFromGuid(guid, &service_path, &error)) {
    failure_callback.Run(error);
    return;
  }

  const chromeos::NetworkState* network_state =
      GetStateHandler()->GetNetworkStateFromServicePath(
          service_path, false /* configured_only */);
  if (!network_state) {
    failure_callback.Run(networking_private::kErrorNetworkUnavailable);
    return;
  }

  scoped_ptr<base::DictionaryValue> network_properties =
      chromeos::network_util::TranslateNetworkStateToONC(network_state);

  success_callback.Run(network_properties.Pass());
}

void NetworkingPrivateChromeOS::SetProperties(
    const std::string& guid,
    scoped_ptr<base::DictionaryValue> properties,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string service_path, error;
  if (!GetServicePathFromGuid(guid, &service_path, &error)) {
    failure_callback.Run(error);
    return;
  }

  GetManagedConfigurationHandler()->SetProperties(
      service_path, *properties, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::CreateNetwork(
    bool shared,
    scoped_ptr<base::DictionaryValue> properties,
    const StringCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string user_id_hash, error;
  // Do not allow configuring a non-shared network from a non-primary user.
  if (!shared && !GetUserIdHash(browser_context_, &user_id_hash, &error)) {
    failure_callback.Run(error);
    return;
  }

  GetManagedConfigurationHandler()->CreateConfiguration(
      user_id_hash, *properties, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::ForgetNetwork(
    const std::string& guid,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string service_path, error;
  if (!GetServicePathFromGuid(guid, &service_path, &error)) {
    failure_callback.Run(error);
    return;
  }

  GetManagedConfigurationHandler()->RemoveConfiguration(
      service_path, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::GetNetworks(
    const std::string& network_type,
    bool configured_only,
    bool visible_only,
    int limit,
    const NetworkListCallback& success_callback,
    const FailureCallback& failure_callback) {
  NetworkTypePattern pattern =
      chromeos::onc::NetworkTypePatternFromOncType(network_type);
  scoped_ptr<base::ListValue> network_properties_list =
      chromeos::network_util::TranslateNetworkListToONC(
          pattern, configured_only, visible_only, limit);
  success_callback.Run(network_properties_list.Pass());
}

void NetworkingPrivateChromeOS::StartConnect(
    const std::string& guid,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string service_path, error;
  if (!GetServicePathFromGuid(guid, &service_path, &error)) {
    failure_callback.Run(error);
    return;
  }

  const bool check_error_state = false;
  NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork(
      service_path, success_callback,
      base::Bind(&NetworkingPrivateChromeOS::ConnectFailureCallback,
                 weak_ptr_factory_.GetWeakPtr(), guid, success_callback,
                 failure_callback),
      check_error_state);
}

void NetworkingPrivateChromeOS::ConnectFailureCallback(
    const std::string& guid,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback,
    const std::string& error_name,
    scoped_ptr<base::DictionaryValue> error_data) {
  // TODO(stevenjb): Temporary workaround to show the configuration UI.
  // Eventually the caller (e.g. Settings) should handle any failures and
  // show its own configuration UI. crbug.com/380937.
  if (ui_delegate()->HandleConnectFailed(guid, error_name)) {
    success_callback.Run();
    return;
  }
  failure_callback.Run(error_name);
}

void NetworkingPrivateChromeOS::StartDisconnect(
    const std::string& guid,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback) {
  std::string service_path, error;
  if (!GetServicePathFromGuid(guid, &service_path, &error)) {
    failure_callback.Run(error);
    return;
  }

  NetworkHandler::Get()->network_connection_handler()->DisconnectNetwork(
      service_path, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::StartActivate(
    const std::string& guid,
    const std::string& specified_carrier,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback) {
  const chromeos::NetworkState* network =
      GetStateHandler()->GetNetworkStateFromGuid(guid);
  if (!network) {
    failure_callback.Run(
        extensions::networking_private::kErrorInvalidNetworkGuid);
    return;
  }

  std::string carrier(specified_carrier);
  if (carrier.empty()) {
    const chromeos::DeviceState* device =
        GetStateHandler()->GetDeviceState(network->device_path());
    if (device)
      carrier = device->carrier();
  }
  if (carrier != shill::kCarrierSprint) {
    // Only Sprint is directly activated. For other carriers, show the
    // account details page.
    if (ui_delegate())
      ui_delegate()->ShowAccountDetails(guid);
    success_callback.Run();
    return;
  }

  if (!network->RequiresActivation()) {
    // If no activation is required, show the account details page.
    if (ui_delegate())
      ui_delegate()->ShowAccountDetails(guid);
    success_callback.Run();
    return;
  }

  NetworkHandler::Get()->network_activation_handler()->Activate(
      network->path(), carrier, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::SetWifiTDLSEnabledState(
    const std::string& ip_or_mac_address,
    bool enabled,
    const StringCallback& success_callback,
    const FailureCallback& failure_callback) {
  NetworkHandler::Get()->network_device_handler()->SetWifiTDLSEnabled(
      ip_or_mac_address, enabled, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::GetWifiTDLSStatus(
    const std::string& ip_or_mac_address,
    const StringCallback& success_callback,
    const FailureCallback& failure_callback) {
  NetworkHandler::Get()->network_device_handler()->GetWifiTDLSStatus(
      ip_or_mac_address, success_callback,
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

void NetworkingPrivateChromeOS::GetCaptivePortalStatus(
    const std::string& guid,
    const StringCallback& success_callback,
    const FailureCallback& failure_callback) {
  if (!chromeos::NetworkPortalDetector::IsInitialized()) {
    failure_callback.Run(networking_private::kErrorNotReady);
    return;
  }

  chromeos::NetworkPortalDetector::CaptivePortalState state =
      chromeos::NetworkPortalDetector::Get()->GetCaptivePortalState(guid);
  success_callback.Run(
      chromeos::NetworkPortalDetector::CaptivePortalStatusString(state.status));
}

void NetworkingPrivateChromeOS::UnlockCellularSim(
    const std::string& guid,
    const std::string& pin,
    const std::string& puk,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback) {
  const chromeos::NetworkState* network_state =
      GetStateHandler()->GetNetworkStateFromGuid(guid);
  if (!network_state) {
    failure_callback.Run(networking_private::kErrorNetworkUnavailable);
    return;
  }
  const chromeos::DeviceState* device_state =
      GetStateHandler()->GetDeviceState(network_state->device_path());
  if (!device_state) {
    failure_callback.Run(networking_private::kErrorNetworkUnavailable);
    return;
  }
  std::string lock_type = device_state->sim_lock_type();
  if (lock_type.empty()) {
    // Sim is already unlocked.
    failure_callback.Run(networking_private::kErrorInvalidNetworkOperation);
    return;
  }

  // Unblock or unlock the SIM.
  if (lock_type == shill::kSIMLockPuk) {
    NetworkHandler::Get()->network_device_handler()->UnblockPin(
        device_state->path(), puk, pin, success_callback,
        base::Bind(&NetworkHandlerFailureCallback, failure_callback));
  } else {
    NetworkHandler::Get()->network_device_handler()->EnterPin(
        device_state->path(), pin, success_callback,
        base::Bind(&NetworkHandlerFailureCallback, failure_callback));
  }
}

void NetworkingPrivateChromeOS::SetCellularSimState(
    const std::string& guid,
    bool require_pin,
    const std::string& current_pin,
    const std::string& new_pin,
    const VoidCallback& success_callback,
    const FailureCallback& failure_callback) {
  const chromeos::NetworkState* network_state =
      GetStateHandler()->GetNetworkStateFromGuid(guid);
  if (!network_state) {
    failure_callback.Run(networking_private::kErrorNetworkUnavailable);
    return;
  }
  const chromeos::DeviceState* device_state =
      GetStateHandler()->GetDeviceState(network_state->device_path());
  if (!device_state) {
    failure_callback.Run(networking_private::kErrorNetworkUnavailable);
    return;
  }
  if (!device_state->sim_lock_type().empty()) {
    // The SIM needs to be unlocked before the state can be changed.
    failure_callback.Run(networking_private::kErrorSimLocked);
    return;
  }

  // Only set a new pin if require_pin is true.
  std::string set_new_pin = require_pin ? new_pin : "";
  NetworkHandler::Get()->network_device_handler()->RequirePin(
      device_state->path(), require_pin, current_pin,
      base::Bind(&RequirePinSuccess, device_state->path(), current_pin,
                 set_new_pin, success_callback, failure_callback),
      base::Bind(&NetworkHandlerFailureCallback, failure_callback));
}

scoped_ptr<base::ListValue>
NetworkingPrivateChromeOS::GetEnabledNetworkTypes() {
  chromeos::NetworkStateHandler* state_handler = GetStateHandler();

  scoped_ptr<base::ListValue> network_list(new base::ListValue);

  if (state_handler->IsTechnologyEnabled(NetworkTypePattern::Ethernet()))
    network_list->AppendString(::onc::network_type::kEthernet);
  if (state_handler->IsTechnologyEnabled(NetworkTypePattern::WiFi()))
    network_list->AppendString(::onc::network_type::kWiFi);
  if (state_handler->IsTechnologyEnabled(NetworkTypePattern::Wimax()))
    network_list->AppendString(::onc::network_type::kWimax);
  if (state_handler->IsTechnologyEnabled(NetworkTypePattern::Cellular()))
    network_list->AppendString(::onc::network_type::kCellular);

  return network_list.Pass();
}

scoped_ptr<NetworkingPrivateDelegate::DeviceStateList>
NetworkingPrivateChromeOS::GetDeviceStateList() {
  std::set<std::string> technologies_found;
  NetworkStateHandler::DeviceStateList devices;
  NetworkHandler::Get()->network_state_handler()->GetDeviceList(&devices);

  scoped_ptr<DeviceStateList> device_state_list(new DeviceStateList);
  for (const DeviceState* device : devices) {
    std::string onc_type =
        chromeos::network_util::TranslateShillTypeToONC(device->type());
    AppendDeviceState(onc_type, device, device_state_list.get());
    technologies_found.insert(onc_type);
  }

  // For any technologies that we do not have a DeviceState entry for, append
  // an entry if the technolog is available.
  const char* technology_types[] = {::onc::network_type::kEthernet,
                                    ::onc::network_type::kWiFi,
                                    ::onc::network_type::kWimax,
                                    ::onc::network_type::kCellular};
  for (const char* technology : technology_types) {
    if (ContainsValue(technologies_found, technology))
      continue;
    AppendDeviceState(technology, nullptr /* device */,
                      device_state_list.get());
  }
  return device_state_list.Pass();
}

bool NetworkingPrivateChromeOS::EnableNetworkType(const std::string& type) {
  NetworkTypePattern pattern =
      chromeos::onc::NetworkTypePatternFromOncType(type);

  GetStateHandler()->SetTechnologyEnabled(
      pattern, true, chromeos::network_handler::ErrorCallback());

  return true;
}

bool NetworkingPrivateChromeOS::DisableNetworkType(const std::string& type) {
  NetworkTypePattern pattern =
      chromeos::onc::NetworkTypePatternFromOncType(type);

  GetStateHandler()->SetTechnologyEnabled(
      pattern, false, chromeos::network_handler::ErrorCallback());

  return true;
}

bool NetworkingPrivateChromeOS::RequestScan() {
  GetStateHandler()->RequestScan();
  return true;
}

}  // namespace extensions


text:
trending Market Intelligence /marketintelligence/en/news-insights/trending/mlSB_lGsSSp036HQ6gMkdw2 content esgSubNav
Gamehost Q1 profit falls YOY
Gamehost Inc. said its first-quarter normalized net income was 14 Canadian cents per share, a decline of 13.6% from 17 cents per share in the year-earlier period.
Normalized net income, which excludes unusual gains or losses on a pre- and after-tax basis, was C$3.6 million, a decline of 13.6% from C$4.1 million in the prior-year period.
Total revenue fell 8.6% on an annual basis to C$18.1 million from C$19.8 million, and total operating expenses declined 5.7% year over year to C$11.6 million from C$12.3 million.
Reported net income decreased 20.8% from the prior-year period to C$4.2 million, or 17 cents per share, from C$5.3 million, or 21 cents per share.

redpajama_set_name: RedPajamaCommonCrawl


MEPs voted to renew the Connecting Europe Facility (CEF) for the 2021-2027 period to ensure continued development of trans-European transport, energy and telecom networks.
Following Parliament's adoption of its position on the EU's long-term budget (Multiannual Financial Framework – MFF 2021-2027) last week, the Industry, Research and Energy (ITRE) Committee and the Transport and Tourism (TRAN) Committee on Thursday set out their priorities for funding of transport, energy and telecommunication projects to stimulate future growth.
Rapporteur Marian-Jean Marinescu (EPP, RO) said: "Mobility is the basis for growth and jobs. The 2021-2027 CEF (2.0) will deliver more benefits for citizens.
The two Committees voted to increase the budget by almost €6bn compared to the Commission's proposal. CEF transport funds should go towards the completion of the TEN-T corridor, bringing better connectivity and accessibility to citizens across Europe.
Rapporteur Pavel Telicka (ALDE, CZ) said: "CEF is already performing well, but we are nonetheless struggling to deliver when it comes to cross-border projects and synergies. The next MFF is an opportunity to provide additional support to those carrying out such projects.
By focusing on facilitating cooperation and increasing funding, we can support the promotion of cross-border projects and joint ventures, and simplify the framework for synergies.
Rapporteur Henna Virkkunen (EPP, FI) said: "In the new CEF 2.0 we are looking for more synergies between the transport, energy and digital sectors. Taking into account the new climate targets, 60% of CEF funding should invest in projects contributing to climate actions.
Cross-border connections are crucial to complete the energy union and digital single market. The focus of trans-European energy infrastructure is increasingly on electrical interconnections, energy storages and smart grids.
MEPs want the CEF fund to receive €43.85bn in constant (2018) prices, with €33.51bn for transport (including an envisaged transfer of €10bn (€11.26 in current prices) from the Cohesion Fund). While €5.77bn (€6.5bn in current prices) of transport project funding should go towards projects that can adapt the TEN-T networks with a view to enabling civilian-defence dual use of infrastructure, contributing to the development of the Defence Union.
€7.68bn (€8.65bn in current prices) of the total CEF funding should go to energy network projects, including cross-border projects in the field of renewable energy and €2.66bn (€3bn in current prices) to digital network development.
MEPs underlined that they are ready to start negotiations with EU Ministers at any time to reach an agreement before the European elections in May.
The European Parliament plenary will now vote on the decision to start talks with EU Ministers, which can begin once their common position is agreed. MEPs want to make as much progress as possible before the end of this legislative term.


text:
Nato e cresciuto nella Rhodesia Meridionale, Amm gareggiò nella sua ultima stagione per la Federazione della Rhodesia e del Nyasaland.

Carriera
La sua carriera nel campo del motociclismo è iniziata al termine della seconda guerra mondiale in gare organizzate nel suo paese natale e in Sudafrica; i buoni risultati raggiunti gli hanno permesso poi di trasferirsi a gareggiare in Europa, dove fu ingaggiato come pilota ufficiale della Norton nel 1951.

Nel Motomondiale 1951 già lo si vede gareggiare in alcune prove, come il GP di Francia e il GP delle Nazioni, senza conquistare punti per la classifica iridata.

Nelle stagioni successive del motomondiale ha vinto 6 gran premi e nel 1954 si è laureato vicecampione del mondo nelle classi 500 e 350. Tutti i suoi migliori risultati sono stati ottenuto con la Norton. Era tra l'altro uno specialista del Tourist Trophy dove ha conseguito 3 vittorie assolute.

Dopo aver firmato un accordo che lo legava alla MV Agusta per il motomondiale 1955, ha perso la vita in occasione della gara d'apertura della Temporada Romagnola sull'Autodromo di Imola, non valida per il Motomondiale, uscendo rovinosamente di pista alla curva della Rivazza.

Risultati nel motomondiale

Classe 350

Classe 500

Note

Collegamenti esterni

Piloti della classe 350
Piloti della classe 500
Piloti deceduti in competizioni motoristiche

redpajama_set_name: RedPajamaWikipedia


text:
Saudi minister Prince Faisal bin Farhan Al Saud says Riyadh trying to find path to dialogue with Iran
World Mena
Two countries have held five rounds of direct talks hosted by Iraq since last year
Published: January 17, 2023 20:22 Reuters
Saudi Foreign Minister Prince Faisal bin Farhan said a decision by Saudi Arabia and other Gulf states to focus on their economies and development was a "strong signal to Iran and others in the region that there is a pathway beyond traditional arguments and disputes towards joint prosperity Image Credit: AFP file
DAVOS, Switzerland: Saudi Foreign Minister Prince Faisal bin Farhan Al Saud said the kingdom was trying to find a path to dialogue with Iran as the best way to resolve differences.
He said a decision by Saudi Arabia and other Gulf states to focus on their economies and development was a "strong signal to Iran and others in the region that there is a pathway beyond traditional arguments and disputes towards joint prosperity".
Riyadh and Tehran cut ties in 2016 but officials from the two countries have held five rounds of direct talks hosted by Iraq since last year, the last of which was in April, without achieving any diplomatic breakthroughs.
Gulf Arab states are concerned about Iran's nuclear and ballistic missile programmes and network of regional proxies, but want to contain tensions as they focus on economic priorities.
The Saudi foreign minister, speaking at a panel at the World Economic Forum in Davos, also said there was a need to find a route to ending the Russia-Ukraine conflict, otherwise global uncertainty would continue.
"This is complex question, but we will have to talk about how we find a pathway to ending the conflict," he said.
Prince Faisal said attention on the Middle East was also needed, citing Syria as well as regional concerns over "provocative policies" by Israel's new government headed by Benjamin Netanyahu in an alliance with ultra-nationalists.
Netanyahu has pledged to pursue formal Israeli ties with Riyadh to build on normalisation pacts signed with the United Arab Emirates and Bahrain in 2020 under his leadership.
More From Mena
Couple in viral dance video get 10 years in Iran jail
After meeting Abbas, Blinken renews appeal for calm
Cash is now king in Lebanon as banks atrophy
Cleric's aide arrested in restive southeast Iran


EDZAI Isu Trust has suspended its director Tafadzwa Muzondo, who recently appeared in court facing charges of indecent assault after allegedly fondling songbird Pauline Gundidza's breasts during a function in Highfield, Harare last week.
Programmes officer Obrien Makore will be the acting director.
Muzondo was remanded to April 16 on $100 bail when he appeared before Mbare magistrate Stanford Mambanje on Wednesday.
Edzai Isu chairperson Patience Gamuchirai Tawengwa said in a statement yesterday that Muzondo would be on suspension pending the outcome of the court case, with the organisation also conducting its own hearing on the matter.
"The matter is before the courts and as we eagerly await for the outcome, we have suspended him pending the outcome of the case," she said.
Tawengwa said they observed the principle that a person was presumed innocent until proven guilty.
"In that regard, we will not second-guess the courts and will wait on the outcome of the case before issuing out further statements," she said.
Tawengwa said the board was also committed to facilitating the formulation of an arts industry sexual harassment policy under the guidance of the Zimbabwe Women Lawyers Association (ZWLA) and the Zimbabwe Gender Commission (ZGC).
"Over the years, the trust has always intentionally sought to create a safe space for female artistes," she said.
The court heard that after the function, as Gundidza awaited transport with her friends, Mariane Kunonga and Rolland "Boss Kedha" Lunga, Muzondo allegedly remarked that Gundidza had beautiful breasts.
This annoyed the urban groover who then told her friends what had happened.
Kunonga and Boss Kedha allegedly warned the accused that it was not right to comment on someone's breasts without her consent.
It is, however, alleged that Muzondo leaned towards the musician and fondled her breasts before going back to join his crew.
The post Muzondo suspended over indecent assault appeared first on NewsDay Zimbabwe.


MACCLESFIELD community organisations are being invited to find out more about a source of funding...from rubbish.
WREN an Environmental Body who distribute the Landfill Tax credits of Waste Recycling Group plc, are holding a seminar on Tuesday, April 23 in the Capesthorne Room, Town Hall, Macclesfield.
Richard Smith, from the company, said: "We are looking to finance projects that benefit local communities across the borough and are able to help groups looking for funds through the entire application process."
The decision-making process is entirely independent from WREN and features a county panel of local professionals committed to regenerating their local areas.
The type of projects that WREN have already funded across Cheshire include improvements to and establishment of village halls and community centres, play areas, public parks, pathways, cycle routes, restoration of public buildings and educational projects aimed at recycling and sustainable waste management practices.
Organisations keen to attend the seminar can book their place by contacting WREN on 01953 717165.


text:
Bikes Home
Ather Energy announces expansion plans: Power move
Ather Energy has ambitious plans to establish a countrywide sales and charging network
By Pablo Chaterji
Hyundai Grand i10 Nios Review: New & Still Grand
The electric two-wheeler market in India is on the verge of explosive growth, and no manufacturer wants to be caught leaden-footed. Ather Energy, with substantial skin in the game already, recently inaugurated a huge manufacturing facility in Hosur, Tamil Nadu, with an annual capacity of 1.1 lakh scooters and 1.2 lakh battery packs. It has now announced an expansion of its presence across the country.
Ather Energy wants to be present in 50 Indian cities by April 2022, and a year later, it wants to expand to 100 Indian cities. Currently, it operates in 22 cities. Its charging network is also set for expansion, with the Ather Grid fast charging network set to have 500 charging points countrywide by April 2023. Ather has also inaugurated a Space Experience centre in Lajpat Nager, in Delhi, the 10th of its kind. The firm wants to take advantage of the EV subsidies offered by the Delhi government and offer its products at competitive prices.
Other than Ather, Ola Electric has been in the news recently with the announcements of its manufacturing facility and first electric scooter. Hero MotoCorp, TVS and Bajaj are also planning on going electric in a big way. More for us to ride and enjoy, we say.
Suzuki Burgman Street 125 EX Review: A Little Ex-Tra
More from Cars
An Unlikely Adventure: Mahindra Thar To Goa
Cars/ News
2023 BMW X1 launched at the BMW Joytown festival
Toyota opens bookings for the 2023 Innova Crysta
Porsche 718 Cayman GT4 RS launched in India at Rs 2.54 crore
Bikes/ Reviews
Bikes/ News
Hero MotoCorp launches the Xoom 110cc scooter at Rs 68,599
Bikes/ Electric
Ultraviolette F77 Review: Future Ready


Discussion in 'macOS' started by dogbone, Apr 9, 2006.
I thought I had all this permission stuff sorted. I changed everything in my application folder so that all my self installed programs are owned by me and the group is admin.
The owner (me, also an admin user) and Admin both have read and write permissions. Yet when I dropped an updated app into the folder and clicked 'replace' I still got a dialog box telling me I didn't have sufficient privileges!
Do you have sufficient privileges on the /Applications directory itself?
I changed everything in the app folder at the app folder root level.
I wasn't even offered the opportunity to authenticate. It's not a major problem I just trashed the old app first then dropped it in, but I need to understand why this is happening because it shouldn't be.


text:
The Games I Play Today
The majority of my gaming time used to be spent largely with big name titles from large developers. On any given day, I would prefer Halo, Battlefield 3, Assassin's Creed or Mass Effect to smaller titles. Consoles were my primary platforms for play, with my PC serving more as a stereo than anything else.
Times have changed lately. More and more, I've been playing independent titles over large studio games. While I still enjoy playing many major releases like Borderlands 2, the vast majority of my time has been given over to the indie games. Why? For the longest time I couldn't put my finger on it.
It started with a little game called The Maw. Now known as one of Twisted Pixel's flagship games, I first played The Maw when it was part of the debut PAX 10. I was blown away by the polish of the game, not to mention it's fun and adorable gameplay.
Up until The Maw, my understanding of indie games hadn't gone any deeper than the flash games I occasionally perused at Newgrounds.com. Sure, I'd played Castle Crashers, but I'd also played Alien Hominid when it was still just a Newgrounds title. Seeing The Behemoth's game published by Microsoft Game Studios subconsciously eliminated it from what I then understood to be an indie game.
After The Maw, came Braid . Later, I discovered Osmos and Machinarium. Soon after that I discovered the Humble Bundle. Everywhere I turned there was a new game. Botanicula, Amnesia, And Yet it Moves, Hammerfight. It was an unbelievable wealth of games.
I still didn't really understand why I had gravitated towards these indie titles. At least, not until very recently. While it's easy to say that these are all exceptional games, it's not quite enough. What I experience from these games is something very similar to the feelings I had when I first started playing games. It seemed like there were great games all over the place, like I just stumbled over them everywhere I went.
That's what I think I really like about playing all of the independent titles available now. With too many big name franchises, I end up retreading the same concepts and mechanics over and over again. In this sort of Indie explosion, I get to play games in a way I haven't been able to since I was young. I get to make new discoveries, try new mechanics and stories. Every day is a new adventure. I'm spoiled for choice and I couldn't be happier about it.
Posted by Steve H. at 12:21 AM
Labels: braid, Humble Bundle, indie games, the Maw


text:
The Switzerland men's national 3x3 team is a national basketball team of Switzerland, governed by the Fédération Suisse de Basketball. It represents the country in international 3x3 (3 against 3) basketball competitions. They have won no medals.

World Cup record

See also
Switzerland men's national basketball team
Switzerland women's national 3x3 team

References

Switzerland national basketball team
Men's national 3x3 basketball teams


POWER HOUR! — HIIT IT!
Welcome to NYC's premier health, fitness, and wellness networking happy hour!
February 2018 POWER HOUR at Athleta on 18th and 5th.
If you would like to sponsor our next POWER HOUR, please feel free to contact us!
To learn more about POWER HOUR, please feel free to visit our FaceBook group, and follow our POWER HOUR Instagram.


WHAT WE LOVE: - checkered brown tones - versatile DESCRIPTION: Blazer has a brown checkered pattern with colors brown, dark brown and blue it features a notched lapel with 2 buttons down the center. Blazer has one chest slip pocket with two pockets at either hip. Shoulders are slightly padded, cuffs have three buttons. Jacket is fully lined in a mesh brown fabric, not vented in the back.


"A dream does not become a reality through magic; it takes sweat, determination and hard work," said Colin Powell. While this is true, combining education, work and family commitments can be challenging, especially if healthy living is not factored in. As such, there is a need to find a balance so that you lead a fulfilling life as you work towards your career goals. The best ways to attain harmony when studying as a mature student are by managing your time effectively, engaging in leisure activities and committing to a balanced schedule.
You should start by noting down precisely how you are spending your time currently, including the approximate time each errand or study task takes to complete. This illustration can be as simple as using a day planner with hourly boxes where you fill in your activities. Once you have a clear comprehension of your workload, look for areas that are consuming too much time without forgetting to single out tasks you can delegate. For instance, you might realize that you watch too much television or spend a lot of time on chores. Remove and delegate such non-vital activities or downsize the hours you spend on them to make extra time for studying. Additionally, do not feel pressured to participate in all social events around your campus. Instead, find time-conscious activities that recharge you and create space for them in your tight schedule.
Everyone learns differently and therefore, you should adopt the method that works best for you. Similarly, if you are studying to develop your professional skills and hopefully secure a promotion, speak to your boss about it to see if there are learning opportunities available around the job setting. Some employers could even offer incentives as you study, including settling the cost of your education as well as allowing you to use available resources and work-time to study. This is especially essential if you have limited funds and your home does not provide a conducive environment to learn. Studying at work also creates an avenue for you to actively apply the skills that you accrue in your course and this will help to cement your learning process.
Adding studies to your already busy schedule can be overwhelming and make you susceptible to depression and anxiety. Ensuring that you have time for leisure activities that help to regain your energy is paramount. Some of the best ways to effectively use your recharging time include practicing yoga, meditation, getting adequate sleep, and swimming. Also, exercising is not only good for your strength but also therapeutic for your brain. It mitigates stress and teaches your mind to be more accommodating. Once you have successfully learned to manage your stress and pressure, you will become more productive and healthy, according to MentalHealth.
Balancing work, life and study is a demanding lifestyle but also one that many people manage. Essentially, all you need to do is govern your time, make a schedule and spare some time to relax. You will be surprised by how your loved ones are willing to support you.


text:
INTERNATIONAL QUILT PARTNERS
Global Quilt Organizations
Africa (Mozambique, South Africa, Zambia, Zimbabwe)
(Contact this country here)
Asia (Japan, Phillippines, Taiwan, Thailand)
Caribbean (Cuba, Haiti, Jamaica, Puerto Rico)
Europe (Belgium, France, Germany, The Netherlands, Russia, Spain)
Pacific Rim (Australia, New Zealand)
South America (Argentina, Venezuela)
• International AIDS Prevention Initiative
• Sizwe Sonke Quilting Project of South Africa
• Global Network of PWAs
• Jamaican Network of PWAs
View International Quilt
• South Africa
• United Kingdom
Global Quilt encouraged organizations to use the International Quilt to assist them in their HIV/AIDS efforts. Many of these organization participate in Global Quilt's global displays and "loan" portions of their respective countries to help in Global Quilt's efforts to increase global awareness about HIV/AIDS.
Below are countries that Global Quilt and International AIDS Prevention Initiative work with in its displays, panelmaking programs, HIV/AIDS awareness, education, and prevention efforts, and offer technical assistance in social responsibility aims.
For details from each country, please click link of country of interest and you will be directed to information regarding them, programs involved with, and other details about organization.
International AIDS Prevention Initiative
International AIDS Prevention Initiative ("IAPI"), formerly The NAMES Project New York City, was initially opened to reach New York City's own HIV/AIDS population. As New York is the epicenter of HIV/AIDS in the United States, the idea of initially sistering African communities with African-Americans to help assist in prevention/education efforts became a successful partnership. This success has inspired work in the Caribbean, Latin America, Russia, and countries that reflect New York's multi-cultural population.
The organization has expanded its work to other HIV/AIDS high-risk cities within the USA, and develops partnerships with organizations working with disenfranchised populations and their native countries. IAPI developed many of the programs used by its international partners. It will continue to manage these programs and offer programs to USA partners. In collaboration with Global Quilt, it hopes to continue to create and expand new programs for international countries in need.
Sizwe Sonke Quilting Project of South Africa
The Sizwe Sonke Quilting Project of South Africa ("Sizwe Sonke Quilting Project") was founded in 1989 by Carroll Jacobs. Initially interest in panelmaking and HIV/AIDS was very slow. With the technical and financial support of International AIDS Prevention Initiative ("IAPI"), Sizwe Sonke Quilting Project has become an NGO (non-profit) in South Africa, with a dedicated all-volunteer board, donated office space, an alliance of committed schools, churches, organizations, and volunteers. The organization offers panelmaking workshops, and provides outreach presentations in schools, churches, PWA support groups, and communities at-large throughout the Western Cape (one providence in South Africa).
Through these workshops, presentations, and displays Sizwe Sonke has been instrumental in educating South Africans about HIV/AIDS. The organization wanted to develop additional programs to educate, empower, and provide ways to learn about healthy-living choices. Sizwe Sonke continues to grow fulfilling its goals as it fine-tunes its programs.
Global Network of PWAs
Global Network of PWA ("GNP+") is the non-profit NGO, based in the Netherlands. It has been instrumental in helping Global Quilt and International AIDS Prevention Initiative ("IAPI") to provide portions of the International AIDS Memorial Quilt at International AIDS Conferences in Durban, South Africa in 2000, Barcelona, Spain in 2002, and Bangkok, Thailand in 2004. GNP+ co-hosts HIV/AIDS global conferences, and Global Quilt will continue to work with this organization to provide portions of the International Quilt at it's conferences.
Jamaican Network of PWAs
Jamaican Network ("JN+") is the organization that Global Quilt and International AIDS Prevention Initiative has partnered with to introduce the International AIDS Memorial Quilt to this country. Through the support group for PWA (People living with AIDS) in Kingston, Jamaica, portions of the International Quilt has been on display at World AIDS Day events since 2000. Workshops to make panels have also been taking place for the creation of new panels. While the Quilt's remain under the ownership of JN+, the organization kindly offers their panels to Global Quilt and IAPI to tour with throughout the world. With their partnership with Jamaican Red Cross, all organizations continue to assist in awareness, education, prevention, and issues surround stigma and discrimination throughout the country.
If you would like to view the AIDS Memorial Quilt from around the world, Global Quilt has provided links to the following countries that have their Quilts available on-line.


text:
Life notes Scicomm Science
My Foldscope
That there's now a magical device in my pocket that lets me look at a universe folded away in millionths of a meter is amazing.
The cover page of the printed instructions.
It took me twice as long to piece it together as it would've taken a 10-year-old, and quite a bit of twisting and tugging before I got just one slide inside it, but the fact that a Foldscope is a pocket-sized microscope made mostly of paper made up for everything.
Finally got around to building one of these. I'd signed up for it when Manu Prakash's project Microcosmoc first launched sometime in the middle of 2015.
I finally was able to attach the Foldscope to my iPad and, voila, my hair. What's that gooey thing on the side? I'm guessing dandruff.
It wasn't easy to build – I screwed up multiple times before I finally got it right. The printed instructions, as Howard Wolowitz would say, similar to why Sweden doesn't have a space program. A YouTube video helped.
My sample was a short strand of my own hair surrounded by something I think is either dandruff or dirt (or even possibly air trapped between the two layers of cellophane tape used to hold the strand together). It doesn't look like much – but the fact that there's now a magical device in my pocket that lets me look at a universe folded away in millionths of a meter is amazing enough. To express what I'm feeling: I'm sure this quote has been pulled up too many times before but, as it happens, no other combination of words has a patch on the awe they muster. They were penned by the English polymath Robert Hooke, and appear among the last words in his Micrographia (1665):
By the means of Telescopes, there is nothing so far distant but may be represented to our view; and by the help of Microscopes, there is nothing so small, as to escape our inquiry; hence there is a new visible World discovered to the understanding. By this means the Heavens are open'd, and a vast number of new Stars, and new Motions, and new Productions appear in them, to which all the ancient Astronomers were utterly Strangers. By this the Earth it self, which lyes so neer us, under our feet, shews quite a new thing to us, and in every little particle of its matter, we now behold almost as great a variety of creatures as we were able before to reckon up on the whole Universe it self.
The Foldscope is the creation of the Prakash Lab at Stanford University, helmed by a bioengineer named Manu Prakash. It was debuted two years ago in a TED talk Prakash gave. For a brief summary of what motivated its creation and its features, you could watch the talk (below) or read this piece I wrote for The Hindu. For even more details – and wonderful pictures taken by people using Foldscopes the world over – visit the device's dedicated website. Now, my sister and I are off to explore the microcosms that inhabit our house.
Tags Foldscope, Manu Prakash, Micrographia, microscopes, origami
← What's the universe telling us post-LIGO? → Roundup – March 6, 2016


The notion that scholarly work might have its own intrigue and romance is very difficult for a novelist to illustrate. Hours spent gently sorting through old papers in archives don't provide much inherent drama. Yet Byatt figured out a way to get the addictive, dizzying spell of research across in this exceptionally romantic book. It follows a graduate student and a feminist professor who discover that two obscure poets, their mutual obsessions, once actually met – and had a secret affair.
Possession also appears on Kelly Anderson's top five list of books for newlyweds, Rebecca Mead's list of six favorite books that illuminate the Victorian era, Marina Warner's ten top list of fairytales, Ester Bloom's top ten list of fictional feminists, Niall Williams's list of ten of the best books that manage to make heroes out of readers, Kyle Minor's list of fifteen of the hottest affairs in literature, Emily Temple's list of the fifty greatest campus novels ever written, John Mullan's lists of ten of the best fossils in literature, ten of the most memorable libraries in literature, ten of the best fictional poets, ten of the best locks of hair in fiction, ten of the best graveyard scenes in fiction, and ten of the best lawyers in literature, and on Rachel Syme's list of the ten most attractive men in literature, Christina Koning's critic's chart of six top romances, and Elizabeth Kostova's top ten list of books for winter nights.


text:
Hosted By Sean Bianco
Host Sean Bianco brings you a full-length opera featuring great voices from the past and present followed by "Opera Potpourri."
Saturday, 8 p.m. – 12 a.m.
on Music Station
Saturday, February 2, 2019 Permalink
At The Opera, Puccini Double-Bill: Le Villi (The Faries) and Edgar, February 2, 2019
Listen to Full Show
Le Villi (The Willis or The Fairies) is an opera-ballet in two acts (originally one) composed by Giacomo Puccini to an Italian libretto by Ferdinando Fontana, based on the short story Les Willis by Jean-Baptiste Alphonse Karr. Karr's story was in turn based in the Central European legend of the Vila, also used in the ballet Giselle. The opera, in its original one-act version, was first performed at the Teatro Dal Verme, Milan, on May 31, 1884. Le Villi is Puccini's first stage work. It was written for an 1883 competition of one-act operas by the publisher Sonzogno. His supporters, who included Arrigo Boito, funded the first production, whose favorable reception led to publication by Giulio Ricordi. Puccini's mother received the following telegram on the night of premiere at the Teatro dal Verme on May 31, 1884: "Theatre packed, immense success; anticipations exceeded; eighteen calls; finale of first act encored thrice"'.
Ricordi urged the composer to expand the work, and Puccini did, producing a new version later that year, which was followed by modifications in 1885, and the final version in 1889 in two acts.
Guglielmo – Leo Nucci
Anna – Renata Scotto
Roberto – Placido Domingo
Narrator – Tito Gobbi
Lorin Maazel – conductor
SONY - 1979
Edgar is an operatic dramma lirico in three acts (originally four acts) by Giacomo Puccini to an Italian libretto by Ferdinando Fontana, freely based on the play in verse La Coupe et les lèvres by Alfred de Musset. The first performance was given at the Teatro alla Scala in Milan on April 21, 1889. The opera was not a success. Puccini repeatedly revised it, before eventually giving up in frustration, declaring the work irredeemable. Edgar, Puccini's second opera, was composed on a commission from the publisher Ricordi after the successful reception of his first stage work, Le Villi. The plot indicates the influence of Wagner's Tannhäuser. Both centre on medieval knights struggling between a life of sensual indulgence and ideal love. Edgar is "torn between the sacred love of Fidelia and the profane love of Tigrana";[1] Wagner's hero indulges himself with Venus while pining for the love of Elizabeth. The gypsy-like figure of Tigrana (supposedly the child of "wandering Moors") also parallels the anti-heroine of Bizet's Carmen.
The original version had four acts and was tepidly received. In January 1890, Ricordi published a revised version, including a different ending for act 2. In the autumn of 1891, Puccini revised the work again, cutting the last act and producing a three-act version which would again be revised in 1905.
In this final form the opera had even less success than in its original four-act structure. Some of the music that was cut in 1891 was reused in Tosca and became the beautiful act 3 duet, "Amaro sol per te m'era il morire!". The funeral march from act 3 was played at Puccini's funeral, conducted by Arturo Toscanini and the aria "Addio, mio dolce amor" (Farewell, my sweet love) from act 4 was sung.
Fidelia – Renata Scotto
Edgar – Carlo Bergonzi
Opera Orchestra of New York
Eve Queler – conductor
Cavalleria rusticana, opera Intemezzo
Czecho-Slovak Radio Symphony; Ondrej Lenard, conductor
Le Villi (Puccini's first opera)
; Lorin Maazel, conductor
Renata Scotto Placido Domingo
Edgar (Puccini's second opera)
New York Opera Orchestra Eve Queler
Anna Moffo
Jewel Song from Faust
Sì. Mi chiamano Mimi
Tu che di gel sei cinta
Lawrence Tibbett LeonardWarren
Kirsten Flagstad
Liebestod
 Older
At The Opera, Donizetti: La Fille Du Regiment (The Daughter of the Regiment), January 26, 2019
Newer
At The Opera, Monsigny's The King and the Farmer and Mozart's, The Impresario, February 9, 2019
More From At the Opera
At The Opera, Rossini's Il Barbiere di Siviglia, January 4, 2020
At The Opera, Verdi's Otello (1961), January 18, 2020
At The Opera, Johann Strauss II: Die Fledermaus or The Bat, December 28, 2019
At The Opera, Richard Wagner's Tannhauser, January 11, 2020
At The Opera, Puccini's La Boheme, Menotti's Amahl and the Night Visitors and Holiday Potpourri, December 21, 2019
At The Opera, Verdi: Il Trovatore (EMI 1956), December 14, 2019
At The Opera, Puccini's Tosca (1963), December 7, 2019
At The Opera, All Opera Potpourri, November 30, 2019
At The Opera, Richard Wagner's Gotterdammerung - The Ring Cycle Part 4, November 23, 2019
At The Opera, Wagner's Siegfried, The Ring Cycle Part 3, November 16, 2019
Richard Wagner's Die Walkure part 2
At The Opera, Wagner's Die Walkure, November 9, 2019
At The Opera, Richard Wagner's Das Rheingold, November 2, 2019
At The Opera, Charles Gounod's Faust (1994) October 26, 2019
At The Opera, Verdi's Macbeth (1959), October 19, 2019
At The Opera, Puccini: Il Trittico Three One-Act Operas, October 12, 2019
At The Opera, Verdi: Rigoletto, October 5, 2019
At The Opera, Wagner: Tristan und Isolde (Live 1966) September 28, 2019
At The Opera, Puccini: Turandot, September 21, 2019
At The Opera, Opera Potpourri Fund Drive, September 14, 2019
At The Opera, Ponchielli: La Gioconda, September 7, 2019
At The Opera, Opera Potpourri, August 31, 2019
At The Opera, Verdi: Un Ballo in Maschera, August 24, 2019
At The Opera, Tchaikovsky: Eugene Onegin, August 17, 2019
At The Opera, Wagner: Tannhauser, August 10, 2019
At The Opera, Dvorak: Rusalka, August 3, 2019
At The Opera, Bizet: Carmen (RCA 1964) July 27, 2019
At The Opera, Verdi: Luisa Miller (MET 1967 LIVE), July 20, 2019
At The Opera, Donizetti: Lucia di Lammermoor, July 13, 2019
At The Opera, Borodin: Prince Igor, July 6, 2019
At The Opera, All Opera Potpourri, June 29, 2019
At The Opera, Puccini: La Boheme (1972), June 22, 2019
At The Opera, Mozart: The Magic Flute, June 15, 2019
At The Opera, Verdi: Don Carlo (1971) June 8, 2019
At The Opera, Puccini: Madama Butterfly, June 1, 2019
At The Opera, Richard Strauss: Der Rosenkvalier, May 25, 2019
At The Opera, Ponchielli: La Gioconda, May 18, 2019
At The Opera, Cavalleria Rusiticana and Pagliacci, May 11, 2019
At The Opera, Jules Massenet: Herodiade, May 4, 2019
At The Opera, Arrigo Boito: Mefistofele, April 27, 2019
At The Opera, Rossini: L'Italiana in Algeri, April 20, 2019
At The Opera, Beethoven: Fidelio, April 13, 2019
At The Opera, Donizetti: The Elixir of Love (L'elisir d'amore) - April 6, 2019
At The Opera, Opera Potpourri, March 30, 2019
At The Opera, Opera Potpourri Fund Drive, March 23, 2019
At The Opera, Rossini: Il Turco in Italia (The Turk in Italy), March 16, 2019
At The Opera, Korngold: The Miracle of Helena, March 9, 2019
At The Opera, Puccini's Tosca, March 2, 2019
At The Opera, Saint-Saens: Samson st Dalila, February 23, 2019
At The Opera, Alexander Serov's Judith, February 16, 2019
At The Opera, Pietro Mascagni: Parisina, January 19, 2019
At The Opera, George Frideric Handel: Rinaldo, January 12, 2019
At The Opera, Verdi: La Forza Del Destino (The Force of Destino) January 5, 2019
At The Opera, Johann Strauss II: Die Fledermaus or The Revenge of the Bat, December 29, 2018
At The Opera, Verdi: Un Ballo In Maschera (CETRA 1954) December 15, 2018
At The Opera, Verdi: Il Trovatore (CETRA 1951) December 8, 2018
At The Opera, Mozart: Don Giovanni, December 1, 2018
At The Opera, Puccini: Il Trittico, November 24, 2018
At The Opera, Verdi: Otello, November 17, 2018
At The Opera, Puccini: Manon Lescaut, November 10, 2018
At The Opera, Flotow: Martha, November 3, 2018
At The Opera, Wagner: Gotterdammerung, October 28, 2018
At The Opera, Wagner: The Ring Cycle Part 4, "Gotterdammerung" October 27, 2018
At The Opera, Wagner: Siegfried, October 20, 2018
At The Opera, Wagner: Die Walkure, October 13, 2018
At The Opera, Wagner: Das Rheingold (MET 1951) October 6, 2018
At The Opera, Opera Potpourri, September 29, 2018
At The Opera, Verdi: La Traviata (La Scala 1955), September 15, 2018
At The Opera, Bellini: Norma, September 8, 2018
At The Opera, Verdi: Falstaff, August 25, 2018
At The Opera, Rossini: Guglielmo Tell, August 18, 2018
At The Opera, Verdi: Otello (CETRA 1955) August 11, 2018
At The Opera, Rossini: The Barber of Seville, August 4, 2018
At The Opera, Cavalleria Rusticana and Pagliacci (CETRA 1951) July 28, 2018
At The Opera, Puccini: Turandot (CETRA 1938) July 21, 2018
At The Opera, Giordano: Andrea Chenier (CETRA 1953) July 14, 2018
At The Opera, Puccini: Tosca (Cetra 1956) July 7, 2018
At The Opera, Verdi: Nabucco (Cetra 1951) June 23, 2018
At The Opera, Verdi: Aida, June 16, 2018
At The Opera, Puccini Double-Bill - La Boheme and Gianni Schicchi, June 9, 2018
At The Opera, Verdi: Simon Boccanegra (1951-Cetra LP) June 2, 2018
At The Opera, Verdi: I Due Foscari, May 26, 2018
At The Opera, Verdi: La Battaglia di Legnano, May 19, 2018
At The Opera, Puccini - La Fanciulla del West (The Girl of the West), May 12, 2018
At The Opera, Mozart: Idomeneo, May 5, 2018
At The Opera, Verdi: Un Ballo in Maschera, April 28, 2018
At The Opera, Rossini: The Barber of Seville, April 21, 2018
At The Opera, Verdi's Il Trovatore, April 14, 2018
At The Opera, Opera Potpourri, April 7, 2018
At The Opera, Cavalleria Rusticana and Pagliacci, March 31, 2018
At The Opera, Gustav Charpentier: Louise, March 24, 2018
At The Opera, Humperdink: Hansel and Gretel, March 17, 2018
At The Opera, Cilea: Adriana Lecouvreur, March 10, 2018
At The Opera, Opera Potpourri Fund Drive, March 3, 2018
At The Opera, Wagner's Lohengrin, February 24, 2018
At The Opera, Verdi's Macbeth, February 17, 2018
At The Opera, Carlisle Floyd - Susannah, February 10, 2018
At The Opera, Richard Wagner - The Flying Dutchman, February 3, 2018
At The Opera, Giuseppe Verdi's Aida, January 27, 2018
At The Opera, Bellini: I Puritani, January 20, 2018
At The Opera, Korngold: Die Tote Stadt (The Dead City) January 13, 2018
At The Opera, Bizet: Carmen, January 6, 2018
At The Opera, All Opera Potpourri, December 30, 2017
At The Opera, Puccini's La Boheme and Menotti's Amahl and the Night Visitors December 23, 2017
At The Opera, Verdi: Ernani, December 16, 2017
At The Opera, Wagner: Rienzi, December 9, 2017
At The Opera, Verdi: Don Carlo, December 2, 2017
At The Opera, Mozart: Don Giovanni, November 25, 2017
At The Opera, Verdi: Rigoletto, November 11, 2017
At The Opera, Ponchelli: La Gioconda, November 4, 2017
At The Opera, Richard Wagner: Der Ring des Nibelungen - Part 4 - Gotterdammerung, October 29, 2017
At The Opera, Richard Wagner: Der Ring des Nibelungen - Part 3: Siegfried, October 22, 2017
At The Opera, Richard Wagner: Der Ring des Nibelungen - Part 2: Die Walkure, October 15, 2017
At The Opera, Richard Wagner: Der Ring des Nibelungen - Part2: Die Walkure, October 14, 2017
At The Opera, Der Ring des Nibelungen - Part 1: Das Rheingold, October 7, 2017
At The Opera, 5th Saturday All Opera Potpourri, September 30, 2017
At The Opera, Gounod: Faust, September 16, 2017
At The Opera, Beethoven: Fidelio, September 9, 2017
At The Opera, Gluck: Orfeo ed Euridice, September 2, 2017
At The Opera, Giordano's Andrea Chenier, August 26, 2017
At The Opera, Richard Strauss: Salome, August 19, 2017
At The Opera, Verdi: La Traviata, August 12, 2017
At The Opera, Donizetti - Anna Bolena, August 5, 2017
At The Opera, Opera Potpourri, July 29, 2017
At The Opera, Puccini's La Boheme, July 22, 2017
At The Opera, Verdi: Falstaff, July 15, 2017
At The Opera, Puccini's Turandot, July 8, 2017
At The Opera, Verdi's Il Trovatore, July 1, 2017
At The Opera, Puccini's Madame Butterfly, June 24, 2017
At The Opera, Luigi Cherubini's Medea, June 17, 2017
At The Opera, Puccini's Le Villi and Mascagni's Cavalleria Rusticana, June 10, 2017
At The Opera, Verdi: Macbeth, June 3, 2017
At The Opera, Mozart: Cosi Fan Tutte, May 27, 2017
At The Opera, Britten: Peter Grimes, May 20, 2017
At The Opera, La Rondine, May 13, 2017
At The Opera, Wagner: Rienzi, May 6, 2017
At The Opera, All Opera Potpourri, April 29, 2017
At The Opera, Verdi: Ernani, April 22, 2017
At The Opera, Mascagni: Cavalleria Rusticana / Leoncavallo: Pagliacci, April 15, 2017
At The Opera, Boito: Mefistofele, April 8, 2017
At The Opera, Opera Potpourri Spring Fund Drive, April 1, 2017
At The Opera, Puccini: Il Trittico (3 one act operas), March 25, 2017
At The Opera, Charpentier: Louise, March 18, 2017
Special Encore Presentation of At The Opera, Bellini: I Puritani, March 11, 2017
At The Opera, Special Encore Presentation, Tchaikovsky: Eugene Onegin, March 4, 2017
At The Opera, Donizetti: Lucrezia Borgia / Jussi Bjorling Carnegie Hall Recital, February 25, 2017
At The Opera, Opera Potpourri and The Threepenny Opera, February 18, 2017
At The Opera, Nicolai Gedda Tribute / La Forza Del Destino, February 11, 2017
At The Opera, Stravinsky: The Rake's Progress, February 4, 2017
At The Opera, Verdi: Rigoletto, January 28, 2017
At The Opera, Bizet: Carmen, January 21, 2017
At The Opera, Mozart: Don Giovanni, January 14, 2017
At The Opera, Puccini: Turandot, January 7, 2017
At The Opera, Johann Strauss: Die Fledermaus (The Bat), December 31, 2016
At The Opera, Puccini: La Boheme and Menotti's Amahl and the Night Visitors, December 24, 2016
At The Opera, Richard Strauss: Der Rosenkavalier, December 17, 2016
At The Opera, Verdi: Attila, December 10, 2016
At The Opera, Ponchielli: La Gioconda, December 3, 2016
At The Opera, Verdi: Aida, November 26, 2016
At The Opera, Cilea: Adriana Lecouvreur, November 19, 2016
At The Opera, Puccini: Madama Butterfly, November 12, 2016
At The Opera, Puccini: Manon Lescaut, November 5, 2016
At The Opera, Opera Potpourri, October 29, 2016
At The Opera, Wagner: Gotterdammerung (The Twilight of the Gods) October 22, 2016
At the Opera, Die Walkure Act 3 Continued and Potpourri, October 09, 2016
At The Opera, Wagner: Die Walkure, October 8, 2016
At The Opera, Wagner: Das Rheingold, October 1, 2016
At The Opera, All Opera Potpourri Fund Drive,September 24, 2016
At The Opera, Verdi: Rigoletto, September 17, 2016
At The Opera, Donizetti" L'Elisir d'Amore,(The Elixer of love) September 10, 2016
At The Opera, Verdi: La Forza Del Destino, September 3, 2016
At The Opera, Verdi: In Ballo in Maschera, August 27, 2016
At the Opera, Moussorgsky: Khovanshchina, August 20. 2016
At The Opera, Bellini: Norma, August 13, 2016
At The Opera, Verdi: Il Trovatore, August 6, 2016
At The Opera, Bellini: I Puritani, July 23, 2016
At The Opera, Puccini: Tosca, July 16, 2016
At The Opera, Tchaikovsky: Eugene Onegin, July 9, 2016
At The Opera, Offenbach: The Tales of Hoffmann, July 2, 2016
At The Opera, Verdi: Falstaff, June 25, 2016
At The Opera, Massenet: Werther, June 18, 2016
At The Opera, Puccini: La Fanciulla del West, June 11, 2016
At The Opera, Mozart: Die Zauberflote, June 4, 2016
At The Opera, Verdi: Otello, May 28, 2016
At The Opera, Verdi: Aida, May 21, 2016
At The Opera, Puccini: La Boheme, May 14, 2016
At The Opera, Triple Bill: Cavalleria Rusticana/Pagliacci/Gianni Schicchi, May 7, 2016
At The Opera, Fund Drive All Opera Potpourri, April 30, 2016
At The Opera, Verdi: La Traviata, April 23, 2016
At The Opera, Ponchielli: La Gioconda, April 16, 2016
At The Opera, Bizet: Carmen, April 9, 2016
At The Opera, Wagner: Lohengrin, April 2, 2016
At The Opera, Donizetti: Lucia di Lammermoor, March 26, 2016
At The Opera, Richard Strauss: Der Rosenkavalier (The Knight of the Rose), March 19, 2016
At The Opera, Rossini: Il Barbieri di Siviglia, March 12, 2016
At The Opera, Puccini: Madama Butterfly, March 5, 2016
At The Opera, Verdi: Un Ballo in Maschera (A Masked Ball) February 27, 2016
At The Opera, Saint-Saens: Samson et Dalila, February 20, 2016
At The Opera, Donizetti: La fille du regiment (The Daughter of the Regiment), February 13, 2016
At The Opera, Verdi: Simon Boccanegra, February 6, 2016
At The Opera, All Opera Potpourri, January 30, 2016
At The Opera, R. Strauss: Salome, January 23, 2016
At The Opera, Monteverdi: L'Orfeo, January 16, 2016
At The Opera, Verdi: Aida, January 9, 2016
At The Opera, Puccini: La Fanciulla del West, January 2, 2016
At The Opera, Offenbach: Orpheus in the Underworld, December 26, 2015
At The Opera, La Boheme and Amahl and the Night Visitors, December 19, 2015
At The Opera, Humperdinck: Hansel und Gretel, December 12, 2015
At The Opera, Donizetti: Don Pasquale, December 5, 2015
At The Opera, Dvorak: Rusalka, November 28, 2015
At The Opera, Giordano: Andrea Chenier, November 14, 2015
At The Opera, Bellini: Norma, November 7, 2015
At The Opera, All Opera Potpourri, October 31, 2015
At The Opera, Verdi: La Traviata, October 24, 2015
At The Opera, Rossini: Semiramide, October 17, 2015
At The Opera, Rossini: William Tell, October 10, 2015
At The Opera, Wagner: Gotterdammerung, October 3, 2015
At The Opera, Fund Drive Potpourri, September 26, 2015
At The Opera, Wagner: Siegfried, September 19, 2015
At The Opera, Wagner: Die Walkure, September 12, 2015
At The Opera, Wagner: Das Rheingold, September 5, 2015
At The Opera, All Opera Potpourri, August 29, 2015
At The Opera, Puccini: Tosca, August 22, 2015
At The Opera, Massenet: Werther, August 15, 2015
At The Opera, Strauss Jr. Der Zigeunerbaron (The Gypsy Baron) August 8, 2015
At The Opera, Korngold: Die Tote Stadt (The Dead City), August 1, 2015
At The Opera, Beethoven: Fidelio, July 25, 2015
At The Opera, All Wagner Potpourri, July 18, 2015
At The Opera, Floyd: Susannah, July 11, 2015
At The Opera, Puccini: La Rondine (The Swallow) July 4, 2015
At The Opera, StraussJr.: Die Fledermaus, June 27, 2015
At The Opera, Verdi:Aida, June 20, 2015
At The Opera, Verdi: Il Trovatore, June 13, 2015
At The Opera, All Opera Potpourri, June 6, 2015
At The Opera, Gounod: Faust, May 30, 2015
At The Opera, Puccini: Manon Lescaut, May 16, 2015
At The Opera, Bizet: Carmen, May 9, 2015
At The Opera, Verdi: Simon Boccanegra, May 2, 2015
At The Opera, Puccini: Tosca, April 25, 2015
At The Opera, Opera Potpourri, April 18, 2015
At The Opera, Verdi: Un Ballo in Maschera - The Masked Ball, April 11, 2015
At The Opera, Mozart: La Finta Giardiniera - The Pretend Garden Girl - April 4, 2015
At The Opera, Bellini: I Puritani, March 28, 2015
At The Opera, Verdi: Otello, March 14, 2015
At The Opera, Mozart: Ascanio in Alba, March 7, 2015
At The Opera, Ponchielli: La Gioconda, February 28, 2015
At The Opera, Strauss: Der Rosenkavalier, February 21, 2015
At the Opera, Verdi: La Traviata (The Fallen Woman)
At the Opera, Mozart: Cosi Fan Tutte
At the Opera, All Opera Potpourri
At the Opera, Wagner: Der Fliegende Hollander (The Flying Dutchman)
At the Opera. Giordano: Andrea Chenier
At the Opera, Beethoven: Fidelio
At the Opera, Mozart: Idomeneo: King of Crete
At the Opera, Die Fledermaus and The 3 Tenors Concert from 1990
At the Opera, Puccini's La Boheme and Menotti's Amhal and the Night Visitors
At the Opera, Bizet: Carmen, 12/13/14
At the Opera, Puccini: Tosca, 12/06/14
At the Opera, Opera Potpourri. 11/29/14
At the Opera, Mussorgsky: Boris Godunov, 11/22/14
At the Opera, Verdi: Rigoletto, 11/15/14
At the Opera, Bellini: I Capuleti e i Montecchi, November 08, 2014
At The Opera, Puccini: Turandot, November 1, 2014
At The Opera, Wagner: Götterdämmerung (Twilight of the Gods), October 25, 2014
At the Opera, Wagner's: Siegfried, 10/18/14
At The Opera, Puccini: Manon Lescaut, September 27, 2014
At The Opera, Opera Triple Bill: Cavalleria Rusticana, I Pagliacci and Gianni Schicchi, September 20, 2014
At The Opera, Fund Drive All Opera Potpourri, September 13, 2014
At The Opera, Handel: Ariodante, September 6, 2014
At The Opera, Von Flotow: Martha, August 23, 2014
At The Opera, Gluck: Orphee et Eurydice, August 16, 2014
At The Opera, R. Strauss: Salome, August 9, 2014
At The Opera, Donizetti: The Elixer of Love August 2, 2014
At the Opera, Verdi: Un ballo in Maschera, 07/26/14
At The Opera, Verdi: Ernani, July 19, 2014
At The Opera, Korngold: Die Tote Stadt, July 12, 2014
At The Opera, Puccini: Turandot, July 5, 2014
At the Opera, Verdi: Don Carlo - 6/29/14
At The Opera, Puccini: Madama Butterfly, June 21, 2014
At The Opera, Rossini: William Tell, June 14, 2014
At The Opera, Gounod: Faust, June 7, 2014
At The Opera, Amilcare Ponchielli: La Gioconda, May 17, 2014
At The Opera, Carl Nielsen: Maskarade, May 10, 2014


text:
Rider Goncalves dies in Dakar crash
Mon, 13 Jan 2020 Mon, 13 Jan 2020
Hero Motosports Team Rally's Paulo Goncalves is seen after a crash during stage 7 Frank Fife/Pool via REUTERS
RIYADH: Portuguese motorcycle rider Paulo Goncalves died after a crash in the seventh stage of the Dakar Rally in Saudi Arabia yesterday, organisers said.
The 40-year-old Hero Motorsports entrant, taking part in his 13th Dakar Rally since making his debut in 2006, fell after 276km of the special stage from Riyadh to Wadi Al Dawasir.
"The organisers received an alert at 10:08 and dispatched a medical helicopter that reached the biker at 10:16 and found him unconscious after going into cardiac arrest," organisers said in a statement.
"Following resuscitation efforts in Situ, the competitor was taken by helicopter to Layla Hospital, where he was sadly pronounced dead.
Goncalves was the first competitor to die in the gruelling endurance event since Polish motorcycle rider Michal Hernik in Argentina in 2015.
The Portuguese finished in the top 10 at the Dakar Rally four times and was runner-up in 2015 to Spaniard Marc Coma, who is competing this year as co-driver to double Formula One champion Fernando Alonso.
Goncalves suffered mechanical problems on Friday, having to change his bike's engine to stay in the race, and dropped to 46th overall after the sixth stage.
"The target now is to do my best, because the result at the end...there is no way to get a good result. Instead I'll try to do good stages every day possible and that's what I'm looking for," Goncalves said then.
The experienced Portuguese had competed in the Dakar on three continents, from its origins in Africa to South America and this year's debut in the Middle East.
The 2013 cross country rallies world champion was representing the Indian Hero Motorsports team, along with his brother-in-law Joaquim Rodrigues, after five years racing with Honda.
Goncalves crashed out on the fifth stage in Peru last year. Rodrigues broke his back in a Dakar crash two years ago but returned after extensive surgery and was 27th after stage six.
Yesterday's 546km stage, the longest of the event, was ultimately won by Argentina's KTM rider Kevin Benavides who stopped to help Goncalves but had the lost time reinstated.


Recently, I have seen a couple of messages on social media hoping 2017 is better than 2016. While I would hope it is better, 2016 has been pretty good for me. Not in the way people usually measure success… I'm single and broke. But I have learned to work with what I have and how to live my life on my terms.
Somewhere in the past year, I found some motivation I didn't know I had. I started out with the idea that I didn't want to grow old as an overweight, unhealthy person. I don't want to have medication for the looming health problems. Shoot, I don't want to grow old at all!
So I found a wellness coach and started to change my eating habits, cutting out a lot of processed food and working (still a work in progress) on portion control. At the same time, I started walking and worked very hard to make it a part of my daily routine. When I started, I only wanted to walk on hiking trails, not in the neighborhood and I didn't want to go to the gym at all. At some point, neighborhood walking became part of it because I don't always have time to drive to the foothills to walk. And this last week, I added the gym back as well because there are times when I don't feel like walking. Since the 1st of July, I have missed less than 10 days of exercise 🙂 and have lost about 25 pounds.
However, the journey isn't just about my physical health. My brain is getting involved too. I am beginning to realize that I can take care of myself.
I finally cut an extremely toxic relationship out of my life. It was harder than it should've been because he was backing me up. At least I thought he was. I finally saw what many around me had already noticed… everything he did to help me had strings attached to it. So while I thought I was moving on with my life, he was still controlling parts of it. It's been a struggle the last couple weeks just getting past that idea that I am truly doing this without that safety net.
So 2016 has been a year of discovery for me. Not always easy but phenomenal in a lot of ways. I am rebuilding myself into someone I have always wanted to be. My plan for 2017 will be to continue the process.


text:
Q: How to use variable in xcopy since source file name is dynamic? For example I have
xcopy "C:\windows\match\goal.cfg" "c:\Program Files\Gate\" /e /i /h /r /k /y

where the name of the folder match is dynamic and always changes. How can I variablize the path directly to point a file in match folder to copy to gate folder in program files?

A: If you want to pass a folder name variable into the batch file you could use:
@echo off
set /p "folder=Enter folder name: "

xcopy "C:\windows\%folder%\goal.cfg" "c:\Program Files\Gate\" /e /i /h /r /k /y

redpajama_set_name: RedPajamaStackExchange


text:
Home » US, Mexico reach preliminary deal on sugar trade
News Politics Trade
US, Mexico reach preliminary deal on sugar trade
06/06/17 4:00 PM By Bill Tomson
KEYWORDS Guajardo mexico refiners ross sugar
WASHINGTON, June 6, 2017 – The U.S. and Mexico today announced a preliminary agreement today on a new system to regulate the flow of Mexican sugar into the U.S., but the U.S. sugar refiners and farmers are not supporting the deal.
"We have gotten the Mexican side to agree to nearly every request made by U.S. industry to address flaws in the current system and ensure fair treatment of American sugar growers and refiners," said U.S. Commerce Secretary Wilbur Ross.
Ross, who addressed reporters together with Mexican Minister of Economy Ildefonso Guajardo Villarreal, said Mexico has agreed send more refined and less raw sugar in the quota set for the country.
Mexico first agreed to the limit on its sugar exports as part of a "suspension agreement" in December 2014, after the U.S. threatened to levy stiff countervailing and anti-dumping duties. That limit effectively cut Mexican exports in half and dictated that only 53 percent could be refined product.
The U.S. needs to import sugar because demand is stronger than supply, but U.S. sugar refiners prefer those shipments be raw so that their mills can keep busy processing.
The U.S. informed Mexico last year that the suspension agreement needed to be changed substantially to reduce the amount of refined sugar it was shipping to the U.S.
Trump, Mexico reach preliminary deal on NAFTA
US, Canada, Mexico reach deal on metals, clearing USMCA obstacle
US-Mexico sugar deal may bode well for NAFTA renegotiation
The new agreement announced today requires that 70 percent of imports from Mexico be raw and allows the remaining 30 percent to be refined.
The U.S. sugar refining industry had been seeking an 85-15 split for raw and refined.
"Unfortunately, despite all of these gains, the U.S. sugar industry has said it is unable to support the new agreement, but we remain hopeful that further progress can be made during the drafting process," Ross said today. "We look forward to continuing discussions with them as we finalize the agreement. We remain confident that this deal defends American workers across many industries and is the best way to ensure stability and growth."
Ross said that he and Guajardo have both initialed the agreement, but there are still more details to be worked out in the coming days.
"In the drafting process we will try to work on issues that will make it easier for American industry to come on board," Ross said.
Bill Tomson
Senior Trade Editor


"Sadobaka" is the the new collection of illustrations by Pakito Bolino, famous (or notorious) French illustrator and co-founder of the sensational publishing house Le Dernier Cri. This book presents Bolino's evil and entirely degenerate interpretations of Japanese B-movie posters in an oversized (13 x 9.75 inches / 33 x 25 cm) book.
Silver foil block print on canvas coated hard cover. Limited edition of 400 copies.


text:
Home/Articles/Admin/SUPER LEAGUE TRIATHLON
AdminArticlesEventsNews
SUPER LEAGUE TRIATHLON
admin > Send an email February 23, 2017
Get ready for the Super League Triathlon! The world's best triathletes come together across unique short course formats for big prize money in a closed league series. The Super League Triathlon provides pulse-pounding action, superstars to root for, and a spectator experience without parallel. With this format, Super League Triathlon catapults triathlon into the hearts, minds, and living rooms of triathlon and sports fans worldwide.
Super League Triathlon features action-packed racing formats in dramatic locations and fan-friendly courses across Asia-Pacific and the Gulf. The league also aims to set the gold standard experience for age groupers, professional athletes, and fans alike. Super League Triathlon was co-founded by two-time Ironman and two-time ITU World Champion Chris McCormack, and Michael D'Hulst and Leonid Boguslavsky, three successful businessmen and passionate triathletes brought together by a common desire to break new ground in the sport of triathlon. By offering incredible TV and digital content output with live race day television broadcasts, live race day digital streaming and Video on Demand content, Super League Triathlon will be showcasing World Champion Athletes and the sport of triathlon like never before.
The game-changing Super League Triathlon series will hold its inaugural event on Hamilton Island, Australia from 17 to 19 March 2017. With 25 superstar athletes pitted against each other across short-course formats aired live worldwide, Hamilton Island provides a stunning setting and lends its own unique climate and topography to the challenge of determining who is the world's best multisport athlete.
Situated on the Great Barrier Reef in tropical latitudes with pristine white sand beaches, calm clear waters, and an abundance of marine life, Hamilton Island is one of Australia's most spectacular and sought-after holiday destinations. While resorts provide modern creature comforts and recreation and its airport services daily direct commercial flights from Australia's major eastern cities, over 70 percent of the island has been carefully preserved in its natural state.
Sporting events on Hamilton Island are known for pushing their competitors to the hilt while wowing them with awe-inspiring natural beauty.
"Hamilton Island has a strong reputation for hosting a number of internationally renowned sporting and cultural events," said Glenn Bourke, Hamilton Island CEO. "We are proud to add the Super League Triathlon to our schedule of high-profile events and look forward to showcasing the Island to some of the world's best triathletes. With Hamilton Island being located in the heart of the Great Barrier Reef, the triathletes competing at this game-changing event will be able to enjoy one of the most pristine locations in the world while pushing themselves to their limits."
Super League Triathlon co-founder Chris McCormack conducted extensive reconnaissance on the island to lay out the 300-metre swim, six-kilometre cycle course, and two-kilometre run course to be used during the three-day Super League event, which will be open and free to watch for all island guests as well as broadcast live worldwide on television and streaming video.
"We're bringing the world's best athletes to Hamilton Island. It's a tropical paradise but we're going to break them here. This course is brutal," said McCormack.
The courses have been designed to be spectator-friendly with multiple laps allowing many chances for people to watch the action unfold before their eyes.
The swim course is in the crystal blue waters of the Hamilton Island Marina with athletes surrounded by multi-million-dollar water craft. The cycle course involves six rounds of a one-kilometre loop utilizing Resort Drive and Marina Drive. The run course goes the opposite direction with four laps along the marina foreshore on Front Street. It is truly one of the most spectacular triathlon courses in history.
A separate bike course will be used exclusively for the Equalizer individual time trial. Athletes will roll off the start ramp on the tarmac of the Hamilton Island airport and complete the first out and back section on the flat of the airstrip. But then it's all uphill. The brutal climb will become the stuff of legend as athletes fight to make it to the top at One Tree Hill, the highest point on Hamilton Island. In the last 1.4 kilometres, athletes will gain 121 metres in elevation with a maximum gradient of 24.4 percent.
"The time trial course may be only six kilometres, but the last kilometres are as tough as I've seen in triathlon," McCormack said. "It may be one of the prettiest finish lines I've ever seen at a sporting event, but you've got to work your backside off to get there."
While the competition will put athletes through the wringer, outside of racing they will get to kick back and enjoy Hamilton Island's natural landscapes, calm turquoise waters, secluded beaches, beautiful weather and luxurious recreation and accommodation. They can take a cruise to the Great Barrier Reef or nearby Whitehaven Beach, set sail through the Whitsundays, play a round of golf at the Hamilton Island golf course located on nearby Dent Island, or relax at a spa or by one of the many pools.
Watch the world's best athletes push themselves in paradise at Super League Hamilton Island, broadcast live on www.superleaguetriathlon.com.
17 March 2017 – Triple Mix 1630 AEST
18 March 2017 – Equalizer 1630 AEST
19 March 2017 – Eliminator 1630 AEST
Source : Super League Triathlon / media(at)superleaguetriathlon.com
Ironman SUPER LEAGUE TRIATHLON Triathlon
Education Empowers: Walk and Run for Education | February 26, 2017
2017 Tri United Exceed Standard | Race Results and Review
First Fondo Manila Introduces Social Cycling to the Philippines
BIKE KING TRI 1 | February 25, 2018
Total Fitness Magazine March 2012 | Neil Etheridge
K-Swiss Subic Bay International Triathlon (SuBIT) 2014 | Race Info


text:
Q: How to create columns in Python Pandas depending on multiple conditions to calculate previous cost, cumulative cost and cost of transaction? Let´s say I´ve the given dataframe:
import pandas as pd

import numpy as np

# Create the dataframe:
data = {'date'              : ['2022-01-01', '2022-01-02', '2022-01-02', '2022-01-03', '2022-01-03', '2022-01-03', '2022-01-03', '2022-01-03', '2022-01-04'],
        'ticker'            : ['TSLA','TSLA', 'TSLA', 'TSLA', 'TSLA', 'TSLA', 'TSLA', 'AAPL', 'AAPL'],
        'type'              : ['buy', 'buy', 'split', 'sell', 'buy', 'sell', 'buy', 'buy', 'buy'],
        'units'             : [2, 2, 3, 2, 2, 2, 2, 2.5, 4],
        'price'             : [50.5, 50.5, 0, 52, 35, 52, 35, 50.5, 50.5],
        'fees'              : [4, 4, 0, 2.5, 3, 2.5, 3, 1.5, 2],
}

df = pd.DataFrame(data)
df
Out[3]:
         date ticker   type  units  price  fees
0  2022-01-01   TSLA    buy    2.0   50.5   4.0
1  2022-01-02   TSLA    buy    2.0   50.5   4.0
2  2022-01-02   TSLA  split    3.0    0.0   0.0
3  2022-01-03   TSLA   sell    2.0   52.0   2.5
4  2022-01-03   TSLA    buy    2.0   35.0   3.0
5  2022-01-03   TSLA   sell    2.0   52.0   2.5
6  2022-01-03   TSLA    buy    2.0   35.0   3.0
7  2022-01-03   AAPL    buy    2.5   50.5   1.5
8  2022-01-04   AAPL    buy    4.0   50.5   2.0

Whereas I calculate the following columns:
# Create the column transaction value

def calc_transaction_value(type_transaction, price_unit, transacted_units, fees):
    """
    Calculate the transaction value from three columns in a dataframe depending on the value of type.
    """
    if type_transaction == 'buy':
        return price_unit * transacted_units + fees # i.e. the transacted cost
    if type_transaction == 'sell':
        return price_unit * transacted_units - fees # i.e. the gross income of capital
    else:
        return np.nan # If other return filler (i.e return NaN)

df['transacted_value'] = df.apply(lambda x: calc_transaction_value(x['type'], x['price'], x['units'], x['fees']), axis=1).fillna(0)

df
Out[4]:
         date ticker   type  units  price  fees  transacted_value
0  2022-01-01   TSLA    buy    2.0   50.5   4.0            105.00
1  2022-01-02   TSLA    buy    2.0   50.5   4.0            105.00
2  2022-01-02   TSLA  split    3.0    0.0   0.0              0.00
3  2022-01-03   TSLA   sell    2.0   52.0   2.5            101.50
4  2022-01-03   TSLA    buy    2.0   35.0   3.0             73.00
5  2022-01-03   TSLA   sell    2.0   52.0   2.5            101.50
6  2022-01-03   TSLA    buy    2.0   35.0   3.0             73.00
7  2022-01-03   AAPL    buy    2.5   50.5   1.5            127.75
8  2022-01-04   AAPL    buy    4.0   50.5   2.0            204.00

And:
# create the flow of units, depends on transaction type (buy or sell)
df["flow_units"] = df.apply(lambda x: -x["units"] if x["type"] == "sell" else x["units"], axis=1)

# Create the cml_units and prev_units column
df = df.groupby("ticker").apply(lambda grp: grp.assign(cml_units=grp["flow_units"].cumsum().abs(),
                                                           prev_units=grp["flow_units"].shift(1).cumsum().abs().fillna(0)))
df
Out[5]:
         date ticker   type  units  price  fees  transacted_value  flow_units  \
0  2022-01-01   TSLA    buy    2.0   50.5   4.0            105.00         2.0
1  2022-01-02   TSLA    buy    2.0   50.5   4.0            105.00         2.0
2  2022-01-02   TSLA  split    3.0    0.0   0.0              0.00         3.0
3  2022-01-03   TSLA   sell    2.0   52.0   2.5            101.50        -2.0
4  2022-01-03   TSLA    buy    2.0   35.0   3.0             73.00         2.0
5  2022-01-03   TSLA   sell    2.0   52.0   2.5            101.50        -2.0
6  2022-01-03   TSLA    buy    2.0   35.0   3.0             73.00         2.0
7  2022-01-03   AAPL    buy    2.5   50.5   1.5            127.75         2.5
8  2022-01-04   AAPL    buy    4.0   50.5   2.0            204.00         4.0

   cml_units  prev_units
0        2.0         0.0
1        4.0         2.0
2        7.0         4.0
3        5.0         7.0
4        7.0         5.0
5        5.0         7.0
6        7.0         5.0
7        2.5         0.0
8        6.5         2.5

Where the computation of columns for cml_units and prev_units is inspired by @krassowski in thread.
But here I would like to create the columns prev_costs, cml_costs and cost_transaction. The logic is as follows:
I want to for each row, get the ticker from column ticker, and:

*

*if transaction type value is equal to buy in column type then compute the operation prev_costs + transacted_value and populate in column cml_costs.

*

*Where prev_costs for that row is cml_costs but shifted one row up (if grouped by ticker).

*if transaction type value is equal to sell then compute the operation prev_costs - cost_transaction and populate in cml_costs.

*

*Where prev_costs for that row is cml_costs but shifted one row up (if grouped by ticker).

*And where cost_transaction is the result of operation (for that row): (units/cml_units) * prev_costs

*else return prev_costs and populate in cml_costs.

I expect the resulting dataframe as:
data_2 = {'prev_costs'           : [0, 105, 210, 210, 150, 223, 159.29, 0, 127.75],
          'cml_costs'            : [105, 210, 210, 150, 223, 159.29, 232.29, 127.75, 331.75],
          'cost_transaction'     : [0, 0, 0, 60, 0, 63.71, 0, 0, 0],
}

df2 = pd.DataFrame(data_2)

df_expected = pd.concat([df, df2], axis=1, join='inner')

df_expected
Out[6]:
         date ticker   type  units  price  fees  transacted_value  flow_units  \
0  2022-01-01   TSLA    buy    2.0   50.5   4.0            105.00         2.0
1  2022-01-02   TSLA    buy    2.0   50.5   4.0            105.00         2.0
2  2022-01-02   TSLA  split    3.0    0.0   0.0              0.00         3.0
3  2022-01-03   TSLA   sell    2.0   52.0   2.5            101.50        -2.0
4  2022-01-03   TSLA    buy    2.0   35.0   3.0             73.00         2.0
5  2022-01-03   TSLA   sell    2.0   52.0   2.5            101.50        -2.0
6  2022-01-03   TSLA    buy    2.0   35.0   3.0             73.00         2.0
7  2022-01-03   AAPL    buy    2.5   50.5   1.5            127.75         2.5
8  2022-01-04   AAPL    buy    4.0   50.5   2.0            204.00         4.0

   cml_units  prev_units  prev_costs  cml_costs  cost_transaction
0        2.0         0.0        0.00     105.00              0.00
1        4.0         2.0      105.00     210.00              0.00
2        7.0         4.0      210.00     210.00              0.00
3        5.0         7.0      210.00     150.00             60.00
4        7.0         5.0      150.00     223.00              0.00
5        5.0         7.0      223.00     159.29             63.71
6        7.0         5.0      159.29     232.29              0.00
7        2.5         0.0        0.00     127.75              0.00
8        6.5         2.5      127.75     331.75              0.00

I have made this work in google sheets, but can´t make this work in pandas and in desperate need for help. :)
Thanks in advance!