text:
Cigar Coop
Cigar of the Year
2019 Cigar of the Year
2009 Top 20 Cigars
Cigar Scores 2019-20
Cigar Scores 2019
Cigar Reviews
Agile Cigar Reviews
Cigar Industry Report
IPCPR 2011-2014
Previous Podcasts
Prime Time Show Archives
Providing Press Information
Shop Exclusive Coverage Policies
Rating Guide
Feature Story: Remembering the Rebirth of La Palina
November 27, 2016 William Cooper Feature Story No Comments Feature Story, La Palina
Many cigar enthusiasts are quite familiar with La Palina Cigars. Today, the company has an impressive portfolio of offerings from four countries (United States, Honduras, Nicaragua, and the Dominican Republic). The story of La Palina is also quite well know, namely how businessman / philanthropist William C. "Bill" Paley resurrected the brand started by his grandfather, Samuel Paley. It has been six years since Paley brought back the La Palina brand. Today we look back at the re-launch of La Palina. It was a re-launch that took an unorthodox approach and successfully brought back the century-old brand into the marketplace.
Clockwise from Upper Left: La Palina Family Series Alison, La Palina 1986 Limited Edition, La Palina Family Series Babe.
The story of La Palina Cigars traces back to Samuel Paley, an immigrant who came to the United States from the Ukraine in the late 1800s. Settling in Chicago, Illinois, Samuel found work as a cigar factory lector – the person who reads newspapers and stories to the cigar rollers in the factory. He eventually worked his way up to roller and then a blender.
In 1896, Samuel opened up his own store called Congress Cigar Company. He would also produce a brand for his new company called La Palina, a product named for his wife Goldie Drell Paley. In 1910, the company moved to Philadelphia and later Samuel's son William S. Paley came on board as Vice President. The younger Paley would sponsor a small radio show in Philadelphia called "The La Palina Hour". The sponsorship led to growth with the La Palina brand, and at the same time the younger Paley also realized the value and potential of radio. He would go forward with the purchase of five radio stations in Philadelphia which eventually would become the beginning of the Columbia Broadcasting System (CBS). In 1926, Samuel Paley would go on to retire. With his son now entrenched in the broadcasting field, Samuel would also retire the La Palina cigar line.
Original La Palina branding
The next chapter of La Palina would fall on William S. Paley's son (and Samuel Paley's grandson), William C. "Bill" Paley. While Bill's father didn't remain in the cigar business, the tobacco industry ran through the blood of the Paley family. Bill Paley would go on to become a cigar enthusiast. Fast forward to the 21st century and Bill turned his attention to re-establishing his family's legacy.
The relaunch of La Palina takes us to the Bahamas. The Paley family has had an estate located at Lyford Cay on New Providence Island known as Lightbourne House. While spending summers at Lightbourne, cigar enthusiast Bill Paley would enjoy many cigars. He eventually wanted to create the best cigar he could for his guests who would come to the estate. This project provided Bill with the opportunity to re-establish La Palina.
Bill Paley
While the Bahamas might seem a very unlikely place to resurrect La Palina brand, there is some rationale behind it. Being an avid cigar enthusiast, Paley struck up a friendship with Enrico and Paolo Garzaroli. The Garzarolis are the owners of the world-famous Graycliff Hotel in the Bahamas. They also happen to be the owners of the Graycliff Cigar Factory. In his quest to make the perfect cigar, it led Bill to working with Graycliff. Paley started collaborating with the legendary Cuban Master Blender, Avelino Lara. Before leaving Cuba, Lara was best known for making the Cohiba line. Working with Lara made a lot of sense in terms of the connection back to the roots of La Palina. The original La Palina lines used Cuban tobacco, there for it made sense for Paley to work with someone who makes cigars in the Cuban tradition.
Around the time Paley started working with Graycliff, the brand was one of the hotter brands. It also was one of the most premium brands out there. Many Graycliff offerings were in the $20.00 range. This was due to not only the fact that the Graycliff brand was synonymous with the luxury resort in the Bahamas, but also because the Bahamas has a high import tax for the raw materials needed to make the cigars.
La Palina 1896
On May 17, 2010 Bill Paley formally announced the return of La Palina Cigars. The first cigar would be a small batch limited edition cigar that Paley developed with Lara and the Graycliff factory known as the La Palina 1896 Limited Edition. The cigar derives its name from the year that Samuel Paley launched his cigar operation.
La Palina 1896 Limited Edition
Paley had told me once that the 1896 Limited Edition was originally the result of a factory production error, but he decided to release it anyway. The cigar itself consisted on an Ecuadorian wrapper, Costa Rican binder, and filler from Honduras and Nicaragua. The cigar itself was a short robusto measuring 4 7/8 x 52. It was packaged in ten count boxes. Priced at $19.00, it was an unusual move for a cigar maker to take – namely introducing a relatively unknown ultra premium limited edition cigar into the marketplace.
La Palina Family Series
A few months later, Paley released his first regular production line – the La Palina Family Series. This collaboration with Lara and Grayliff introduced two blends, and four vitolas. Each of the vitolas paid homage to a member of the Paley family.
The La Palina Family Series (Clockwise from Left): Alison, Pasha, Babe, and Little Bill
The La Palina Family Series Pasha and Babe paid homage to Bill Paley's parents, William S. Paley and Barbara "Babe" Cushing Paley. The Pasha and Babe were intended to be milder offerings utilizing a Costa Rican wrapper, Costa Rican binder, and a combination of Honduran and Nicaraguan fillers. Pasha was a 7 1/4 x 50 Churchill with a brushed footer. Babe was a 5 1/4 x 50 Robusto offering. Given they were coming from Graycliff out of the Bahamas, these were not inexpensive offerings. The Pasha priced at $23.00 per cigar and the Babe priced at $18.00. Bill Paley has mentioned on several occasions the Pasha was his favorite offering.
The La Palina Family Series Little Bill and Alison pay homage to Bill Paley and his wife Alison Van Metre Paley. These cigars have a different blend than Pasha and Babe and consisted of an Ecuadorian wrapper, Costa Rican binder and fillers from Honduras and Nicaragua. Alison was a 6 1/2 x 52 torpedo and Little Bill was a 4 1/2 x 52 perfecto. These blends were intended to be a little stronger than the milder Pasha and Babe offerings. These cigars had a secondary band denoted with "LIGERO" to indicate a stronger blend. Like Pasha and Babe, these were also ultra-premium offerings out of Graycliff in the Bahamas. The Alison priced at $22.00 and the Little Bill was priced at $19.00.
La Palina Family Series Alison
Postscript to Family Series
Launching a brand at around the $20.00 price point is something that is not often done. Back in 2010, many would consider that to be early suicide for a new company. This also came at the time when we were still coming out of a major economic downturn in the U.S. economy and many brands were now trying to focus on the value-priced $6.00 to $8.00 market. Going to market with a superior product was something that Bill Paley set out to do from the start. Paley told me at the 2012 IPCPR that by taking this approach, sales would follow and he would grow his brand. Bill felt working with Graycliff and Lora afforded him the best opportunity to accomplish this.
Besides the deep pockets of the Paley fortune, Bill Paley had one other thing going for him – the story of his family's company. The brand was marketed as an ultra-premium brand and it was targeted to retailers who focused attention in that space. As a result, the La Palina Family Series would slowly begin to build a cult following in the cigar community. The cigars were highly acclaimed by many media outlets including Cigar Coop which gave the La Palina Family Series Babe and La Palina Family Series Alison the #5 and #7 Cigar of the Year respectively in 2010.
Bill began expanding his portfolio in 2011 and 2012. In 2011, he introduced the La Palina El Diario. This was meant to be a premium everyday cigar. It paid homage to Samuel Paley's days as the cigar factory lector. Paley partnered with Raices Cubanas to make El Diario, and he was able to deliver a cigar about half the price of the Family Series. Like the Family Series, it garnered high acclaim and captured our 2011 Cigar of the Year on Cigar Coop. Bill would follow this up in 2012 with the La Palina Maduro, a maduro offering out of Raices Cubanas and priced similar to El Diario. He also would release La Palina Classic, a more affordable cigar in the $7.50 to $8.50 range that came out of the PDR Cigars factory in the Dominican Republic.
2012 would also see the release of the La Palina Goldie Laguito No. 2. The Goldie takes its name from Bill Paley's grandmother (and Samuel Paley's wife) Goldie Drell Paley. Incorporating medio tiempo in the filler, this cigar would mark the first project Bill Paley would do with El Titan de Bronze in Little Havana. This would become possibly La Palina's most acclaimed work to date – and it gave the company a second consecutive Cigar of the Year award on Cigar Coop. Since then it has become an annual release in a different vitola each year and has remained enormously popular.
La Palina Goldie Languito Releases. Top to Bottom: La Palina Goldie Dalia (2016 – unbanded pre-release), La Palina Goldie Languito Robusto Extra (2015), La Palina Goldie Languito Especial (2014), La Palina Goldie Laguito No. 5 (2013), and La Palina Goldie Languito No. 2 (2012)
Unfortunately Avelino Lara did not live to see the launch of La Palina Cigars or the original Family Series. Back in October, 2009 Lara would pass away. Paley would then move on to work with Avelino's son Abel Lara, a roller at the Graycliff Factory.
Retiring and Relaunching the Family Series
With a growing portfolio, it became a challenge to keep the La Palina Family Series going from the Graycliff Factory in the Bahamas. During the 2013 IPCPR Trade Show, Paley said that he was sunsetting the La Palina Family Series (and La Palina 1896 Limited Edition).
In 2015, Bill explained some of the reasons for ending the run with Graycliff : "In the long run, the cost of importing these fine Tabaccos into the Bahamas, which charges 100% duty on importation, priced the product out of commercial practicality for a new cigar company with very little penetration in the market. La Palina went on to produce more affordable cigars and develop the extensive penetration and popularity that we enjoy today. Interestingly enough as the inventory of these super premium cigars dwindled, the demand for them grew. The source Tabaccos which I made the cigar from are however no longer available."
But that would not be the end of the line with the Family Series.
Bill's relationship with El Titan de Bronze was blossoming. The annual Goldie release had become one of the most anticipated annual limited edition cigars in the industry. He had worked with El Titan de Bronze to create another limited edition called Mr. Sam (a cigar named for the nickname Samuel Paley's employees gave him), which was so successful that Bill turned it into a regular production offering. He soon decided that El Titan de Bronze would be the perfect place to handle the production of the La Palina Family Series going forward.
La Palina Family Series Miami Pasha – Coffin Offering
The new La Palina Family Series would be dubbed the La Palina Family Series Miami. Three of the four vitolas were retained: Pasha, Alison, and Babe. The Little Bill perfecto size was not carried over. The line would be consolidated from two blends down to an all-new single blend consisting of an Ecuadorian Corojo wrapper, Ecuadorian Habano binder, and Nicaraguan fillers. While it still retains the title as La Palina's most premium regular production limited edition line, the Family Series Miami is priced more competitively between $16.50 and $20.00 per cigar. The Pasha also offers a coffin packaged option.
While the Bahamian made La Palina Family Series is no more, Paley has said he has taken any remaining inventory remain and is putting it away for long-term aging. The plan will be to release these cigars as a vintage cigar release at some future date.
With the releases at the 2016 IPCPR Trade Show, La Palina Cigars is now a company that offers eleven regular production blends plus the limited edition Goldie line. While it doesn't make cigars in the Bahamas any more, it still utilizes factories in the U.S., Honduras, the Dominican Republic, and most recently Nicaragua. This is a company that is no doubt gearing up to do future for many years to come. Over the past year, the company has brought in industry veterans Clay Roberts (CEO and co-President) and Sam Phillips (co-President) to join Bill Paley on the executive team. When I visited Paley at the 2016 IPCPR Trade Show, he informed me he has been preparing La Palina to do business in the new era of regulation by the U.S. Food and Drug Administration (FDA).
Over the past six years, I've followed La Palina's journey to where they are today and have enjoyed it immensely. This is a company that's come a long way from the days of the original La Palina Family Series. As stated earlier, Bill took a highly unorthodox route to where it is today – namely coming to market with a $20.00 cigar. However, Bill did a masterful job at telling his family's rich history in the cigar business through delivering that ultra-premium release.
The day will come when the remaining vintage La Palina Family Series cigars will be released – and my gut tells me when those cigars are re-introduced to market, they are going to be wildly successful. It will have many of us remembering the 2010 days when that cigar was the best secret in the business.
Photo Credits: Cigar Coop
« Cigar News: President-Elect Trump Names Pro-Embargo Advocate Mauricio Claver-Carone to Transition Team	» Cigar News: Alan Willner Departs General Cigar
MBombay Cigars
Perdomo Cigars
Miami Cigar/ La Aurora/ Toscano
J.C. Newman Cigar Co.
Cigar Marketplace
Plasencia Cigars
Pure Aroma Cigars
www.purearomacigars.com
Dunbarton Tobacco & Trust
JRE Tobacco
Saga Cigars
Villiger North America
Caldwell Cigar Co
Casa Cuevas Cigars
Cattle Baron Cigars
Drew Diplomat
Regius of London
Tailored Smoke
Smoke Inn
LH Premium Cigars
Cigar Industry Report: Edition 364 (1/18/20)
Cigar News: Room101 Teams Up with Big Sixx for "The Dream" and "The Nightmare"
Cigar News: De Los Reyes Cigars Confirms Attendance at PCA 2020 Trade Show
Cigar News: Southern Draw Cigars Says No Price Increase for 2020
Cigar News: JSK Introduce Two New Sizes for Nuggs at TPE 2020
Archives Select Month January 2020 December 2019 November 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 January 2010
Categories Select Category Agile Cigar Reviews Announcement Blog Cigar Industry Report Cigar News Cigar of the Year Editor's Corner Events Feature Story IPCPR 2017 IPCPR 2018 IPCPR 2019 Podcast Pre-Review Reviews Uncategorized
Michael's Tobacco
Media Member:
Check out our friends at Developing Palates
#El Oso Fumar Takes
Follow our News Weekly on
Unless explicitly stated, all written content, original photographs (excluding logos), and video are the property of WAC Ligero Group LLC and its associated brand, Cigar Coop You may not copy, use, post or sale them without receiving prior consent from WAC Ligero Group LLC.
Humidity Control for Cigar Coop
© Cigar Coop 2020
Hosted by: Sad Cactus


text:
#include <set>
#include <string>
#include <inttypes.h>
#include <cpuid.h>
#include <iostream>
#include <fstream>
#include <math.h>
#include <stdexcept>

#include "Exception.hpp"
#include "Platform.hpp"
#include "PlatformFactory.hpp"
#include "geopm_message.h"
#include "config.h"

extern "C"
{
    int geopm_platform_msr_save(const char *path)
    {
        int err = 0;
        try {
            geopm::PlatformFactory platform_factory;
            geopm::Platform *platform = platform_factory.platform("rapl", true);
            platform->save_msr_state(path);
        }
        catch (...) {
            err = geopm::exception_handler(std::current_exception());
        }

        return err;
    }

    int geopm_platform_msr_restore(const char *path)
    {
        int err = 0;

        try {
            geopm::PlatformFactory platform_factory;
            geopm::Platform *platform = platform_factory.platform("rapl", true);
            platform->restore_msr_state(path);
        }
        catch (...) {
            err = geopm::exception_handler(std::current_exception());
        }

        return err;
    }

    int geopm_platform_msr_whitelist(FILE *file_desc)
    {
        int err = 0;
        try {
            geopm::PlatformFactory platform_factory;
            geopm::Platform *platform = platform_factory.platform("rapl", false);

            platform->write_msr_whitelist(file_desc);
        }
        catch (...) {
            err = geopm::exception_handler(std::current_exception());
        }

        return err;
    }
}

namespace geopm
{
    Platform::Platform()
        : m_imp(NULL)
        , m_num_domain(0)
        , m_control_domain_type(GEOPM_CONTROL_DOMAIN_POWER)
        , m_num_energy_domain(0)
        , m_num_counter_domain(0)
        , m_num_rank(0)
    {

    }

    Platform::Platform(int control_domain_type)
        : m_imp(NULL)
        , m_num_domain(0)
        , m_control_domain_type(control_domain_type)
        , m_num_energy_domain(0)
        , m_num_counter_domain(0)
        , m_num_rank(0)
    {

    }

    Platform::~Platform()
    {

    }

    void Platform::set_implementation(PlatformImp* platform_imp, bool do_initialize)
    {
        m_imp = platform_imp;
        if (do_initialize) {
            m_imp->initialize();
            initialize();
        }
    }

    void Platform::name(std::string &plat_name) const
    {
        if (m_imp == NULL) {
            throw Exception("Platform implementation is missing", GEOPM_ERROR_RUNTIME, __FILE__, __LINE__);
        }
        plat_name = m_imp->platform_name();
    }

    int Platform::num_domain(void) const
    {
        return m_imp->num_energy_signal();
    }

    const PlatformTopology *Platform::topology(void) const
    {
        return m_imp->topology();
    }

    void Platform::transform_rank_data(uint64_t region_id, const struct geopm_time_s &aligned_time, const std::vector<double> &aligned_data, std::vector<struct geopm_telemetry_message_s> &telemetry)
    {
        const int NUM_RANK_SIGNAL = 2;
        int num_package = m_imp->num_package();
        int num_cpu = m_imp->num_logical_cpu();
        int num_platform_signal = m_imp->num_energy_signal() + m_imp->num_counter_signal();
        /// @todo assumes domain of control is the package
        std::vector<double> runtime(num_package);
        std::vector<double> min_progress(num_package);
        std::vector<double> max_progress(num_package);

        std::fill(runtime.begin(), runtime.end(), -DBL_MAX);
        std::fill(min_progress.begin(), min_progress.end(), DBL_MAX);
        std::fill(max_progress.begin(), max_progress.end(), -DBL_MAX);

        int num_cpu_per_package = num_cpu / num_package;
        if (m_imp->power_control_domain() == GEOPM_DOMAIN_PACKAGE) {
            int rank_offset = num_package * num_platform_signal;
            int rank_id = 0;
            for (size_t i = rank_offset;  i < aligned_data.size(); i += NUM_RANK_SIGNAL)  {
                for (auto it = m_rank_cpu[rank_id].begin(); it != m_rank_cpu[rank_id].end(); ++it) {
                    if (aligned_data[i + 1] != -1.0) {
                        // Find minimum progress for any rank on the package
                        if (aligned_data[i] < min_progress[(*it) / num_cpu_per_package]) {
                            min_progress[(*it) / num_cpu_per_package] = aligned_data[i];
                        }
                        // Find maximum progress for any rank on the package
                        if (aligned_data[i] > max_progress[(*it) / num_cpu_per_package]) {
                            max_progress[(*it) / num_cpu_per_package] = aligned_data[i];
                        }
                        // Find maximum runtime for any rank on the package
                        if (aligned_data[i + 1] > runtime[(*it) / num_cpu_per_package]) {
                            runtime[(*it) / num_cpu_per_package] = aligned_data[i + 1];
                        }
                    }
                }
                ++rank_id;
            }
            // Insert platform signals
            for (int i = 0; i < rank_offset; ++i) {
                int domain_idx = i / num_platform_signal;
                int signal_idx = i % num_platform_signal;
                telemetry[domain_idx].signal[signal_idx] = aligned_data[domain_idx * num_platform_signal + signal_idx];
            }
            // Insert application signals
            int domain_idx = 0;
            for (int i = 0; i < num_package * NUM_RANK_SIGNAL; i += NUM_RANK_SIGNAL) {
                // Do not drop a region exit
                if (max_progress[domain_idx] == 1.0) {
                    telemetry[domain_idx].signal[num_platform_signal] = 1.0;
                }
                else {
                    telemetry[domain_idx].signal[num_platform_signal] = min_progress[domain_idx] == DBL_MAX ? 0.0 : min_progress[domain_idx];
                }
                telemetry[domain_idx].signal[num_platform_signal + 1] = runtime[domain_idx] == -DBL_MAX ? -1.0 : runtime[domain_idx];
                ++domain_idx;
            }
            // Insert region and timestamp
            for (int i = 0; i < num_package; ++i) {
                telemetry[i].region_id = region_id;
                telemetry[i].timestamp = aligned_time;
            }
        }
    }

    void Platform::init_transform(const std::vector<int> &cpu_rank)
    {
        std::set<int> rank_set;
        for (auto it = cpu_rank.begin(); it != cpu_rank.end(); ++it) {
            rank_set.insert(*it);
        }
        m_num_rank = rank_set.size();
        int i = 0;
        std::map<int, int> rank_map;
        for (auto it = rank_set.begin(); it != rank_set.end(); ++it) {
            rank_map.insert(std::pair<int, int>(*it, i));
            ++i;
        }
        m_rank_cpu.resize(m_num_rank);
        for (i = 0; i < (int)cpu_rank.size(); ++i) {
            m_rank_cpu[rank_map.find(cpu_rank[i])->second].push_back(i);
        }
    }

    int Platform::num_control_domain(void) const
    {
        return (topology()->num_domain(m_imp->power_control_domain()));
    }

    void Platform::tdp_limit(double percentage) const
    {
        //Get the TDP for each socket and set its power limit to match
        int packages = m_imp->num_package();
        double tdp = m_imp->package_tdp();
        double pkg_lim = tdp * (percentage * 0.01);
        for (int i = 0; i < packages; i++) {
            m_imp->write_control(m_imp->power_control_domain(), i,  GEOPM_TELEMETRY_TYPE_PKG_ENERGY, pkg_lim);
        }
    }

    void Platform::manual_frequency(int frequency, int num_cpu_max_perf, int affinity) const
    {
        //Set the frequency for each cpu
        int64_t freq_perc;
        bool small = false;
        int num_logical_cpus = m_imp->num_logical_cpu();
        int num_real_cpus = m_imp->num_hw_cpu();
        int packages = m_imp->num_package();
        int num_cpus_per_package = num_real_cpus / packages;
        int num_small_cores_per_package = num_cpus_per_package - (num_cpu_max_perf / packages);

        if (num_cpu_max_perf >= num_real_cpus) {
            throw Exception("requested number of max perf cpus is greater than controllable number of frequency domains on the platform",
                            GEOPM_ERROR_RUNTIME, __FILE__, __LINE__);
        }

        for (int i = 0; i < num_logical_cpus; i++) {
            int real_cpu = i % num_real_cpus;
            if (affinity == GEOPM_POLICY_AFFINITY_SCATTER && num_cpu_max_perf > 0) {
                if ((real_cpu % num_cpus_per_package) < num_small_cores_per_package) {
                    small = true;
                }
            }
            else if (affinity == GEOPM_POLICY_AFFINITY_COMPACT && num_cpu_max_perf > 0) {
                if (real_cpu < (num_real_cpus - num_cpu_max_perf)) {
                    small = true;
                }
            }
            else {
                small = true;
            }
            if (small) {
                freq_perc = ((int64_t)(frequency * 0.01) << 8) & 0xffff;
                m_imp->msr_write(GEOPM_DOMAIN_CPU, i, "IA32_PERF_CTL", freq_perc & 0xffff);
            }
            small = false;
        }
    }

    void Platform::save_msr_state(const char *path) const
    {
        m_imp->save_msr_state(path);
    }

    void Platform::restore_msr_state(const char *path) const
    {
        m_imp->restore_msr_state(path);
    }

    void Platform::write_msr_whitelist(FILE *file_desc) const
    {
        if (file_desc == NULL) {
            throw Exception("Platform(): file descriptor is NULL", GEOPM_ERROR_INVALID, __FILE__, __LINE__);
        }

        m_imp->whitelist(file_desc);
    }

    void Platform::revert_msr_state(void) const
    {
        m_imp->revert_msr_state();
    }

    double Platform::control_latency_ms(void) const
    {
        return m_imp->control_latency_ms();
    }

    double Platform::throttle_limit_mhz(void) const
    {
        return m_imp->throttle_limit_mhz();
    }

    bool Platform::is_updated(void)
    {
        return m_imp->is_updated();
    }
}

redpajama_set_name: RedPajamaGithub


text:
The fight against illegal deforestation with TensorFlow
Editor's Note: Rainforest Connection is using technology to protect the rainforest. Founder and CEO Topher White shares how TensorFlow, Google's open-source machine learning framework, aids in their efforts.
For me, growing up in the 80s and 90s, the phrase "Save the Rainforest" was a directive that barely progressed over the years. The appeal was clear, but the threat was abstract and distant. And the solution (if there was one) seemed difficult to grasp. Since then, other worries—even harder to grasp in their immediacy and scope—have come to dominate our conversations: climate change, as an example.
So many of us believe that technology has a crucial role to play in fighting climate change, but few are as aware that "Saving the Rainforest" and fighting climate change are nearly one and the same. By the numbers, destruction of forests accounts for nearly one-fifth of all greenhouse gas emissions every year. And in the tropical rainforest deforestation accelerated on the heels of rampant logging—up to 90 percent of which is done illegally and under the radar.
Stopping illegal logging and protecting the world's rainforests may be the fastest, cheapest way for humanity to slow climate change. And who's best suited to protect the rainforest? The locals and the indigenous tribes that have lived there for generations.
Rainforest Connection is a group of engineers and developers focused on building technology to help locals—like the Tembé tribe from central Amazon—protect their land, and in the process, protect the rest of us from the effects of climate change. Chief Naldo Tembé reached out to me a couple years ago seeking to collaborate on ways technology could help stop illegal loggers from destroying their land. Together, we embarked on an ambitious plan to address this issue using recycled cell phones and machine learning.
Our team has built the world's first scalable, real-time detection and alert system for logging and environmental conservation in the rainforest. Building hardware that will survive in the rainforest is challenging, but we're using what's already there: the trees. We've hidden modified smartphones powered with solar panels—called "Guardian" devices—in trees in threatened areas, and continuously monitor the sounds of the forest, sending all audio up to our cloud-based servers over the standard, local cell-phone network.
A recycled Android phone is transformed into a solar-powered acoustic monitoring device that listens to sounds of illegal logging in the area.
Topher and a Tembé tribesman hide a solar-powered acoustic monitoring device high up on a tree.
A member of the Tembé tribe climbs down, having just installed another acoustic monitoring device that listens for sounds of chainsaws and logging trucks.
Topher works with the Tembé tribe to analyze the sound data captured by the hidden cell phone devices using TensorFlow.
Once the audio is in the cloud, we use TensorFlow, Google's machine learning framework, to analyze all the auditory data in real-time and listen for chainsaws, logging trucks and other sounds of illegal activity that can help us pinpoint problems in the forest. Audio pours in constantly from every phone, 24 hours a day, every day, and the stakes of missed detections are high.
That's why we've come to use TensorFlow, due to its ability to analyze every layer of our data heavy detection process. The versatility of the machine learning framework empowers us to use a wide range of AI techniques with Deep Learning on one unified platform. This allows us to tweak our audio inputs and improve detection quality. Without the help of machine learning, this process is impossible. When fighting deforestation, every improvement can mean one more saved tree.
The next step is to involve those who will inherit the planet from us: kids. Today, we're launching the "Planet Guardians" program with hundreds of students from Los Angeles STEM science programs. These students will speak with the local Tembé Tribe through Google Hangouts, and build their own Guardian devices to be sent to the Amazon. We expect that the Guardian devices built by these LA students will protect nearly 100,000 acres through the year 2020.
With technology, and the possibilities that TensorFlow opens up for us, Rainforest Connection will continue to do our part in the fight against climate change. And programs like "Planet Guardians" will ensure that the next generation is a part of this fight, too.
9 ways we use AI in our products
By Justin Burr
7 ways Google is using AI to help solve society's challenges
By Katie Malczyk
Why we focus on AI (and to what end)
By James Manyika
Responsible AI: Looking back at 2022, and to the future
Looking back at Google's 2022 progress in principled AI innovation and ahead to 2023 and beyond.
By Marian Croak Jen Gennai
Google's 2022 year in review
An update on our clean energy progress in 2022
By Michael Terrell

redpajama_set_name: RedPajamaCommonCrawl


text:
MixLine Feature: Streisand, Gibb Indulge in Guilty Pleasures
By Heather Johnson ⋅ Nov 18, 2005
From L to R: Julio Hernandez (bass), Dan Warner (guitar), Barry Gibb, John Merchant, Barbra Streisand, Doug Emery (keyboard, programmer), Lee Levin (drums) and Richie Bravo (percussion)
After 25 years—long ones, for hardcore fans—Barbra Streisand and Barry Gibb reunite for Guilty Pleasures, the long-awaited part duex to her multi-Platinum smash Guilty, which featured Gibb as producer, writer, backing vocalist and duet partner.
The approaching 25-year mark inspired Streisand to reconnect with Gibb, who again, produced much of the album, sang two duets and added backing vocals to other tracks.
Engineer John Merchant, who has worked with the Gibb brothers for more than 18 years, co-produced the project with Barry Gibb (Streisand and Jay Landers executive produced) and played a key role in finding the right players and overseeing preproduction. With three days booked at Criteria Studios in Miami for demos, Merchant assembled a team of ace local musicians, all new to Gibb. "I said, 'give me three days at Criteria and let me show you what they can do," says Merchant. "Barry was really thrilled at who we have locally." Streisand reportedly loved the demos, and told the guys, "keep going." They did, and ended up with ten demo'd songs.
The ensemble returned to Criteria for the official round of tracking, followed by overdubs at Gibb's studio, Middle Ear Studio, located in now-trendy Miami Beach. Gibb and Merchant then met up with Babs in L.A. to record her vocals, but rather than hole up in a conventional studio, Streisand brought the team to her guest cottage, affectionately called "Grandma's House," in Malibu. "It's really charming," Merchant recalls. "The house was built in the 1950s and sits on the cliffs of Malibu. It has beautiful open beam ceilings, a view of the Pacific, but we had to essentially create a studio."
Working with local rental companies Design FX and Advanced Audio, Merchant rented a 24-channel SSL AWS900 console, a Pro Tools HD rig, various mic pre's and even found the exact Neumann M49 tube mic that Babs had used on previous projects. Merchant also brought some of his and Gibb's own toys including the Chandler TG Channel mic pre and Groove Tubes ViPRE tube mic preamp. For the Grandma's House sessions, Merchant recorded from the M49 to the Chandler to Apogee converters into Pro Tools. "No EQ, no compression, just flat to tape," he says.
Streisand and crew then moved to—where else—the Barbra Streisand Scoring Stage at Sony Pictures Studios to shoot interview footage for the DualDisc, as well as video for the album's debut single, "Stranger in a Strange Land" and another track, "Letting Go." For the latter tune, Streisand gave much more than just a lip-synched performance. "It's a great sounding room and they have a beautiful piano there," Merchant says. "The song ["Letting Go"] is a simple piano-vocal. Barbra said, 'Let's do a pass of that!' The first take was magic; now it's included on the DualDisc."
Merchant mixed the album at Middle Ear, but after his experience on the West Coast, the studio's Neve Capricorn seemed to lack the needed luster. "We recorded at 96k, and the Capricorn's maximum sample rate is 20-bit/48 k," he says. "After the first day of mixing, we thought, 'something doesn't sound right.' So we called Guitar Center Pro, and they sent over an SSL AWS900 to try out. We then ended up mixing on the exact same AWS900 we used in Malibu! It's pretty cool to mix an album like this on a board light enough to ship across the country in a road case."
For more information on Criteria, visit www.criteriastudios.com. To view videos from Guilty Pleasures, visit www.barbrastreisand.com/guiltypleasures/.
After 25 Years, Streisand, Gibb Indulge
'Guilty Pleasures' Done on SSL
MixLine Feature: THX—Bringing Higher Standards to Game Studios
MixLine Feature: Glen Kolotkin Produces Ka-Cha Debut
MixLine Feature: Hyde Street Studios Reopens Studio C
MixLine Feature: Ryan Greene Opens Crush Recording
MixLine Feature: Quad Studios Completes Sale
MixLine Feature: Opiate for the Masses "Rev Up" for New Album


text:
Rząd Élisabeth Borne – 43. rząd V Republiki Francuskiej funkcjonujący od maja 2022. Powołał go prezydent Emmanuel Macron. Zastąpił funkcjonujący od 2020 rząd Jeana Castex.

16 maja 2022, wkrótce po prezydenckiej reelekcji Emmanuela Macrona, Jean Castex podał gabinet do dymisji, która została przyjęta. Tego samego dnia na urząd premiera powołana została Élisabeth Borne. Pełny skład nowego rządu ogłoszono 20 maja 2022.

4 lipca 2022, wkrótce po wyborach parlamentarnych z czerwca 2022, dokonano rekonstrukcji gabinetu, przy czym Élisabeth Borne pozostała na stanowisku premiera.

Skład rządu w dniu powołania
 Ministrowie
 Premier: Élisabeth Borne
 Minister gospodarki, finansów, suwerenności przemysłowej i cyfrowej: Bruno Le Maire
 Minister spraw wewnętrznych: Gérald Darmanin
 Minister do spraw Europy i spraw zagranicznych: Catherine Colonna
 Minister sprawiedliwości i strażnik pieczęci: Éric Dupond-Moretti
 Minister ekologii i spójności terytorialnej: Amélie de Montchalin
 Minister edukacji narodowej i młodzieży: Pap Ndiaye
 Minister obrony: Sébastien Lecornu
 Minister zdrowia i profilaktyki: Brigitte Bourguignon
 Minister pracy, zatrudnienia i integracji: Olivier Dussopt
 Minister solidarności, autonomii i osób niepełnosprawnych: Damien Abad
 Minister szkolnictwa wyższego i badań naukowych: Sylvie Retailleau
 Minister rolnictwa i suwerenności żywnościowej: Marc Fesneau
 Minister transformacji i służb publicznych: Stanislas Guerini
 Minister do spraw terytoriów zamorskich: Yaël Braun-Pivet
 Minister kultury: Rima Abdul-Malak
 Minister transformacji energetycznej: Agnès Pannier-Runacher
 Minister sportu oraz do spraw igrzysk olimpijskich i paraolimpijskich: Amélie Oudéa-Castéra

 Ministrowie delegowani (podlegli innym ministrom)
 Ds. relacji z parlamentem i demokracji: Olivier Véran (przy premierze)
 Ds. równości płci, różnorodności i równych szans: Isabelle Lonvis-Rome (przy premierze)
 Ds. rachunków publicznych: Gabriel Attal (przy ministrze gospodarki, finansów, suwerenności przemysłowej i cyfrowej)
 Ds. wspólnot terytorialnych: Christophe Béchu (przy ministrze spraw wewnętrznych oraz ministrze ekologii i spójności terytorialnej)
 Ds. handlu zagranicznego i promocji: Franck Riester (przy ministrze do spraw Europy i spraw zagranicznych)
 Ds. Europy: Clément Beaune (przy ministrze do spraw Europy i spraw zagranicznych)

 Sekretarze stanu
 Przy premierze: Olivia Grégoire, Justine Benin, Charlotte Caubel
 Przy ministrach: Chrysoula Zacharopoulou

Zmiany w składzie rządu (sprzed rekonstrukcji)
 25 czerwca 2022
W związku z kandydowaniem na urząd przewodniczącego Zgromadzenia Narodowego z rządu odeszła Yaël Braun-Pivet; obowiązki ministra do spraw terytoriów zamorskich przejęła premier.

Skład rządu w wyniku rekonstrukcji z 4 lipca 2022
 Ministrowie
 Premier: Élisabeth Borne
 Minister gospodarki, finansów, suwerenności przemysłowej i cyfrowej: Bruno Le Maire
 Minister spraw wewnętrznych i do spraw terytoriów zamorskich: Gérald Darmanin
 Minister do spraw Europy i spraw zagranicznych: Catherine Colonna
 Minister sprawiedliwości i strażnik pieczęci: Éric Dupond-Moretti
 Minister obrony: Sébastien Lecornu
 Minister pracy, zatrudnienia i integracji: Olivier Dussopt
 Minister edukacji narodowej i młodzieży: Pap Ndiaye
 Minister szkolnictwa wyższego i badań naukowych: Sylvie Retailleau
 Minister rolnictwa i suwerenności żywnościowej: Marc Fesneau
 Minister ekologii i spójności terytorialnej: Christophe Béchu
 Minister transformacji energetycznej: Agnès Pannier-Runacher
 Minister kultury: Rima Abdul-Malak
 Minister zdrowia i profilaktyki: François Braun
 Minister solidarności, autonomii i osób niepełnosprawnych: Jean-Christophe Combe
 Minister transformacji i służb publicznych: Stanislas Guerini
 Minister sportu oraz do spraw igrzysk olimpijskich i paraolimpijskich: Amélie Oudéa-Castéra

 Ministrowie delegowani (podlegli innym ministrom)
 Ds. odnowy demokracji, rzecznik prasowy rządu: Olivier Véran (przy premierze)
 Ds. relacji z parlamentem i demokracji: Franck Riester (przy premierze)
 Ds. równości płci, różnorodności i równych szans: Isabelle Lonvis-Rome (przy premierze)
 Ds. rachunków publicznych: Gabriel Attal (przy ministrze gospodarki, finansów, suwerenności przemysłowej i cyfrowej)
 Ds. przemysłu: Roland Lescure (przy gospodarki, finansów, suwerenności przemysłowej i cyfrowej)
 Ds. transformacji cyfrowej i telekomunikacji: Jean-Noël Barrot (przy gospodarki, finansów, suwerenności przemysłowej i cyfrowej)
 Ds. małej i średniej przedsiębiorczości, handlu, rzemiosła i turystyki: Olivia Grégoire (przy gospodarki, finansów, suwerenności przemysłowej i cyfrowej)
 Ds. wspólnot terytorialnych: Caroline Cayeux (przy ministrze spraw wewnętrznych i do spraw terytoriów zamorskich oraz ministrze ekologii i spójności terytorialnej)
 Ds. terytoriów zamorskich: Jean-François Carenco (przy ministrze spraw wewnętrznych i do spraw terytoriów zamorskich)
 Ds. handlu zagranicznego, promocji i Francuzów poza granicami kraju: Olivier Becht (przy ministrze do spraw Europy i spraw zagranicznych)
 Ds. kształcenia zawodowego i szkoleń zawodowych: Carole Grandjean (przy ministrze pracy, zatrudnienia i integracji oraz ministrze edukacji narodowej i młodzieży)
 Ds. transportu: Clément Beaune (przy ministrze ekologii i spójności terytorialnej)
 Ds. miast i mieszkalnictwa: Olivier Klein (przy ministrze ekologii i spójności terytorialnej)
 Ds. organizacji terytorialnej i zawodów w służbie zdrowia: Agnès Firmin Le Bodo (przy ministrze zdrowia i profilaktyki)
 Ds. osób niepełnosprawnych: Geneviève Darrieussecq (przy ministrze solidarności, autonomii i osób niepełnosprawnych)

 Sekretarze stanu
 Przy premierze: Charlotte Caubel, Hervé Berville, Marlène Schiappa
 Przy ministrach: Sonia Backès, Laurence Boone, Chrysoula Zacharopoulou, Sarah El Haïry, Patricia Mirallès, Bérangère Couillard, Dominique Faure

Zmiany w składzie rządu (po rekonstrukcji)
 28 listopada 2022
Z rządu odeszła Caroline Cayeux, Dominique Faure został awansowany na ministra delegowanego ds. wspólnot terytorialnych i wsi (przy ministrze spraw wewnętrznych i do spraw terytoriów zamorskich oraz ministrze ekologii i spójności terytorialnej).

Przypisy

2022 we Francji
Borne

redpajama_set_name: RedPajamaWikipedia


Small Paintings That Sell - This is the latest information about Small Paintings That Sell, this information can be your reference when you are confused to choose the right design for your home.
Small Paintings That Sell. Designing your own home will give your own satisfaction and pleasure, which you will not get by sharing other jobs in this world. If you intend to do so, designing your own home is not impossible.
Interior, Vintage Kitchen Island Ideas was posted June on this site by Clevrhome.co. More over Vintage Kitchen Island Ideas has viewed by 36213 visitor.
Interior, Shop Front Design Ideas was posted June on this site by Clevrhome.co. More over Shop Front Design Ideas has viewed by 66289 visitor.
Interior, Restaurant Design San Francisco was posted June on this site by Clevrhome.co. More over Restaurant Design San Francisco has viewed by 81562 visitor.
Interior, Manhattan Penthouse For Sale was posted June on this site by Clevrhome.co. More over Manhattan Penthouse For Sale has viewed by 16850 visitor.
Interior, Modern Furniture Living Room Designs was posted June on this site by Clevrhome.co. More over Modern Furniture Living Room Designs has viewed by 18856 visitor.
Interior, Who Is Tory Burch Designer was posted June on this site by Clevrhome.co. More over Who Is Tory Burch Designer has viewed by 75963 visitor.
Interior, Best Interior Design Rendering Software was posted June on this site by Clevrhome.co. More over Best Interior Design Rendering Software has viewed by 58099 visitor.
Interior, Romantic Restaurants In Tulsa was posted June on this site by Clevrhome.co. More over Romantic Restaurants In Tulsa has viewed by 81772 visitor.
Interior, Appetizers To Make At Home was posted June on this site by Clevrhome.co. More over Appetizers To Make At Home has viewed by 25769 visitor.
Interior, Best Rug Material For Living Room was posted June on this site by Clevrhome.co. More over Best Rug Material For Living Room has viewed by 77919 visitor.
Interior, Custom Made Furniture San Francisco was posted June on this site by Clevrhome.co. More over Custom Made Furniture San Francisco has viewed by 79429 visitor.
Interior, Elegant Living Room Chairs was posted June on this site by Clevrhome.co. More over Elegant Living Room Chairs has viewed by 9701 visitor.
Interior, Design Your Own House Kids was posted June on this site by Clevrhome.co. More over Design Your Own House Kids has viewed by 21661 visitor.
Interior, The Deck Jackson Hole was posted June on this site by Clevrhome.co. More over The Deck Jackson Hole has viewed by 13659 visitor.
Interior, Top 10 Caribbean Honeymoon Destinations was posted June on this site by Clevrhome.co. More over Top 10 Caribbean Honeymoon Destinations has viewed by 41289 visitor.
Interior, White Oval Back Dining Chair was posted June on this site by Clevrhome.co. More over White Oval Back Dining Chair has viewed by 25781 visitor.
Interior, Beautiful Apartments In Nyc was posted June on this site by Clevrhome.co. More over Beautiful Apartments In Nyc has viewed by 73862 visitor.
Interior, Earth Friendly House Plans was posted June on this site by Clevrhome.co. More over Earth Friendly House Plans has viewed by 51218 visitor.
Interior, Palm Springs Strip Hotels was posted June on this site by Clevrhome.co. More over Palm Springs Strip Hotels has viewed by 47478 visitor.
Interior, Sydney Opera House Christmas was posted June on this site by Clevrhome.co. More over Sydney Opera House Christmas has viewed by 40995 visitor.
Interior, Retro Light Fixtures Kitchen was posted June on this site by Clevrhome.co. More over Retro Light Fixtures Kitchen has viewed by 83031 visitor.
Interior, Best Gift For Man On His Birthday was posted June on this site by Clevrhome.co. More over Best Gift For Man On His Birthday has viewed by 48079 visitor.
Interior, Mid Century Modern Hanging Lamp was posted June on this site by Clevrhome.co. More over Mid Century Modern Hanging Lamp has viewed by 11513 visitor.
Interior, Best Carpet For A Bedroom was posted June on this site by Clevrhome.co. More over Best Carpet For A Bedroom has viewed by 18678 visitor.
Interior, Interior Designer Candice Olson was posted June on this site by Clevrhome.co. More over Interior Designer Candice Olson has viewed by 46366 visitor.
Interior, Where To Buy Indoor Outdoor Carpet was posted June on this site by Clevrhome.co. More over Where To Buy Indoor Outdoor Carpet has viewed by 58825 visitor.
Interior, Farmhouse Kitchen Floor Tiles was posted June on this site by Clevrhome.co. More over Farmhouse Kitchen Floor Tiles has viewed by 43346 visitor.


Dirk Schmidt developed a passion for sharks from the early age of 10, by the age of 16 he had compiled his own shark dossier of over 500 pages on apex shark behavior and biology.
Dirk wrote and published 4 nature books including "Surfing the cape of Storms" in 2008, "Great Whites of False Bay" in 2009 – a world first on breaching White sharks, "The Penguins of Boulders" in 2010 – a book on the endangered African Penguin, and late 2011, "WHITE SHARKS – magnificent, mysterious, and misunderstood" published by Jonathan Ball Publishers, which includes some of his award winning photographic images, and which has been reviewed on one of South Africa's premier nature television channel SABC2's 50/50.
Currently Dirk is working on a 2nd edition of "WHITE SHARKS – magnificent, mysterious, and misunderstood" to include some of his latest findings and current research on predatory White shark behavior, as well as White shark areas of the USA, Mexico and Australia and marine conservation issues in particular sharks and rays. Both "Surfing the Cape of Storms" and "The Penguins of Boulders" are expected to be re-published as 2nd editions due to popular demand.
Dirk's first public foray into television was in 2011, for the Discovery Channel – Shark week program, "How sharks hunt – an anatomy of an attack"(aired August 2011) where he consulted as a on-camera expert concerning White shark attack and predatory behavior working with the program hosts, Dave Canterbury and Cody Lundin.
Dirk has held numerous speaking engagements and his work is recognized having contributed significantly to understanding White shark behavior within the scientific and shark community, developing new insights and understandings in shark behavior and attack profiling by many of his peers.
Dirk is a qualified Dive master with over 1,100 dives to his credit. He is also the CEO and founding member of an international consulting company and has earned a Ph.D in Business Management. In 1988, and wrote an acclaimed world-first book on "Credit notes and dysfunctional management".
As senior partner his position allows him to pursue his passion of writing, photography and marine conservation leading to a number of his books being published.
Besides the above mentioned books, Dirk has also self-published numerous of his own titles on travel, Africa, photography and surfing, and many of his images have been used in various magazines, including the South African National Defense Force quarterly publications (content, front and back covers), House and Home cover , Surfing magazines such as Zig-Zag, local and international newspapers.


Earth Coloring Pages Free Printable. Earth Coloring Sheets Pages Free Printable Genkilife Intended For Plans 5. Mother Earth Phra Mae Thorani Coloring Page Free Printable Pertaining To Pages Plan 11. Earth Map Coloring Pages Free Printable For Inspirations 7. Earth Coloring Sheets Day Pages Best For Free Printable Designs 4. Top 15 Free Printable Earth Coloring Pages Online In Designs 6. Free Printable Earth Coloring Pages For Kids Pinterest Within Designs 1. Earth Coloring Page ColoriageEnLigne Club For Pages Free Printable Designs 9.
Free Printable Earth Coloring Pages For Kids Inside Plan 0. Earth Coloring Page Tldregistry Info Pertaining To Pages Free Printable Decorations 13. Earth Coloring Page Dr Odd For Pages Free Printable Idea 8. Earth Moon And Sun Coloring Page Free Printable Pages Within Idea 15. Free Printable Earth Coloring Pages For Kids Decor 2.


Hajime Tabata talks about accountability.
After a ten year long wait, Final Fantasy 15 suffered another last minute delay, when it was pushed from its global September 30 release date to a November 29 one. In the large scheme of things, it's a small delay, sure, and most players probably won't even remember it if the game turns out good in the end- but for now, it was probably infuriating to a lot of fans.
Speaking to VICE at Gamescom, Final Fantasy 15 director Hajime Tabata explained further the reasoning behind delaying the game, noting that its playability and levels of polish were simply not up to his desired standard in later sections of the game.
"Okay, so that opening area is one that you'll be able to have a lot of fun in," Tabata said. "But if you played the game for 40, maybe 50 hours, you'll have come across areas where the playability, as it stands, isn't quite where we want it to be. And there are still some bugs in the game's later areas, and other parts where the optimization isn't quite at the standard we're aiming for.
The inability for some people to patch their games was apparently a big sticking point for Tabata- and it appears to have been the primary reason for him having made the decision to delay the game.
"We want to make this experience right for everyone who plays it. Like I said, originally I thought a patch would be okay, but I heard some good information that a lot of people still play their games offline, even people who have the internet at home. When I heard that, it changed my thinking on it," he explained.
He also explained that there was surprisingly little pushback from the team, and that the decision was arrived at relatively quickly.
And what does he think of the reaction to the announcement of the delay? Most people were surprisingly fine with the announcement (I think the sincere way in which Tabata broke the news probably had something to do with that), but what about the few voices of dissent in the crowd?
I have to say, each time I hear Tabata talk, and his views on game development and interactions with fans, and accountability as a creator, my respect for him increases. I am still not entirely sold on Final Fantasy 15 actually being good, if I have to be honest- but I think that if that happens, it will happen in spite of Tabata's best efforts, not because of them.


Enjoy the superb korean girl and her wonderful Asian outfits. She wants to impress, so you'd better find her a perfect kimono, the right hairstyle and the perfect makeup to make her feel like the prettiest Korean girl ever! Add a fancy umbrela and there you have it: the Korean girl customized to your special liking.


A couple of days ago, I got me an Amazon Echo. The device does an impressive job at showing me how limited today's voice interfaces are. That needs to change.
"I'm not sure." "I don't know that." That sort of cluelessness is what I hear from Alexa, the voice assistant of the Amazon Echo, most of the time. This may be unsatisfying, but basically, it's only a problem of the available knowledge base. Add more substance to Alexa's backend, and this kind of answers will become much less common. Thus, I don't want to continue focusing on the lack of knowledge in this article.
Here, I just want to mention that the Google Assistant wins any competition in that regard. Siri has a similarly horrible error rate, although Siri is the oldest technology of the three, so it should theoretically be the most advanced.
The actual issue with Alexa and all other voice assistants is a different one. It's not about what used to be the biggest issue, the voice detection in itself. Thanks to fast cloud connections and sufficient computing power, detection itself is near perfect. Even the differentiation of different languages in one sentence is no longer a problem for the technology.
The next big construction site that limits the success of the voice technology in the form of conversational interfaces is the concept of conversation in itself. Honestly, I have to admit that using my Echo does not really resemble a conversation.
Alexa reminds me of the early MS DOS. As if I was using command lines, I pull one sentence after another out of the slim can. I always start my commands with the word "Alexa". The Echo doesn't respond to other requests. Without "Alexa", there's not much going on. This is different for some external skills. I'll admit that, but the basic functionality is not smooth at all.
I also can't talk the way I want to. Alexa needs a sentence to be pronounced the way she wants you to. Otherwise, she simply won't understand the command. The developers have prepared some alternative variants for typical input. But you still need to know them to get Alexa to reply. This is pretty nerdy, and very close to a toy. I guess there's a reason why setting a timer is one of the most used Echo functions.
Let's get back to the previously mentioned big issue in conversational design via voice controls. Complex processes, such as the purchase of a product that can be configured with different options, can not be taken care of given the common usage strategy. Here, an actual conversation with the technology is needed to achieve any results. The voice assistant has to be able to cause conversion. At the very least it shouldn't be an obstacle to that goal. At best it actually positively supports the process.
I have yet to encounter that voice assistant that keeps me motivated and dedicated. Creating that assistant will be a lot of work for designers. It's somewhat similar to designing a longer form. Both come with the danger of the user exiting at any time. The determined cancellation rates of common shopping cart strategies prove this. It's also important to build a connection between the user and the system. At the lowest level, this connection starts with the system not querying data that it already knows.
Let's imagine talking about Paul from the HR department with a colleague. After the first couple of sentences, we'll only use "him, he" to talk about Paul, without ever pointing out that we're still talking about Paul. Throughout the conversation, we'll build a context that we assume is known in following sentences. This way, we even understand subtle innuendos. Ten minutes later, we've probably forgotten our conversation about Paul.
Transferred to the voice assistant, this would mean that it needed some kind of short term memory in order to be able to handle information and context productively for a limited time. With Siri and the Google Assistant, we can already see early stages of this, when it comes to sending a WhatsApp message, for example. Here, the assistant guides us through the process.
Speaking of guidance: this aspect is a major factor in dialogue design. We always talk about user guidance but mostly mean click paths that were placed more or less cleverly. With a speech technology, we can cultivate real guidance. I can see a massive advantage in that.
With all that, speech interfaces still need to stay easy to control. In fact, voice interfaces only make sense in the long run if they always present the easiest options. Otherwise, users will always look for the other, easier alternative. Over time, we'll have to forgo the wake-up commands. After all, starting every sentence with "Alexa,…" is not natural. Instead, the assistant would have to be able to tell when he's being queried from the context. I'm well aware of the data protection law aspect of this statement, and it would have to be taken care of.
Even after all the addressed improvements, the voice assistant can only become a true companion if it embarks on us. To do so, it would have to learn and embrace our peculiarities. Otherwise, it will remain the synthetic information source that it is now. We rarely trust it, and are even more reserved than we are on a website. We've known the latter for almost a quarter century, so we simply know it better than the talking algorithm.
Last but not least, a massive skid will be the result of the fact that speech does not equal text. A text is always formal and defined. Speech has accents, dialects, sociolects, a wide variety of articulation options. Can the online shop afford to force potential customers to use that formal speech when that potential customer wants to order? "Sure", is what you can say, but in the end, this potential client is alone in front of his computer, and the decision if he orders or not is all his. I think that we have to adjust our technology to the existing peculiarities of humans, rather than forcing these humans to remove their peculiarities in favor of the technology.
As you can see, there's a very long way to the real voice interface. The voice assistants that you use today will barely resemble the interfaces of the future.


text:
from __future__ import absolute_import

import os
import inspect
from collections import OrderedDict
from textwrap import dedent

from .ast import (
    Class, Field, File, Name, Callable, Local, If, Block, Assign, While,
    Return, ExprStmt, Native, Statement, Expression, Call, Super, Method,
    String, Number, Package, Primitive, Interface, Annotation, Macro,
    Function, CompilerVersionSpec, AST,
)
from .dispatch import dispatch
from .exceptions import CompileError

DEFAULT = object()

class CompileWarning(object):
    def __init__(self, loc, warning):
        self.loc = loc
        self.warning = warning

    def __str__(self):
        return "%s: warning: %s" % (lineinfo(self.loc),  self.warning)

@dispatch(AST, object)
def get_field(ast_node, whatever, default=DEFAULT):
    return None

@dispatch(Class, Field)
def get_field(cls, field, default=DEFAULT):
    return get_field(cls, field.name, default)

@dispatch(Class, Name)
def get_field(cls, name, default=DEFAULT):
    return get_field(cls, name.text, default)

@dispatch(Class, basestring)
def get_field(cls, name, default=DEFAULT):
    if name in cls.env:
        return cls.env[name]
    else:
        for type in cls.bases:
            if type.resolved.type:
                result = get_field(type.resolved.type, name, None)
                if result: return result
        else:
            if default is DEFAULT:
                raise KeyError(name)
            else:
                return default

@dispatch(Field)
def is_meta(f):
    return f.name.text.endswith("_ref") and f.type.code() == "reflect.Class"

@dispatch(File)
def is_meta(f):
    return f.name == "reflector"

def get_fields_r(cls, result):
    for b in cls.bases:
        get_fields_r(b.resolved.type, result)
    for d in cls.definitions:
        if isinstance(d, Field):
            if is_meta(d): continue
            result.append(d)
    return result

def get_fields(cls):
    result = []
    get_fields_r(cls, result)
    return result

@dispatch(Callable)
def has_return(fun):
    return has_return(fun.body)

@dispatch(Local)
def has_return(l):
    return False

@dispatch(If)
def has_return(iff):
    return has_return(iff.consequence) and has_return(iff.alternative)

@dispatch(Block)
def has_return(b):
    return has_return(b.statements)

@dispatch(list)
def has_return(stmts):
    for stmt in stmts:
        if has_return(stmt):
            return True
    return False

@dispatch(Assign)
def has_return(assgn): return False

@dispatch(While)
def has_return(wh): return False

@dispatch(Return)
def has_return(r): return True

@dispatch(ExprStmt)
def has_return(e): return False

@dispatch(type(None))
def has_return(e): return False

@dispatch(Native)
def has_return(e): return False

def has_super(fun):
    for stmt in fun.body.statements:
        if is_super(stmt):
            return True
    return False

@dispatch(Statement)
def is_super(stmt):
    return False

@dispatch(ExprStmt)
def is_super(stmt):
    return is_super(stmt.expr)

@dispatch(Expression)
def is_super(expr):
    return False

@dispatch(Call)
def is_super(call):
    return isinstance(call.expr, Super)

def is_abstract(cls):
    for d in cls.definitions:
        if isinstance(d, Method) and d.body is None:
            return True
    return False

def constructor(cls):
    cons = constructors(cls)
    if not cons:
        cons = base_constructors(cls)
    if cons:
        if len(cons) == 1:
            return cons[0]
        raise CompileError("%s: Too many constructors in class %s: %s" % (
            lineinfo(cls), cls.name.text, ", ".join("'%s'" % c.name.text for c in cons)))

def constructors(cls):
    return [d for d in cls.definitions if isinstance(d, Callable) and d.type is None]

def base_type(cls):
    for b in cls.bases:
        if is_extendable(b.resolved.type):
            return b

def base_constructors(cls):
    base = base_type(cls)
    cons = []
    while base:
        cons = constructors(base.resolved.type)
        if cons:
            break
        else:
            base = base_type(base.resolved.type)
    return cons

def base_bindings(cls):
    bindings = OrderedDict()
    for b in cls.bases:
        bindings.update(b.resolved.bindings)
        bb = base_bindings(b.resolved.type)
        bindings.update(bb)
    return bindings

@dispatch(String)
def literal_to_str(lit):
    return str(lit)[1:-1]

@dispatch(Number)
def literal_to_str(lit):
    return str(lit)

def get_package_version(pkg):
    for ann in pkg.annotations:
        if ann.name.text == "version":
            assert len(ann.arguments) == 1
            return literal_to_str(ann.arguments[0])
    return "0.0.1"

def sanitize(name):
    return name.replace('-', '_').replace('.', '_')

def filebase(name):
    return os.path.splitext(os.path.basename(name))[0]

def namever(obj):
    for file in obj.root.files:
        if file.dist: return file.dist.name.text, file.dist.version
    if isinstance(obj, File):
        file = obj
    else:
        file = obj.file
    name = sanitize(filebase(file.name))
    packages = [d for d in file.definitions if isinstance(d, Package)]
    if packages:
        firstPackage = packages[0]
        version = get_package_version(firstPackage)
    else:
        version = "0.0.1"
    return name, version

def mdroot(file):
    name, _ = namever(file)
    return name + "_md"

def is_extendable(node):
    return isinstance(node.resolved.type, Class) and \
        not isinstance(node.resolved.type, (Primitive, Interface))

@dispatch(Class, dict)
def get_methods(cls, result, predicate, omitInterface):
    for dfn in cls.definitions:
        if isinstance(dfn, Callable) and dfn.type and predicate(dfn):
            name = dfn.name.text
            if name not in result:
                result[name] = dfn
    for base in cls.bases:
        if not isinstance(base.resolved.type, (Primitive, Interface)[:omitInterface and 2 or 1]):
            get_methods(base.resolved.type, result, predicate, omitInterface)

@dispatch(Class)
def get_methods(cls, predicate, omitInterface):
    result = OrderedDict()
    get_methods(cls, result, predicate, omitInterface)
    return result

@dispatch(Class)
def get_methods(cls, omitInterface):
    return get_methods(cls, lambda x: True, omitInterface)

@dispatch(Class, dict, dict, dict)
def get_defaulted_methods(cls, result, derived, bindings):
    if isinstance(cls, (Interface, Primitive)):
        get_methods(cls, result, lambda dfn: dfn.body and dfn.name.text not in derived, True)
    for base in cls.bases:
        bindings.update(base.resolved.bindings)
        get_defaulted_methods(base.resolved.type, result, derived, bindings)

@dispatch(Class)
def get_defaulted_methods(cls):
    result = OrderedDict()
    derived = get_methods(cls, True)
    bindings = OrderedDict()
    get_defaulted_methods(cls, result, derived, bindings)
    return result, bindings

@dispatch(Class)
def get_interfaces(cls):
    return [t.resolved.type for t in cls.bases if isinstance(t.resolved.type, (Interface, Primitive))]

@dispatch(Class)
def get_defaulted_statics(cls):
    result = OrderedDict()
    for iface in get_interfaces(cls):
        for f in get_fields(iface):
            if f.static and f.name.text not in result:
                result[f.name.text] = f
    return result

def indent(st, level=4, leading_nl=True):
    if st:
        if isinstance(st, (tuple, list)):
            st = "\n".join(st)
        spaces = " "*level
        pst = ""
        while pst != st:
            pst = st
            st = st.replace("\n\n\n","\n\n")
        st = ("\n" + st).replace("\n", "\n%s" % spaces) + "\n"
        while pst != st:
            pst = st
            st = st.replace("\n%s\n" % spaces, "\n\n")
        if not leading_nl:
            st = st[1:]
        return st
    else:
        return ""

class Code:

    identifier = None

    def __init__(self, comment, body="", head="", tail=""):
        if Code.identifier is not None and comment is not None:
            head = comment(Code.identifier) + head

        self.body = body
        self.head = head
        self.tail = tail

    def __add__(self, code):
        return Code(None, self.body + code, self.head, self.tail)

    def __str__(self):
        return "%s%s%s" % (self.head, self.body, self.tail)

def doc(obj):
    lines = []
    for a in obj.annotations:
        if a.name.text == "doc":
            doc_eval(a, lines)
    return lines

@dispatch(Annotation)
def doc_eval(ann, lines):
    for arg in ann.arguments:
        doc_eval(arg, lines)

@dispatch(String)
def doc_eval(st, lines):
    # XXX: need to properly process string literal
    lines.append(st.text[1:-1])

def doc_helper(lines, head="", prefix="", tail=""):
    if lines:
        result = [head]
        split_lines = []
        for line in lines:
            if "\n" in line:
                add_lines = dedent(line).lstrip().split("\n")
            else:
                add_lines = [line]
            split_lines.extend(add_lines)
        result.extend([("%s%s" % (prefix, l.lstrip())).rstrip() for l in split_lines])
        result.append(tail)
        result.append("")
        return "\n".join(result)
    else:
        return ""

@dispatch(Package)
def readme(pkg, lines):
    for d in pkg.definitions:
        readme(d, lines)

@dispatch(Function)
def readme(fun, lines):
    lines.append("## %s(%s)" % (fun.name, fun.params))
    lines.append(doc_helper(doc(fun)))

@dispatch(Macro)
def readme(fun, lines):
    lines.append("## %s(%s)" % (fun.name, fun.params))
    lines.append(doc_helper(doc(fun)))

@dispatch(Method)
def readme(m, lines):
    lines.append("### %s.%s(%s)" % (m.clazz.name, m.name, m.params))
    lines.append(doc_helper(doc(m)))

@dispatch(Class)
def readme(cls, lines):
    lines.append("## %s" % cls.name)
    lines.append(doc_helper(doc(cls)))

@dispatch(CompilerVersionSpec)
def readme(cls, lines):
    pass

class is_newer(object):
    def __init__(self, target, *deps):
        self.target = target
        self.deps = deps
        self._init()

    def _init(self):
        def resolve(result, explanation):
            self.explanation = explanation
            self.result = result
        if self.target is None:
            return resolve(False, "target is None")
        if not os.path.exists(self.target):
            return resolve(False, "target does not exist")
        ctime = os.stat(self.target).st_mtime
        for d in self.deps:
            if d is None:
                return resolve(True, "a dependency is None")
            if not os.path.exists(d):
                return resolve(True, "dependency does not exist %s" % d)
            diff = ctime - os.stat(d).st_mtime
            if diff <= 0:
                return resolve(False, "dependency %s is younger by %s" % (d, diff))
        return resolve(True, "OK")

    def __bool__(self):
        return self.result
    __nonzero__ = __bool__

    def __str__(self):
        return "is_newer(%s (%s, %s) -> %s)" % (
            self.result, self.target, self.deps, self.explanation)

def check_deprecated(dfn, expr, errors):
    deprecated = getattr(dfn, "_deprecated", None)
    if deprecated is None:
        deprecated = []
        found = False
        for a in getattr(dfn, "annotations", []):
            if a.name.text == "deprecated":
                eval_deprecated(a, deprecated)
                found = True
        if found:
            deprecated.insert(0, "Use of deprecated %s '%s'." % (
                dfn.__class__.__name__.lower(), dfn.name.text))
        setattr(dfn, "_deprecated", deprecated)
    if deprecated:
        errors.append(CompileWarning(expr, "%s" % (" ".join(deprecated))))

@dispatch(Annotation)
def eval_deprecated(a, deprecated):
    for a in a.arguments:
        eval_deprecated(a, deprecated)

@dispatch(String)
def eval_deprecated(a, deprecated):
    deprecated.append(a.text)

def compiled_quark(url):
    return "%sc" % url

def lineinfo(node):
    trace = getattr(node, "_trace", None)
    stack = [getattr(node, "filename", "<none>")]
    while trace:
        stack.append("%s:%s:" % (inspect.getfile(trace.annotator), trace.annotator.__name__))
        stack.append(trace.text)
        stack.append("<generated>")
        trace = trace.prev
    stack[-1] = stack[-1] + (":%s:%s" % (node.line, node.column))
    return "\n".join(stack)

def extract_ast_stack(frames):
    ast_stack = []
    ast_seen = []
    for frame in frames:
        ast_frame = []
        a = inspect.getargvalues(frame[0])
        def tryget(x,a=a):
            try:
                return a.locals.get(x)
            except (TypeError, KeyError):
                pass
        args = map(tryget, a.args)
        if a.varargs:
            args.extend(a.locals[a.varargs])
        if a.keywords:
            args.extend(v for k,v in sorted(a.locals[a.keywords].items()))
        for arg in args:
            if isinstance(arg, AST) and arg not in ast_seen:
                ast_seen.append(arg)
                ast_frame.append(arg)
        if ast_frame:
            ast_stack.append(ast_frame)

    return ast_stack

def format_ast_stack(frames):
    backtrace = []
    from quarkc.compiler import Roots, Root
    boring = frozenset((Roots, Root, File))
    for frame in reversed(extract_ast_stack(frames)):
        for node in frame:
            if type(node) in boring:
                break
            backtrace.append("  %s %s %s" % (
                lineinfo(node), type(node).__name__, getattr(node, "name", "")))
    return "\n".join(backtrace)


The Covered Collection is a clothing line out of Queensland, Australia, specializing in organic materials and personalized design.
ChadCo. Studio was honored to produce the branding and marketing materials for this up-and-coming line of clothes.


Crocodiles have always traveled their own particular road of excess; playing, recording, dreaming and scheming in various far-flung corners of the globe. For their fifth album Boys, the boys decamped to Mexico City where producer Martin Thulin captured this psych-pop masterpiece. Trashy in some places and beautiful in others, this colorful album sees the band revisiting familiar Crocodilian themes that have earned them worldwide acclaim while also cooking with many new flavors.Take the salsa-punk of tracks like "Crybaby Demon" or "Kool TV"; noisy guitars mesh with Latin rhythms to create a new sound that can only be described as "muy chingón!" Beautifully lush soundscapes on "The Boy Is a Tramp," "Don't Look Up" and "Blue" are sure to seduce the listener. "Foolin' Around" is a bonkers car-crash of influences, something the punks can do The Hustle to. Crocodiles' bizarro-pop craftsmanship shines brightly on "Peroxide Hearts," "Transylvania" and "Hard."Boys is an album for boys and for girls and for boy-girls and mutants, back-alley poets, thieves, space cadets and alien babes, righteous tricksters, sonic deviants, and everything in between. But most of all, Boys is an album for you.


text:
Q: Почему не работает событие onchange? К инпуту к событию  onchange нужно подключить регулярное выражение, чтобы вводились только цыфры, но почему не работает само событие onchange, в чем причина?
$('.test-input').onchange = function(){
    $(this).replace (/\D/g, '');
    console.log('*******');
};

A: document.querySelector('.test-input').addEventListener("input", function(){
  this.value = this.value.replace(/\D/g, '');
  console.log('***', this.value, '***');
});

redpajama_set_name: RedPajamaStackExchange


text:
Sports Comment: Loyola sets standard for Patriot League women's lacrosse
By Bill Wagner and bwagner@capgaznews.com
Navy coach Cindy Timchal said all the right things during the post-game press conference following Sunday afternoon's Patriot League Tournament women's lacrosse final.
Timchal gave full credit to a "really, really tough" Loyola team and talked about how proud she was of her own squad for fighting to the end of a 14-9 loss.
However, Timchal is a fierce competitor who does not take losing well and one could already see the wheels turning in her head as she started thinking about next year and figuring out a way to reclaim the conference championship.
Navy was once the dominant program in the Patriot League, capturing four consecutive tournament titles from 2010 through 2013. That changed quickly with the arrival of Loyola, which has not lost to a Patriot opponent since becoming a member in 2014. The Greyhounds own a 20-0 record with two regular-season championships and two tournament crowns.
Clearly, Loyola has set a standard and the rest of the Patriot League must raise its collective level in order to compete on even terms. Some programs, such as Navy, Boston University and Colgate, are not that far off. The Midshipmen made strides against the Greyhounds in just one week, losing by 10 goals in the regular season then cutting that deficit in half in the tournament rematch.
Having watched Navy play Loyola twice in the span of a week, it seems obvious the Baltimore school simply has better talent. The Greyhounds are more athletic and more skilled, particularly on the offensive end.
Watching the likes of Kara Burke, Taryn VanThof, Hannah Schmitt and Annie Thomas operate is impressive. They all have great stickwork, superb speed and moves and a high lacrosse IQ. Loyola's attacking group does a great job of dodgings, moving the ball quickly and sticking hard shots into the corners.
Loyola coach Jen Adams said other Patriot League programs have talented players, but sort of hinted the Greyhounds might have a bit more at this stage.
"I think there are a lot of great athletes, a lot of smart lacrosse players, a lot of skilled players, at all these schools," Adams said. "I think we've done a good job of recruiting players that possess all of those things. We have solid depth and a group of players who can not only play the game at a high speed, but play it very smart as well."
Of course, the talent disparity can turn around quickly as Loyola is losing nine senior starters, inclcuding the aforementioned prolific foursome. Meanwhile, Navy has some good young players, notably the dynamic Collins twins – Jenna and Julia – who have combined to produce 65 points this season.
Sophomore Morgan Young is the team's third-leading scorer with 27 goals while classmate Aislinn Probst (Broadneck High) is another promising youngster. However, Timchal needs to continue to ramp up Navy's skill and athleticism in order to catch up with Loyola.
"Loyola had a lot of veteran players on the field today," Timchal said. "I think when things balance out, that class graduates and we both bring in new players, maybe it will be a different look."
Things tend to run in cycles and Loyola's dominance in the conference probably will not continue indefinitely. It wasn't too long ago that Navy was the powerhouse program in the Patriot League, compiling a 29-3 record from 2010 through 2013. As Timchal often points out, the Midshipmen did that with a new varsity program, having transitioned from club status in 2008.
Loyola, on the other hand, has fielded a varsity women's lacrosse program for 43 years and has a history of success. Having earned the Patriot League's automatic berth on Sunday, the Greyhounds will be making their 18th trip to the NCAA Tournament.
Timchal was coach at Maryland when it nipped Loyola, 8-7, in the 1997 NCAA Championship game. The Greyhounds have reached the NCAA semifinals on six other occasions.
[More from sports] 'You can't teach that type of hustle': Meet Richard Njoku, Navy men's basketball's enforcer »
"Loyola came into the conference as a proven, established program that had been the Big East Conference champs the year before," Timchal said.
Adams played for Timchal at Maryland and knows just how smart and competitive her mentor is. Timchal did not become the NCAA all-time leader for career coaching victories (459) by resting on her laurels. Over the course of 33 years at the Division I level, Timchal has established a reputation for being innovative.
"I wouldn't expect anything less from Cindy. I'm sure Navy is going to look at ways to improve, which is going to keep us on our toes," Adams said.
Ultimately, reeling in Loyola needs to be a collective effort by the other Patriot League women's lacrosse programs. Every school must make a serious effort to become more competitive. A quick look at the Division I women's lacrosse Ratings Percentage Index (RPI) shows four Patriot League members – Holy Cross (No. 75), American (81), Lafayette (90) and Bucknell (92) at the bottom of the 107-team rankings.
"I know as a conference we want to be a lot more competitive than we are and that gap is one we're going to try to bridge as a group," Adams said. "There are already some very strong teams in the league. Boston was a tough side, Navy was a tough side, Colgate was a tough side. Now we just need to create more depth. I would love for that to happen and I think we're getting close to that. I see a lot of these conference teams stepping up and wanting that."
[More from sports] Usain Bolt tests positive for COVID-19, according to Jamaica's Minster of Health »
In the meantime, Navy might want to consider upgrading its schedule in order to improve its chances of gaining an at-large berth into the NCAA Tournament. When you are already forced to play four conference opponents in the lower quarter of the RPI rankings, you cannot afford to play four out-of-conference opponents of similar stature.
This season, Navy's non-conference slate included Longwood (79) and Liberty (63) of the Big South along with Davidson (70) and George Washington (67) of the Atlantic 10.
It would seem to make sense to replace those programs with higher-rated schools such as Towson (26, Colonial Athletic Association), Georgetown (28, Big East), Albany (23, America East) or Massachusetts (22, Atlantic 10). Navy is quite capable of beating any of the aforementioned schools, which would raise its own RPI.
This season, Navy scheduled Duke and Virginia of the Atlantic Coast Conference, which are No. 4 and No. 6, respectively, in the RPI rankings. The Midshipmen were routed by the Blue Devils, but lost by just two goals to the Cavaliers.
"With the addition of Boston University, Loyola and now Army (to the Patriot League), it's limiting the amount of out-of-conference competition we can have," Timchal said. "We look at an ACC school as an opportunity to go against the best-of-the-best to see where we stand. To get the Virginias and the Dukes on the schedule is huge because it also helps our RPI."
[More from sports] With no sports, Anne Arundel high school athletic directors worry about long-term budget issues »
That may be true, but the opinion here is that Navy would be better off scheduling more opponents of comparable RPI that it has more of a legitimate shot at beating.
For now, the Patriot League warrants just one NCAA bid and that is due to the weakness of the lower half along with the lower-than-necessary RPI of the other top contenders – Navy (30), Colgate (44) and Boston (60).
Latest Navy
After coronavirus issues, Navy women's basketball finally set to begin Patriot League play
"Hopefully, the Patriot League can raise its profile and maybe moving forward we can warrant an at-large berth in addition to our champion," Timchal said.
Loyola Greyhounds
America East Conference


text:
Resort FM radio station
I stayed at a resort in the U.S. recently that is located in an unpopulated area with virtually no radio reception. To fill the gap, the resort has its own FM station that can be heard only within the resort (about a minute after you drive off the resort, it fades away completely). When you tune to the station, all you hear is one pop song after another, with fade/overlap between the songs. There is no station identification, commercials, or any other content.
The only resort employee I could find that knew any details about it said that he was the one who selects the playlist, using a desktop computer application but he didn't know anything about the radio transmission technology.
Does anyone have any information about this type of station? How does the transmitter connect to the software? What kind of equipment (antenna, etc) would it use? What is the software he's using? Where does it fit legally (FCC, etc)? How the heck are they able to keep the coverage area so tightly defined?
united-states legal fm software station-identification
SDsolar
JoelFanJoelFan
$\begingroup$ Was the resort in the US? $\endgroup$ – Phil Frost - W8II Sep 5 '17 at 21:45
$\begingroup$ Yes (as I indicated in the question :) ) I will add a U.S. tag $\endgroup$ – JoelFan Sep 5 '17 at 21:52
$\begingroup$ Oh sorry, I never read the first sentences of things :) $\endgroup$ – Phil Frost - W8II Sep 5 '17 at 21:58
$\begingroup$ Interesting info, but according to fcc.gov/media/radio/low-power-radio-general-information , Part 15 is limited to a 200 foot range. The resort is much bigger than that. $\endgroup$ – JoelFan Sep 6 '17 at 0:32
$\begingroup$ My guess is that the resort is operating that station illegally. If they are unlicensed, they probably have too much power output, but nobody noticed since they're so remote. If they are licensed, they should be identifying. $\endgroup$ – PhilippNagel Oct 18 '17 at 19:33
I believe you have encountered a Part 15 radio station.
United States Code of Federal Regulations, Title 47, Part 15 (47 CFR 15) covers such things as garage door openers and the like. As such, and due to the fact that they are unlicensed by definition, there is no station-identification requirement. Note that this section covers both intentional and unintentional radiators.
According to the FCC, in OET Bulletin 63: (October 1993), page 15, operation on the FM broadcast band is limited to an effective radiated output of
250 uV/M as measured at 3 Meters distance
This was originally intended to provide roughly a 200-foot transmission range. And you can have as many transmitter as needed to cover a larger area.
A typical Part 15 FM radio transmitter is the Ramsey FM100B.
Note that there is no limit to the number of transmitters that can be operated, so it is possible to cover an entire city block or more if you have enough transmitters.
(The Ramsey FM100B was also offered for overseas buyers as a 1 Watt transmitter through the addition of a secondary power amplifier board)
For longer distances, Part 15 AM is often a better choice because of the availability of radios like the Chezradio Procaster, which is FCC type-certified when operated with the integrated antenna.
Part 15 AM is limited to 100mW power output and a 10-foot antenna-to-ground length.
This opens many possibilities especially in terms of range. For instance, a Procaster on a rooftop with a 20-wire radial system (a counterpoise, or artificial ground) can often reach more than a half mile in radius.
Software: For low-budget radio stations, one of the best automation systems available for free is ZaraStudio.
The particular FM transmitter shown above has 2 RCA input jacks for each Line, and a 1/8" (3.5mm) jack for Mic Input. In other words, it has an internal mixer.
The only cable required to connect to a Line input from a PC is a generic one like this:
New 3.5mm 1/8" Stereo Male to 2 RCA Male AUX Audio Stereo Adapter Y Cable Cord
As with all things FCC, the cardinal rule is that the station operator bears full responsibility to avoid interfering with any other licensed service.
There is an active Part 15 community presence on the WWW. There are many types of antennas in use, including carrier-current where powerlines are the primary radiators.
If you are interested in setting something up yourself it is worth the time to search around and learn from the experience of others.
SDsolarSDsolar
$\begingroup$ Excellent answer!! A couple questions... what if you want the transmitter at a bit of a distance from the PC (e.g. the next room)? And... it seems that this station has about a 1000 foot range. Could it still be Part 15. If the main concern is interference, I think they have no problem, since there is literally nothing around for miles and there is no reception from other stations, on any frequency. Finally... it seems like they exactly tailored the range for the size of the resort. Does the transmitter have such a fine adjustment of power? $\endgroup$ – JoelFan Sep 6 '17 at 16:20
$\begingroup$ If you want the transmitter a distance from the PC, run a 1/8" extension cable. Interference: Since there isn't other reception in that area it gives them a lot of flexibility in choosing their own frequency without worry. Power: The short range nature of these is such that the signal would fall off rapidly as you drive away. 1000 ft range: Either they are exceeding the limits or have set up a network of transmitters. If they are not causing interference then nobody would complain about it either way, and it sounds like they are providing a welcome service to their guests. $\endgroup$ – SDsolar Sep 6 '17 at 18:19
$\begingroup$ One more question... what about the legality of the pop song playing (i.e. music licensing)? $\endgroup$ – JoelFan Sep 7 '17 at 0:36
$\begingroup$ Licensing only applies for commercial use. These stations are not licensed commercially - and even more importantly there seems not to be any cases against part 15 stations. There have been cases of pirate stations, though, like PirateCatRadio in San Francisco that was operating an unlicensed 50-Watt station in a cafe. You could drink your coffee and watch them through glass as they did interviews and such. It was a nice place when I was last there, and still operating the transmitter. I suspect they are just streaming now. But they definitely got both sued and had the FCC issue fines. $\endgroup$ – SDsolar Sep 7 '17 at 1:32
$\begingroup$ You can find them at piratecatradio.com - Back less than 10 years ago they were the in-your-face place to be. Their engineer is named Monkey and he enjoys talking about taking on the FCC. Well worth an email, if it is like it used to be. $\endgroup$ – SDsolar Sep 24 '17 at 7:49
Of interest here: in the areas under the jurisdiction of the U.S. FCC, legal unlicensed operation in the FM broadcast band is limited to systems producing a maximum field intensity of 250 µV/m at a distance 3 meters in every direction from the transmit antenna. The applicable Rule is found in 47 CFR §15.239.
That maximum free-space field of 250 µV/m @ 3 meters will be produced by a simple, linear, 1/2-wave, center-fed dipole radiating an r-f power of 11.43 nanowatts (0.000 000 011 43 watts).
However most of the "Part 15 FM" transmitters commercially available are rated for output powers of 10 milliwatts or more.
It is up to the transmit equipment user to comply with the law, but probably few users of Part 15 FM systems know what that requires, or how to achieve it.
The FCC is active in finding and citing unlicensed operators who do not comply with §15.239.
Richard FryRichard Fry
Licensing does NOT only apply to commercial use. Generally, any copyrighted material that is intended for the general public needs to be licensed (i.e., played in bars, restaurants, even Part 15 stations). However, BMI is currently the only licensing agency that requires a license for Part 15 broadcasters. Both SESAC and ASCAP have stated in writing that they do not require licensing.
Note that radio broadcasters only have to worry about the copyright of the song (composer, lyricist, etc.). Performances, at least right now, do not require licensing for over-the-air broadcasting. That is something that the music industry is fighting to change.
If you are streaming over the Internet, however, you require a license from Sound Exchange (which covers the song and the performance).
$\begingroup$ Interesting info. Do you have references on this so I can check it out? Nitpick: using it in a bar or restaurant is commercial, but Part 15 is not a licensed commercial station any more than your garage door opener is. $\endgroup$ – SDsolar Oct 16 '17 at 3:08
$\begingroup$ It seems you are mixing the term "licensing" between the license required to use a certain part of the radio frequency spectrum, and licensing to use other's work in certain ways. $\endgroup$ – PhilippNagel Oct 30 '17 at 17:07
Not the answer you're looking for? Browse other questions tagged united-states legal fm software station-identification or ask your own question.
Is there a standard data format for station/channel/band information?
Legitimacy and Practice of Frequency Hopping in Ham Radio in United States
How can I use all bands when I'm a guest on an Extra's station?
Aside from repeaters, what station types allow automated transmissions?
Do I need to actually lock up my station?
Using ham radio bands for telemetry
Is it legal to broadcast an FM radio signal with a Raspberry Pi Zero?
How strictly is "the end of each communication" defined for the purpose of station identification?
Is there a practical way for hams to participate in cellular-related technology advances?
Amateur Radio for Science Fair


text:
Mind ·Nutrition
Experts think there might be a gut-brain connection. Here are 3 foods to help improve your mood
August 12, 2022, 2:28 PM UTC
Salmon is an excellent source of omega-3 fatty acids, which are associated with a lower risk for depression.
There's a biochemical explanation for why diet may affect brain health, and it comes back to the gut.
"We're increasingly learning that the health of the gut—so that includes the gut microbiome—is closely linked to the health of our brains," says Austin Perlmutter, a doctor of internal medicine and senior director of science and clinical innovation at Big Bold Health. The gut microbiome is made up of trillions of microorganisms living in our gastrointestinal tract that interact with the nutrients we digest.
Experts note that messages from the gut, in the form of immune signals, can be sent to the brain through the vagus nerve. Diet can affect those signals, which can be "trained" or "programmed" by our gut and, therefore, what we eat, Perlmutter says.
Diet can cause an imbalance of bacteria in the gut, which is associated with inflammation. Studies show that inflammation can negatively affect mood and lead to anxiety-related mental health problems. Other preliminary studies in animals show that changes in the gut affect brain health, including increasing the risk of Alzheimer's disease and depression.
"If you think about the fact that you have trillions of bacteria in your gut, that you're taking in all of these different food molecules, and that your immune system is there, you realize that every day all of the input that goes into your gut is shaping your body," Perlmutter says. "You can start to appreciate that the foods that you eat, the information coming into your gut, has a direct effect on your brain function."
While there is no one-size-fits-all diet that can improve mental health, there are some tips you can follow—including which food groups to eat—in order to prioritize your brain health through what you feed your gut.
Overall food diversity
While more research is needed to define what it means to have a "healthy microbiome," a "diverse microbiome" seems to be the closest fit, says Dr. Richard Day, vice president of medical affairs and clinical development at ADM, a food processing company.
"By consuming a large number of different plant fibers, that gives the building blocks for the emergence of diverse bacterial populations," Day says.
In a study published in the American Journal of Clinical Nutrition, maintaining a diet in eight main food groups, including vegetables, fruits, seafood, and nuts among others, benefited a person's overall microbiome and gut health.
Consuming a diet rich in fish and omega-3 fatty acids was associated with a lower risk for depression, according to a 2016 study published in the Journal of Affective Disorders.
Perlmutter recommends eating small, cold-water fish like salmon, mackerel, anchovies, sardines, and herring (also known as SMASH).
Fish are a big part of the Mediterranean diet, which has been linked to positive mental health outcomes. The diet is a way of eating that focuses on plant-based whole foods, fish, vegetables, and healthy fats.
Foods rich in polyphenols
Polyphenols are micronutrients most commonly found in plants, including leafy greens and colorful fruits, like elderberries and blueberries, and can be a positive for brain health.
"One of the things they do is they act as probiotics, so they can positively influence the microbiome," Perlmutter says. "When we consume polyphenols, they can kind of suppress the growth of unhealthy bugs."
Foods rich in fiber
High-fiber foods are also shown to have positive effects on the gut microbiome, which affects the immune system. Consuming fiber produces short-chain fatty acids, which benefit the body in a myriad of ways.
"These short-chain fatty acids can influence our immune system, but it's also thought that they can get into our brains and influence our brain function," Perlmutter says. "They may have an anti-inflammatory effect."
Consider incorporating whole grains, beans, nuts, Jerusalem artichokes, dandelion greens, garlic, and onions into your diet.
"We still need to know a lot more about what types of microbiome interventions may make sense for individuals," Perlmutter says. "But in an age where hundreds of millions of people have clinical depression, and many more are struggling to improve mood, there is absolutely a pressing need to find new solutions for mood issues, and the gut may offer that."