text:
Harlem's Freddie Jackson's New Album Is Sending Out Love Signals
For urban contemporary listeners and music critics alike; there is no doubt which R&B artists deserve a place among the greatest of all time. Freddie Jackson mastered the art of chart domination during the mid to late 80's, and today continues proving his distinction as one of the Top 50 Greatest R&B Singers (Billboard 2017). The proof is in the phenomena: a Billboard chart resume that boasts 18 songs in the Top 10 with 10 songs rocketing to #1, a 3x Grammy Nominee, and an American Music Award winner. The Harlem native's star first appeared on the horizon in 1985, after releasing his debut album, Rock Me Tonight (Capitol Records). Before that, life appeared ordinary enough behind the scenes with a word processing job, train rides to do session work, and backup singing gigs throughout New York nightclubs. Despite a brief stint at the start of the 80's on the west coast, as lead with the R&B band Mystic Merlin, it was back on native soil that Jackson would launch his career.
Once again, his gospel-bred musical connections would play a key role in his destiny. Even while singing backup for Melba Moore, it was fellow church member and friend Paul Laurence at Hush Productions, who joined to shape Jackson's own turn at center stage. As a talented record producer and songwriter, Laurence realized enough was enough and pulled Jackson from behind both a typewriter and other acts; penning him a hit with the title track for what would become Jackson's debut album-"Rock me Tonight". Even after shooting to #1 and sitting there for six weeks, Jackson wasn't done hitting the charts. He quickly won urban contemporary radio's heart with, "You Are My Lady"-a second straight R&B topper that became his highest ranked single on the Pop charts-hitting # 13. He quickly followed up with, "He'll Never Love You (Like I Do)" and "Love Is Just a Touch Away", while sending them both straight to R&B Top Ten. The debut LP reigned over the R&B album charts, going platinum. His phenomena persisted after a duet with Melba Moore, "A Little Bit More" shot to #1 R&B, and he backed it with yet another platinum-smash aptly titled, Just Like the First Time, in 1986. This is when Jackson appeared musically magical with the success of the album's singles, charting: "Tasty Love", "Have You Ever Loved Somebody", and the soother, "Jam Tonight"-all hitting #1 as if he planned it. Even, "I Don't Want to Lose Your Love" went to #2.
Related: Harlem's Freddie Jackson And Angie Stone Free At SummerStage at Coney Island
During the tail end of the 80's, on into the 90's, what appeared to be a slowing of Jackson's hits on the charts, was actually a shift in his music's placement-a word Jackson says is the key to not just performance but life. Radio listeners still got albums such as the 1988, Don't Let Love Slip Away-which introduced hits of the singles, "Hey Lover", "Nice and Slow", and "Crazy (For Me)". By 1990, Jackson's, Do Me Again, an album with the hit track, "Main Course", topped at #2. He released 1992's, Time for Love, with the soul remake,"Me and Mrs. Jones" (later a soundtrack addition). By the time he signed with RCA/BMG Records in 1993, he was making worldwide appearances at a record pace. He even gave fans a Christmas album, before leaving to record Private Party with Scotti Brothers Records in 1995. There, the next album's single, "Rub Up Against You" rose to the Top #25 R&B.
Become a Harlem insider - Sign-Up for our Weekly Newsletter!
While critics questioned the change of chart-topping agenda, fans saw, as much as heard, the hit maker in film and on TV in tandem with his radio releases. From the start, the pattern of simultaneous media and music appeared, such as with the syndicated special, "The 1985 R&B Countdown", hosted by Whitney Houston to the following year playing himself and singing, "He'll Never Love You (Like I Do)" on the daytime drama, "One Life to Live"-Jackson was a constant presence. By 1988, he joined other world-renowned legends in celebrating Freedomfest: Nelson Mandela's 70th Birthday Celebration.
This kicked off a subplot to his life story-that of a popular singer pulled at a superhuman pace between the stage and the big and small screens. When cross-referencing his music with the movies and TV, one clearly sees Jackson stayed in heavy demand. Once he seized the era and the airwaves with a number of hits, even film and TV audiences couldn't get enough. Not limited to recording ballads aimed at adults; over 30 motion picture and television soundtracks-such as kid's favorite, All Dogs Go to Heaven-feature his acclaimed vocals as well. Not content with his music alone, producers and directors spent the next decade tucking Jackson into scenes with his hits-from popular sitcoms like Family Matters, and The Golden Girls, to feature films. After appearing with his song, "All Over You" in the low budget horror film, Def by Temptation in 1990, he went from light camp to serious cinema with King of New York (his song "Dream On" included) alongside heavy-hitters like Wesley Snipes, Laurence Fishburne, and Christopher Walken.
In 2000, he eased into the new millennium still grooving up broadcasts as he performed his classic, "Rock Me Tonight" on Love & Basketball. By the following year The Jazz Channel Presents Freddie Jackson aired, highlighting his greatest hits over the decades.
Related: It's A Croc, By Couture Copier Balenciaga
Despite all the cinematic adulation, he felt an even greater need to stand by his music recording-despite the changing tides in R&B over the years. When Hip-hop's popularity began to shoulder in on the genre's position, a few artists like Jackson wisely rolled with the new trends-even throughout his seemingly silent, post #1 hit domination era. While a few of his industry peers began crossing over to Pop charts, he took the change from a different approach by blending his vocal prowess with various newly emerging R&B and even Hip-hop talents. From the 1991 EPMD/Tracie Spencer tracks, "Love Me Down" and "Main Course" to Mikki Howard/Da Youngsta's 1992 releases, "I Could Use A Little Love (Right Now)" and "Can I Touch You", as well as the 1995 Brownstone/Kut Klose jams, "Come Home II Us" and "Rub Up Against You".
Having made numerous rounds of major TV shows-from Top of the Pops, Oprah, to the Soul Train Awards, and even writer/performer on The Tom Joyner Sky Show; with several hit videos of his own-he is at once familiar to fans. His music is kept current over three decades even via the digital age, such as his hit, "Have You Ever Loved Somebody" being placed in the video game, Grand Theft Auto IV, in 2008. Eventually, like many major artists in the Internet dominant age, Jackson created independently produced projects, gaining more control over both his life and his career-while still charting songs in the Top 100's including, Life After 30 (#81 R&B, 1999), It's Your Move (#45 R&B, 2004), and Transitions (#26 R&B, 2006). By 2010, he released the single, "I Don't Wanna Go", from the Barry Eastmond produced, For You, an album off the Entertainment One Music label. In 2012, the TV series Unsung featured The Life of Freddie Jackson, who in turn gave a new audience of fans yet another single two years later with Climax Entertainment entitled, "Love & Satisfaction".
Related: With A Gap Store In Harlem, We Can't Wait For The Yeezy Gap Marriage
His current release-Love Signals-offers longtime fans and new listeners alike just that-a melodic offering of love in a multitude of styles. From the orchestral openings to the instrumental driven collaborations with master musician Gerald Albright on "Hold Me Tonight"-each song is a pulse of passion and light. "All I Wanna Do" will surely become the new anniversary anthem, while his most global track to date, "Save The Babies" asks this tumultuous era's most pertinent question: 'Who is going to save the child?'
Coming from a master crooner, Love Signals aims to be a beacon sent out by one of R&B's brightest and ever-evolving stars-proving fabulous Freddie Jackson is still fresh enough for today.
Get the tour dates here.
This entry was posted in Harlem, Music, New and tagged Freddie Jackson, Melba Moore, Whitney Houston by Harlem World Magazine. Bookmark the permalink.
About Harlem World Magazine
Harlem World Magazine is about living your best life and style around the block and around the world of Harlem.
View all posts by Harlem World Magazine →


Due out in January next year, The Adventurer: The Curse of the Midas Box boasts a stellar cast led by Aneurin Barnard, Michael Sheen, and Lena Headey.
The film was originally titled Mariah Mundi and the Curse of the Midas Box, and the new title and its colon would suggest that Image Entertainment could well be hoping for a franchise here.
With just a few more months to go before it hits cinemas, Yahoo Movies has launched the new poster, along with a handful of images.
17-year-old Mariah Mundi's life is turned upside down when his parents vanish and his younger brother is kidnapped. Following a trail of clues to the darkly majestic Prince Regent Hotel, Mariah discovers a hidden realm of child-stealing monsters, deadly secrets and a long-lost artifact that grants limitless wealth – but also devastating supernatural power. With the fate of his world, and his family at stake, Mariah will risk everything to unravel the Curse of the Midas Box!
Barnard, Sheen, and Headey are joined by Keely Hawes, Sam Neill, Ioan Gruffudd, and Tristan Gemmill.
Jonathan Newman (Swinging with the Finkels) is directing from a script penned by Christian Taylor (Lost, Showboy) and Matthew Huffman (Dealing), based on the novel by G.P. Taylor.
The Adventurer: The Curse of the Midas Box is set to hit cinemas in the US on January 10th, 2014. No word yet on a firm UK release date, but here's to hoping it will land around the same time.


text:
Blitz The Ambassador
Buraka Som Sistema
Seun Kuti
Spoek Mathambo
Tumi Powa
category: North Africa
2011′s Music Video Picks 0
Inexplicably absent in this year's fashionable blogs' and magazines' year-end lists are videos by African artists, or those videos recorded somewhere in Africa. I've picked ten which I think stood out. South Africans Pieter Hugo and Michael Cleary directed and shot the video for Spoek Mathambo's 'Control' in Langa, Cape Town. We took issue with aspects of it when it came out in February, but that doesn't mean it isn't striking:
[youtube]http://www.youtube.com/watch?v=UKfwSFI8LhQ[/youtube]
Directed by Juliet Rios and Gabe Imlay, and choreographed by "Fela!" on Broadway assistant choreographer Maija Garcia, the video for Seun Kuti's 'Rise' comes close to capturing his live performances. It was released in April:
[youtube]http://www.youtube.com/watch?v=hADxHPEekqg[/youtube]
Blitz The Ambassador calls his album Native Sun "a journey backwards, back through hip hop, the Caribbean soundsystem culture that preceded it, back to its African roots, with the final kora." This historical journey and the return to his land of birth, Ghana, are reflected in the stream of archive material used when Blitz threw the full album on YouTube, also in April:
[youtube]http://www.youtube.com/watch?v=RG4c2Xh5FuE[/youtube]
In May, Buraka Som Sistema released the video for their kuduro-infused 'Hangover (BaBaBa)'. Directed by João Pedro Moreira and Carlos Afonso, the video uses images from the Portuguese band's performance at the Festival Baía das Gatas in São Vicente, one of Cape Verde's islands:
[youtube]http://www.youtube.com/watch?v=wOMe-8Tf1Y0[/youtube]
When Tumi shared his POWA mixtape in June, it came with a video directed by Teboho Mahlatsi. The school girls who go on a violent Clockwork Orange-like rampage are as angry as Tumi's lyrics, with the end of the video leaving the viewer confused:
[youtube]http://www.youtube.com/watch?v=BMdM03miCgo[/youtube]
Continue reading on Africa is a country
By Tom Devriendt – Africa is a country

redpajama_set_name: RedPajamaCommonCrawl


The Chestnut Hill CH910 Microfleece Quarter, with its premium microfiber polyester fabric and unique color selection, will definitely add another one on your shopping list.
Premium microfiber polyester, 280 g/m2. Elastic drawcord on inside hem with black accent tipping. Side zip pockets.


text:
#include "base/compiler_specific.h"
#include "build/build_config.h"

#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/queue.h>
#include <sys/time.h>
#include <sys/prctl.h>

#include "sql/statement.h"
#include "sql/transaction.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/time/time.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread.h"
#include "net/http/http_cache.h"

#include "stat_hub.h"
#include "stat_hub_api.h"
#include "stat_hub_cmd.h"
#include "stat_hub_cmd_api.h"
#include "net/libnetxt/plugin_api.h"

#include "pageload_proc.h"

#define STAT_HUB_DYNAMIC_BIND_ON

namespace stat_hub {

#define FLUSH_DB_TIMEOUT_THRESHOLD_DEF  30000
#define FLUSH_DOS_PREVENTION_THRESHOLD_DEF  (60000*5) //5 min

//Currently DB is disabled by default. Should switch it on if start using DB again (set to "1")
#define SH_DB_ENABLED "0"

typedef enum {
    INPUT_STATE_READ_MARKER,
    INPUT_STATE_READ_CMD,
    INPUT_STATE_READ_STRING_LEN,
    INPUT_STATE_READ_STRING_DATA,
    INPUT_STATE_READ_INT32,
} InputState;

const char* kPropNameEnabled = "net.sh.enabled";
const char* kPropNameDbEnabled = "net.sh.db.enabled";
const char* kPropNameDbpath = "net.sh.dbpath";
const char* kPropNameVerbose = "net.sh.verbose";
const char* kPropNameFlushDelay = "net.sh.flushdelay";
const char* kPropNameDosThreshold = "net.sh.dosth";
const char* kPropNamePlugin = "net.sh.plugin";
const char* kPropNameClearEnabled = "net.sh.clrenabled";
const char* kPropNamePerfEnabled = "net.sh.prfenabled";

const char* kDefaultDbPath = "/../databases";
const char* kDefaultDbName = "/shdb.sql";

void DoFlushDB(StatHub* database) {
    database->FlushDBrequest();
}

// Version number of the database.
static const int kCurrentVersionNumber = 1;
static const int kCompatibleVersionNumber = 1;

//=========================================================================
STAT_PROCESSOR_IMPL();

//=========================================================================
StatProcessorGenericPlugin::StatProcessorGenericPlugin(const char* name) :
    initialized_(false), fh_(NULL) {
    if (NULL!=name) {
        name_ = name;
    }
    STAT_PLUGIN_IF_DEFINE(OnInit)
    STAT_PLUGIN_IF_DEFINE(OnFlushDb)
    STAT_PLUGIN_IF_DEFINE(OnClearDb)
    STAT_PLUGIN_IF_DEFINE(OnCmd)
    STAT_PLUGIN_IF_DEFINE(OnGetProcInfo)
    STAT_PLUGIN_IF_DEFINE(OnGetCmdMask)
}

//=========================================================================
StatProcessorGenericPlugin::~StatProcessorGenericPlugin() {
    if (!name_.empty() && initialized_) {
        LibraryManager::ReleaseLibraryHandle(name_.c_str());
    }
}

//=========================================================================
STAT_PLUGIN_METHOD_IMPL_1(StatProcessorGenericPlugin, OnInit, bool, sql::Connection*, db)
STAT_PLUGIN_METHOD_IMPL_1(StatProcessorGenericPlugin, OnFlushDb, bool, sql::Connection*, db)
STAT_PLUGIN_METHOD_IMPL_1(StatProcessorGenericPlugin, OnClearDb, bool, sql::Connection*, db)
STAT_PLUGIN_METHOD_IMPL_1(StatProcessorGenericPlugin, OnCmd, bool, StatHubCmd*, cmd)
STAT_PLUGIN_METHOD_IMPL_2(StatProcessorGenericPlugin, OnGetProcInfo, bool, std::string&, name, std::string&, version)
STAT_PLUGIN_METHOD_IMPL_1(StatProcessorGenericPlugin, OnGetCmdMask, bool, unsigned int&, cmd_mask)

//=========================================================================
StatHub* StatHub::GetInstance() {
    CR_DEFINE_STATIC_LOCAL(StatHub, hub, ());
    if (!hub.IsReady() && 0==hub.under_construction_) {
        hub.under_construction_ = 1;
        hub.Init();
        hub.under_construction_ = 2;
    }
    return &hub;
}

//=========================================================================
StatHub::StatHub() :
    db_(NULL),
    ready_(false),
    flush_db_required_(false),
    flush_db_scheduled_(false),
    dos_prevention_on_(false),
    message_loop_(NULL),
    http_cache_(NULL),
    first_processor_(NULL),
    pl_processor_(NULL),
    thread_(NULL),
    flush_delay_(FLUSH_DB_TIMEOUT_THRESHOLD_DEF),
    dos_prevention_threshold_(FLUSH_DOS_PREVENTION_THRESHOLD_DEF),
    verbose_level_(STAT_HUB_VERBOSE_LEVEL_DISABLED),
    clear_enabled_(true),
    under_construction_(0),
    performance_enabled_(0),
    perf_task_started_(0)
{
    cmd_mask_ = (1<<SH_CMD_WK_MEMORY_CACHE);
    cmd_mask_ |= (1<<SH_CMD_WK_MAIN_URL);
}

StatHub::~StatHub() {
    Release();
}

//=========================================================================
bool StatHub::IsReady(bool verbose) {
    if (verbose && !ready_) {
        LIBNETXT_LOGE("STAT_HUB - StatHub is not ready!");
    }
    return ready_;
}

typedef StatProcessor* OnCreateType(const char* name);

//=========================================================================
void* StatHub::LoadPlugin(const char* name, void* fh) {
    if (!IsReady(true)) {
        return NULL;
    }
    if (!name) {
        LIBNETXT_LOGE("STAT_HUB - Undefined plugin name");
        return NULL;
    }
    if (IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Loading plugin: %s", name);
    }
    if (!fh) {
        fh = LibraryManager::GetLibraryHandle(name);
    }
    if (fh) {
        StatProcessor* proc = NULL;
        StatProcessorGenericPlugin* plugin = NULL;

        //try to obtain plugin as an object
        OnCreateType* OnCreate = (OnCreateType*)LibraryManager::GetLibrarySymbol(fh, "OnCreate", true);
        if (OnCreate) {
            proc = (StatProcessor*)OnCreate(name);
        }
        else {
            //use C interface
            plugin = new StatProcessorGenericPlugin(name);
            plugin->OpenPlugin(fh);
            proc = plugin;
        }
        if (RegisterProcessor(proc)) {
            LIBNETXT_LOGI("STAT_HUB - Succeeded to load plugin: %s", name);
            if (InitProcessor(proc)) {
                return fh;
            } else {
                return NULL;
            }
        }
        if (plugin) {
            delete plugin;
        }
    }
    LIBNETXT_LOGE("STAT_HUB - Failed to load plugin: %s", name);
    return NULL;
}

//=========================================================================
bool StatHub::LoadProc(StatProcessor* processor) {
    if (!IsReady(true)) {
        return false;
    }
    if (!processor) {
        LIBNETXT_LOGE("STAT_HUB - Undefined processor");
        return false;
    }
    std::string proc_name;
    std::string proc_version;

    if (!processor->OnGetProcInfo(proc_name, proc_version)) {
        LIBNETXT_LOGE("STAT_HUB - Processor name is undefined");
        delete processor;
        return false;
    }
    if (IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Loading processor: %s", proc_name.c_str());
    }
    if (!RegisterProcessor(processor) || !InitProcessor(processor)) {
        LIBNETXT_LOGE("STAT_HUB - Failed to load processor: %s", proc_name.c_str());
        delete processor;
        return false;
    }
    return true;
}

//=========================================================================
bool StatHub::RegisterProcessor(StatProcessor* processor) {
    if (!IsReady(true)) {
        return false;
    }
    if (processor) {
        std::string proc_name;
        std::string proc_version;

        if (!processor->OnGetProcInfo(proc_name, proc_version)) {
            LIBNETXT_LOGE("STAT_HUB - Processor name is undefined");
            return false;
        }
        if (IsProcRegistered(proc_name.c_str())) {
            LIBNETXT_LOGE("STAT_HUB - Processor %s already registered", proc_name.c_str());
            return false;
        }
        processor->next_ = first_processor_;
        first_processor_ = processor;
        return true;
    }
    LIBNETXT_LOGE("STAT_HUB - Undefined processor");
    return false;
}

//=========================================================================
bool StatHub::InitProcessor(StatProcessor* processor) {
    if (!IsReady(true)) {
        return false;
    }
    if (!processor) {
        LIBNETXT_LOGE("STAT_HUB - Undefined processor");
        return false;
    }
    std::string proc_name = "Undefined";
    std::string proc_version ="0.0.0";

    processor->OnGetProcInfo(proc_name, proc_version);
    if(!processor->OnInit(db_)) {
        LIBNETXT_LOGE("STAT_HUB - Processor %s (v%s) initialization failed",
            proc_name.c_str(), proc_version.c_str());
        processor = DeleteProcessor(processor);
        return false;
    } else {
        LIBNETXT_LOGI("STAT_HUB - Processor %s (v%s) is ready",
            proc_name.c_str(), proc_version.c_str());
        unsigned int cmd_mask;
        if (processor->OnGetCmdMask(cmd_mask)) {
            cmd_mask_ |= cmd_mask;
        }
    }
    return true;
}

//=========================================================================
StatProcessor* StatHub::DeleteProcessor(StatProcessor* processor) {
    if (NULL!=processor) {
        StatProcessor* next = processor->next_;
        if (first_processor_==processor) {
            first_processor_ = next;
        }
        else {
            for (StatProcessor* tmp_processor=first_processor_; tmp_processor!=NULL; tmp_processor=tmp_processor->next_ ) {
                if (tmp_processor->next_==processor) {
                    tmp_processor->next_=next;
                    break;
                }
            }
        }
        delete processor;
        return next;
    }
    return NULL;
}

//=========================================================================
bool StatHub::IsProcRegistered(const char* name) {
    std::string proc_name;
    std::string proc_version;

    for (StatProcessor* processor=first_processor_; processor!=NULL; processor=processor->next_) {
        if (processor->OnGetProcInfo(proc_name, proc_version)) {
            if (proc_name==name) {
                return true;
            }
        }
    }
    return false;
}

//=========================================================================
bool StatHub::IsProcReady(const char* name) {
    if (IsReady()) {
        std::string proc_name;
        std::string proc_version;

        for (StatProcessor* processor=first_processor_; processor!=NULL; processor=processor->next_) {
            if (processor->OnGetProcInfo(proc_name, proc_version)) {
                if (proc_name==name) {
                    if (STAT_HUB_IS_VERBOSE_LEVEL_DEBUG) {
                        LIBNETXT_LOGD("STAT_HUB - Processor %s is ready", name);
                    }
                    return true;
                }
            }
        }
    }
    if (IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Processor %s is NOT ready", name);
    }
    return false;
}

//=========================================================================
bool StatHub::Init() {
    char value[PROPERTY_VALUE_MAX] = {'\0'};

    if (ready_) {
        LIBNETXT_LOGI("STAT_HUB - Already initialized");
        return true;
    }
    base::ThreadRestrictions::SetIOAllowed(true);

    LIBNETXT_PROPERTY_GET(kPropNameEnabled, value, "1"); //!!!!!!!!! ENABLED by default !!!!!!!!!
    if (!atoi(value)) {
        LIBNETXT_LOGW("STAT_HUB - Disabled");
        return false;
    }

    LIBNETXT_PROPERTY_GET(kPropNameVerbose, value, "0"); //STAT_HUB_VERBOSE_LEVEL_DISABLED - 0
    verbose_level_ = (StatHubVerboseLevel)atoi(value);
    if (IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Verbose Level: %d", verbose_level_);
    }

    LIBNETXT_PROPERTY_GET(kPropNameClearEnabled, value, "1");
    if (!atoi(value)) {
        clear_enabled_ = false;
        LIBNETXT_LOGI("STAT_HUB - Cache Clear Disabled");
    }

    LIBNETXT_PROPERTY_GET(kPropNamePerfEnabled, value, "0");
    performance_enabled_ = atoi(value);
    if (IsVerboseEnabled() || performance_enabled_) {
        LIBNETXT_LOGI("STAT_HUB - Performance Task %s (%d)", performance_enabled_?"Enabled":"Disabled", performance_enabled_);
    }

    //Application
    char path[128] = {'\0'};
    pid_t pid = getpid();
    snprintf(path, sizeof(path), "/proc/%d/cmdline", pid);
    int fd = open(path, O_RDONLY);
    int rd_len = read(fd, path , sizeof(path)-1);
    if (0 > rd_len) {
        rd_len = 0;
    }
    path[rd_len] = 0;
    close(fd);

    if(IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Prc Name: %s (%d)", path ,(int)pid);
    }

    LIBNETXT_PROPERTY_GET(kPropNameFlushDelay, value, PROP_VAL_TO_STR(FLUSH_DB_TIMEOUT_THRESHOLD_DEF));
    flush_delay_ = atoi(value);
    if (flush_delay_<=0) {
        flush_delay_ = FLUSH_DB_TIMEOUT_THRESHOLD_DEF;
    }
    LIBNETXT_PROPERTY_GET(kPropNameDosThreshold, value, PROP_VAL_TO_STR(FLUSH_DOS_PREVENTION_THRESHOLD_DEF));
    dos_prevention_threshold_ = atoi(value);
    if (dos_prevention_threshold_<=0) {
        dos_prevention_threshold_ = FLUSH_DOS_PREVENTION_THRESHOLD_DEF;
    }
    if(IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Flush delay: %d", flush_delay_);
        LIBNETXT_LOGI("STAT_HUB - DOS threshold: %d", dos_prevention_threshold_);
    }

    thread_ = new base::Thread("event_handler");
    if (!thread_->StartWithOptions(base::Thread::Options(base::MessageLoop::TYPE_IO, 0))) {
        LIBNETXT_LOGE("STAT_HUB - Event thread start error");
        Release();
        return false;
    }

    ready_ = true;
    LIBNETXT_LOGI("STAT_HUB - Initialized");

    LoadPlugins();

    return true;
}

//=========================================================================
void StatHub::LoadPlugins() {
    pl_processor_ = new pl_proc::PageLoadProcessor();
    pl_processor_->OnGetCmdMask(dos_prevention_cmd_mask_);
    LoadProc(pl_processor_);

#ifdef STAT_HUB_DYNAMIC_BIND_ON
    char value[PROPERTY_VALUE_MAX] = {'\0'};

    //load arbitrary plugins
    for(int index=1; ; index++) {
        std::ostringstream index_str;
        index_str << "." << index;
        std::string plugin_prop_name = kPropNamePlugin + index_str.str();
        LIBNETXT_PROPERTY_GET(plugin_prop_name.c_str(), value, "");
        if (!value[0]) {
            break;
        }
        LoadPlugin(value);
    }
#endif // STAT_HUB_DYNAMIC_BIND_ON

    InitDBOnce(this);
    LoadPlugin("libpc_proc_plugin");
}

//=========================================================================
void StatHub::InitDBOnce(StatHub* stat_hub) {
    static bool initialized = false;
    if (!initialized) {
        if (!stat_hub->InitDB()) {
            LIBNETXT_LOGW("STAT_HUB - Switch to DB-less mode");
        }
        initialized = true;
    }
}

//=========================================================================
bool StatHub::InitDB() {
    char value[PROPERTY_VALUE_MAX] = {'\0'};

    flush_db_required_ = true;
    //check if DB can be enabled
    LIBNETXT_PROPERTY_GET(kPropNameDbEnabled,value, SH_DB_ENABLED);
    if (value[0]!='1') {
        return false;
    }

    __attribute__((unused)) base::Time start(LIBNETXT_API(GetSystemTime)());
    base::FilePath file_path;
    LIBNETXT_DATADIR_GET(&file_path);
    file_path = file_path.StripTrailingSeparators();
    std::string directory_path = file_path.value().c_str();

    std::string default_db_path = directory_path;
    default_db_path += kDefaultDbPath;
    default_db_path += kDefaultDbName;
    LIBNETXT_PROPERTY_GET(kPropNameDbpath, value, default_db_path.c_str());
    db_path_ = value;

    if (STAT_HUB_IS_VERBOSE_LEVEL_DEBUG) {
        LIBNETXT_LOGI("STAT_HUB - App Data directory: %s", file_path.value().c_str());

        LIBNETXT_CACHEDIR_GET(&file_path);
        file_path = file_path.StripTrailingSeparators();
        LIBNETXT_LOGI("STAT_HUB - App Cache directory: %s", file_path.value().c_str());

        std::string lib_directory_path;
        LibraryManager::GetLibDirectory(lib_directory_path);
        LIBNETXT_LOGI("STAT_HUB - App Lib directory: %s", lib_directory_path.c_str());
    }
    if(IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - DB path: %s", db_path_.c_str());
    }

    if (db_path_ == default_db_path) {
        struct stat st = {0};
        std::string datbases_directory_path = directory_path + kDefaultDbPath;
        if (stat(datbases_directory_path.c_str(), &st) == -1) {
            mkdir(datbases_directory_path.c_str(), (S_IRWXU | S_IRWXG | S_IXOTH));
            if(IsVerboseEnabled()) {
                LIBNETXT_LOGI("STAT_HUB - Create DB folder: %s",
                    datbases_directory_path.c_str());
            }
        }
    }

    /*TODO: Tweak DB performance
        db_->set_page_size(2048);
        db_->set_cache_size(32);
        //Run the database in exclusive mode. Nobody else should be accessing the
        //database while we're running, and this will give somewhat improved perf.
        db_->set_exclusive_locking();
    */
    db_ = new sql::Connection();
    if (!db_->Open(base::FilePath(db_path_.c_str()))) {
        LIBNETXT_LOGE("STAT_HUB - Unable to open DB %s", db_path_.c_str());
        ReleaseDB();
        return false;
    }

    // Scope initialization in a transaction so we can't be partially initialized.
    if (!STAT_HUB_API_CPP(sql, Connection, BeginTransaction)(db_)) {
        LIBNETXT_LOGE("STAT_HUB - Unable to start transaction");
        ReleaseDB();
        return false;
    }

    // Create tables.
    if (!InitTables()) {
        LIBNETXT_LOGE("STAT_HUB - Unable to initialize DB tables");
        ReleaseDB();
        return false;
    }

    // Initialization is complete.
    if (!STAT_HUB_API_CPP(sql, Connection, CommitTransaction)(db_)) {
        LIBNETXT_LOGE("STAT_HUB - Unable to commit transaction");
        ReleaseDB();
        return false;
    }
    if(IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Init DB Time: %d" ,LIBNETXT_API(GetTimeDeltaInMs)(start, LIBNETXT_API(GetSystemTime)()));
    }

    return true;
}

//=========================================================================
void StatHub::ReleaseDB() {
    if(IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Release DB");
    }

    if (db_) {
        db_->Close();
        delete db_;
        db_ = NULL;
    }
    flush_db_required_ = false;
    flush_db_scheduled_ = false;
}

//=========================================================================
void StatHub::Release() {
    if(IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Release");
    }

    //thread
    if(NULL!=thread_) {
        delete thread_;
        thread_ = NULL;
    }

    //processors
    StatProcessor* next_processor;
    for (StatProcessor* processor=first_processor_; processor!=NULL; processor=next_processor ) {
        next_processor = processor->next_;
        delete processor;
    }
    first_processor_ = NULL;

    //DataBase
    ReleaseDB();

    //Rest
    ready_ = false;
}

//=========================================================================
bool StatHub::InitTables() {
    if (!STAT_HUB_API_CPP(sql, Connection, DoesTableExist)(db_, "meta")) {
        if (!STAT_HUB_API_CPP(sql, Connection, Execute)(db_, "CREATE TABLE meta ("
            "key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY,"
            "value LONGVARCHAR"
            ")")) {
                return false;
        }
    }
    return true;
}

//=========================================================================
bool StatHub::GetDBmetaData(const char* key, std::string& val) {
    bool ret = false;

    InitDBOnce(this);
    if (db_) {
        sql::Statement* statement = STAT_HUB_API(GetStatement)(db_, SQL_FROM_HERE,
            "SELECT * FROM meta WHERE key=?");
        STAT_HUB_API_CPP(sql, Statement, BindCString)(statement, 0 , key);
        if(STAT_HUB_API_CPP(sql, Statement, Step)(statement)) {
            ret = true;
            val = STAT_HUB_API_CPP(sql, Statement, ColumnString)(statement, 1);
        }
        STAT_HUB_API(ReleaseStatement)(statement);
    }
    return ret;
}

//=========================================================================
bool StatHub::SetDBmetaData(const char* key, const char* val) {
    bool ret = true;

    InitDBOnce(this);
    if (db_) {
        sql::Statement* statement = STAT_HUB_API(GetStatement)(db_, SQL_FROM_HERE,
            "INSERT OR REPLACE INTO meta "
            "(key, value) "
            "VALUES (?,?)");
        STAT_HUB_API_CPP(sql, Statement, BindCString)(statement, 0 , key);
        STAT_HUB_API_CPP(sql, Statement, BindCString)(statement, 1 , val);
        ret = STAT_HUB_API_CPP(sql, Statement, Run)(statement);
        STAT_HUB_API(ReleaseStatement)(statement);
    }
    return ret;
}

//=========================================================================
void StatHub::MainUrlLoaded(const char* url) {
    flush_db_request_time_ = LIBNETXT_API(GetSystemTime)();
    if (flush_db_required_) {
        if (!flush_db_scheduled_) {
            flush_db_scheduled_ = true;
            flush_db_initial_request_time_ = flush_db_request_time_;
            if(IsVerboseEnabled()) {
                LIBNETXT_LOGI("STAT_HUB - Request DB flush (%d)", flush_delay_ );
            }
            thread_->message_loop()->PostDelayedTask(FROM_HERE ,base::Bind(&DoFlushDB, this),
                base::TimeDelta::FromMilliseconds(flush_delay_));
        }
        else {
            int delta = LIBNETXT_API(GetTimeDeltaInMs)(flush_db_initial_request_time_, flush_db_request_time_);
            if (delta>=dos_prevention_threshold_ && !dos_prevention_on_) {
                //continues page load - go to dos prevention mode
                cmd_mask_copy_ = cmd_mask_;
                cmd_mask_ = dos_prevention_cmd_mask_;
                dos_prevention_on_ = true;
                if(IsVerboseEnabled()) {
                    LIBNETXT_LOGI("STAT_HUB - Enable DOS prevention mode (%d)", delta);
                }
            }
        }
    }
}

//=========================================================================
static void DoPerfTask(StatHub* stat_hub) {
    stat_hub->PerfTask();
}

//=========================================================================
bool StatHub::PerfTask() {
    if(thread_ && perf_task_started_) {
        if (STAT_HUB_IS_VERBOSE_LEVEL_DEBUG && STAT_HUB_DEV_LOG_ENABLED) {
            LIBNETXT_LOGI("STAT_HUB - Perf Task");
        }
        SetPerfTimeStamp(LIBNETXT_API(GetSystemTime)());
        StatHubCmd* new_cmd = STAT_HUB_API(CmdCreate)(SH_CMD_SELF, SH_ACTION_PERFORMENCE_TICK, 0);
        if (NULL!=new_cmd) {
            STAT_HUB_API(CmdCommit(new_cmd));
        }
        thread_->message_loop()->PostDelayedTask(FROM_HERE,base::Bind(&DoPerfTask, this),
            base::TimeDelta::FromMilliseconds(performance_enabled_));
        return true;;
    }
    return false;
}

//=========================================================================
bool StatHub::StartPerfTask() {
    if(!perf_task_started_) {
        if (IsVerboseEnabled()) {
            LIBNETXT_LOGI("STAT_HUB - Start Perf Task");
        }
        perf_task_started_++;
        return PerfTask();
    }
    perf_task_started_++;
    return true;
}

//=========================================================================
bool StatHub::StopPerfTask() {
    if(perf_task_started_) {
        perf_task_started_--;
        if (!perf_task_started_ && IsVerboseEnabled()) {
            LIBNETXT_LOGI("STAT_HUB - Stop Perf Task");
        }
    }
    return true;
}

//=========================================================================
bool StatHub::Cmd(StatHubCmd* cmd, bool sync) {
    if(NULL!=cmd) {
        if (STAT_HUB_IS_VERBOSE_LEVEL_DEBUG && STAT_HUB_DEV_LOG_ENABLED) {
            LIBNETXT_LOGD("STAT_HUB - StatHub::Cmd CMD:%d Action:%d", cmd->GetCmd(), cmd->GetAction());
        }

        StatHubCmdType cmd_id = cmd->GetCmd();
        StatHubActionType action_id = cmd->GetAction();

        if (dos_prevention_on_) {
            pl_processor_->OnCmd(cmd);
        }
        else {
            if (clear_enabled_ && SH_CMD_WK_MEMORY_CACHE==cmd_id && SH_ACTION_CLEAR==action_id) {
                for (StatProcessor* processor=first_processor_; processor!=NULL; processor=processor->next_ ) {
                    processor->OnClearDb(db_);
                }
            }
            for (StatProcessor* processor=first_processor_; processor!=NULL; processor=processor->next_ ) {
                if (processor->OnCmd(cmd) && sync) {
                    return true;
                }
            }
        }
        if (SH_CMD_WK_MAIN_URL==cmd_id && SH_ACTION_DID_FINISH==action_id) {
            const char* url = cmd->GetParamAsString(0);
            MainUrlLoaded(url);
        }
    }
    return false;
}

//=========================================================================
void StatHub::FlushDBrequest() {
    if (STAT_HUB_IS_VERBOSE_LEVEL_DEBUG) {
        LIBNETXT_LOGD("STAT_HUB - Flush DB Request");
    }

    if (flush_db_required_) {
        int delta = LIBNETXT_API(GetTimeDeltaInMs)(flush_db_request_time_, LIBNETXT_API(GetSystemTime)());

        if(IsVerboseEnabled()) {
            LIBNETXT_LOGI("STAT_HUB - Time since last Flush DB request is %d msec", delta);
        }
        if (delta>=flush_delay_) {
           flush_db_scheduled_ = false;
           FlushDB();
        }
        else {
            if(IsVerboseEnabled()) {
                LIBNETXT_LOGI("STAT_HUB - Flush DB postponed for %d msec", flush_delay_ - delta);
            }
            thread_->message_loop()->PostDelayedTask(FROM_HERE, base::Bind(&DoFlushDB, this),
                base::TimeDelta::FromMilliseconds(flush_delay_ - delta));
        }
    }
}

//=========================================================================
bool StatHub::FlushDB() {
    if (STAT_HUB_IS_VERBOSE_LEVEL_DEBUG) {
        LIBNETXT_LOGD("STAT_HUB - Flush DB...");
    }
    //(unused) required to suppress cross-platform compilation warning/ error
    __attribute__((unused)) base::Time start = LIBNETXT_API(GetSystemTime)();
    if (dos_prevention_on_) {
        //restore original cmd_mask
        cmd_mask_ = cmd_mask_copy_;
        dos_prevention_on_ = false;
        if(IsVerboseEnabled()) {
            LIBNETXT_LOGI("STAT_HUB - Disable DOS prevention mode");
        }
    }
    for (StatProcessor* processor=first_processor_; processor!=NULL; processor=processor->next_ ) {
        processor->OnFlushDb(db_);
    }

    if(IsVerboseEnabled()) {
        LIBNETXT_LOGI("STAT_HUB - Flush DB completed in %d msec", LIBNETXT_API(GetTimeDeltaInMs)(start, LIBNETXT_API(GetSystemTime)()));
    }
    return true;
}

}  // namespace stat_hub

redpajama_set_name: RedPajamaGithub


Architecturally Upgraded Cuckoo Clock « Adafruit Industries – Makers, hackers, artists, designers and engineers!
For ages now, the cuckoo has resided in a traditional bungalow made of wood with a gable roof, probably a chimney, and ornamentation around like trees, rocks, or the rare waterfall, but not anymore. Aptly titled the "Cuckoo Block", Guido Zimmermann gives the bird a space upgrade, with beautifully contemporary brutalist apartment buildings.
With its concrete makeover, these new clocks fit well into urban homes, because they too are urban homes. Taking inspiration from Brutalist and Bauhaus architecture, the Cuckoo Blocks series feature miniature versions of the Glenkerry House and the La Flaine ski resort, aside from Zimmermann's own creations. Just like the original cuckoo clocks of Black Forest, Germany, these houses too come with stunning levels of detail, from painted details of apartments through the windows, to even satellite dishes near balconies… and yes, there's obviously a mechanical cuckoo too!


It's time for the last installment of Holiday At Home, a three-part holiday decorating series with At Home! Today, I want to share how I made my mantel wishes come true this holiday season!
There's nothing that says home like a well decorated mantel adorned with seasonal knick-knacks and mementos. Being able to decorate a mantel is something I've wanted for quite some time now, but a fireplace is something that all of our rentals have lacked. I'm all about doing the best with what we have, so I decided to make a faux mantel out of a simple photo ledge and 3M wire hooks. I pinned this idea last year and made a promise to do it this year. By mounting the photo ledge upside down and attaching the 3M hooks underneath, I had an instant mantel shelf and a way to better display our stockings.
We usually hang our stockings on the stair railing which hasn't been the best solution. With the boys running up and down the stairs and peeking inside every day, I knew I had to get those stockings out of their reach this year. Now, I can finally fill them up much earlier knowing that they won't be ransacked. While shopping At Home, I picked up some new stockings for our faux mantel shelf. There were three in particular that I absolutely couldn't pass up; a gingerbread girl for baby Akilah, a Cableknit for Juicy and plaid fox for Jayden.
For the mantel shelf, I also grabbed a flameless LED candle and remember that little lantern ornament from my kitchen post? It looks great on top of the shelf. By pairing At Home Christmas Decor items with our pre-existing decor, we now have a fun holiday display just for us.
I had some extra lights from that same kitchen post, so I decided to spruce up our Christmas wreath. I had a set of itty bitty lights strung around the wreath and they were difficult to see from afar. The extra set of multicolored battery powered LED lights did the trick. Now, our wreath really pops at night.
I hope you enjoyed this holiday decorating series and that it helps make your season bright as you deck your halls! Happy Holidays!
At Home is the destination for holiday merchandise at everyday low prices. At Home offers a complete holiday solution for every home, including an unmatched assortment of indoor and outdoor décor items for Christmas and a one-acre Tree for Me lot of 101 unique artificial Christmas Trees. Stop by your local At Home store, today, for all your holiday home decorating needs!


Thank you for considering membership with Congress of Chiropractic State Associations! ChiroCongress represents over 50 state chiropractic associations. The true value of a ChiroCongress membership can best be summed up in one word—networking—networking at the annual convention and through the use of the ChiroCongress' communications systems which include email broadcasts, newsletters, our web site - www.cocsa.org, our association leadership listserv, and email communications.
While state laws, economies and regional practice styles differ, the basic challenges faced by state chiropractic associations are the same. The ChiroCongress provides a forum for state associations to learn from each other—what trends and challenges are sweeping the country, what has or has not worked in other states in dealing with these challenges and what types of projects have been successful in other states which could be duplicated in your own.
Exclusive discounts with chiropractic supporters for both your association AND your members.
Complete the online form at http://forms.chirocongress.org/view.php?id=16015 and upload the documents above. ChiroCongress will send confirmation of receipt of your application. Or, print and complete the Chiropractic Organization Application and email to admin@cocsa.org along with the documentation listed above or mail to ChiroCongress, 299 June Drive, Molalla, OR, 97038.
Your application will be reviewed by the ChiroCongress Membership Committee with final approval given by the ChiroCongress Board of Directors.
If you have any questions, please contact COCSA at admin@cocsa.org or 503.922.2933.


Nobel Peace laureate Jody Williams gives her views on the concept of peace. She indicates how peace is more than meditating and feeling togetherness. It's about taking action, being proactive. She poses the question about considering what happens when you focus resources on the support of people, rather on things such as defense.
I agree that it is the responsibility of each of us to get involved. Peace is not something world political leaders can create, it's more a matter of changing the systems we function in so that they better support the interests of all. This takes all people, not just a few. There are no other people who are going top make it all happen, it's us!
We can get involved at the point of our own life in our thinking, in what we do and how we treat other people and the environment. The time has come to stop waiting for others to fix it.
. . . and don't wait for the other guys, they are waiting for you!


text:
CrowdStrike and Secureworks Form Strategic Partnership to Integrate Secureworks' Red Cloak™ Behavioral Analytics with CrowdStrike's Endpoint Protection Platform
MIAMI, Fla. — September 17, 2018 — CrowdStrike® Inc. and Secureworks® (NASDAQ: SCWX) today announced at CrowdStrike's second annual user conference, Fal.Con, that they will bring a new level of advanced endpoint threat detection to the marketplace by teaming up to apply Secureworks' Red Cloak behavioral analytics and intelligence to CrowdStrike's Falcon platform data. The joint offering delivers in one package a market-leading endpoint detection and response solution with applied analytics and intelligence to accelerate investigations and provides guided remediation steps for more confident response to real threats.
Today's announcement follows the Sept. 4 launch of the Secureworks Red Cloak Partner Program which allows the company to make its high-fidelity detection and incident investigation capabilities available more broadly in the marketplace while also giving clients the freedom to choose best-of-breed endpoint security solutions.
"We are excited to team up with Secureworks to enable them to apply their well-regarded expertise in threat intelligence and analysis to CrowdStrike's Threat Graph telemetry data generated by the Falcon endpoint protection platform," says Mike Carpenter, President, Global Sales and Field Operations at CrowdStrike. "As CrowdStrike and Secureworks share a broader range of threat detection and response data, our clients will experience added value without having to rip and replace their existing solution."
Secureworks will leverage more than 16 years of experience detecting advanced adversaries across its global client base, and CrowdStrike will leverage its market-leading endpoint protection and EDR products to deliver the high-fidelity telemetry that makes it possible for Secureworks to apply its analytics and deliver the best possible context for validating and remediating true threats.
"This joint solution simplifies the buying process for companies that are looking to invest in both a market-leading endpoint technology and a leader in the MSSP and MDR markets," says Wendy Thomas, Senior Vice President of Business and Product Strategy at Secureworks. "Secureworks and CrowdStrike can now offer the rich integration of product, intelligence, insight and service that our clients have been asking for."
When the joint offering becomes generally available, both Secureworks and CrowdStrike customers will benefit from additional countermeasures driven by the integration. Powered by the CrowdStrike Threat Graph™, the CrowdStrike Falcon platform leverages industry-leading threat telemetry, and is now processing over 1 trillion security events per week.
To learn more about how Red Cloak analytics and intelligence are applied to endpoint agents, organizations can visit the CrowdStrike Fal.Con conference this week in Miami and the Secureworks Access conference October 22-24 in Atlanta, Ga.
About CrowdStrike®
CrowdStrike is the leader in cloud-delivered endpoint protection. Leveraging artificial intelligence (AI), the CrowdStrike Falcon® platform offers instant visibility and protection across the enterprise and prevents attacks on endpoints on or off the network. CrowdStrike Falcon deploys in minutes to deliver actionable intelligence and real-time protection from Day One. It seamlessly unifies next-generation AV with best-in-class endpoint detection and response, backed by 24/7 managed hunting. Its cloud infrastructure and single-agent architecture take away complexity and add scalability, manageability, and speed.CrowdStrike Falcon protects customers against all cyber attack types, using sophisticated signatureless AI and Indicator-of-Attack (IOA) based threat prevention to stop known and unknown threats in real time. Powered by the CrowdStrike Threat Graph™, Falcon instantly correlates over 1 trillion security events a week from across the globe to immediately prevent and detect threats.
CrowdStrike Media Contact:
Ilina Cashiola
Ilina.cashiola@CrowdStrike.com
About Secureworks
Secureworks® (NASDAQ: SCWX) is a leading global cybersecurity company that protects organizations in a digitally connected world. We close gaps in security layers with a Defense-in-Concert that combines visibility from thousands of clients, the machine learning capability of our industry-leading Secureworks Counter Threat Platform™ and actionable insights from our team of elite researchers, analysts and consultants to create a network effect of increasingly strong protection for our clients. By aggregating and analyzing data from any source, anywhere, we prevent security breaches, detect malicious activity in real time, respond rapidly, and predict emerging threats. We offer our clients a cyber-defense that is Collectively Smarter. Exponentially Safer.™ www.secureworks.com
Secureworks Media contact:
Doreen Kelly Ruyak
press@secureworks.com
Statements in this press release concerning Secureworks' plans and objectives relating to its capabilities and solutions are forward-looking statements within the meaning of Section 21E of the Securities Exchange Act of 1934 and Section 27A of the Securities Act of 1933 and are based on Secureworks' current expectations. Because forward-looking statements inherently involve risks and uncertainties, actual future results may differ materially from those expressed or implied by such forward-looking statements. These risks and uncertainties include, but are not limited to, competitive uncertainties and general economic and business conditions in Secureworks' markets as well as the other risks and uncertainties that are described in Secureworks' periodic reports and other filings with the Securities and Exchange Commission, which are available for review through the Securities and Exchange Commission's website at www.sec.gov. Secureworks undertakes no obligation to update any statements in this press release for changes that happen after the date of this release.


text:
Seoul approves use of remdesivir as virus treatment
SEOUL, June 3 (Yonhap) -- South Korea's food and drug administration on Wednesday made an emergency decision to allow the use of remdesivir as a treatment for the new coronavirus, paving the way for inbound shipments of the new drug for the first time.
The Ministry of Food and Drug Safety said it has decided to allow special imports of the drug using its special measures procedure that allows imports of previously unauthorized substances under special circumstances.
South Korea has yet to complete its clinical tests on the new drug, but the ministry earlier said the drug has been proven in many other countries to help reduce the time needed to cure coronavirus patients.
The move to allow special imports of remdesivir came on a request from the Korea Centers for Disease Control and Prevention (KCDC) to use the drug as a treatment for new coronavirus patients.
Ministry officials said the country will soon hold discussions with the U.S. producer of the drug, Gilead Sciences, to arrange the first shipment of its imports.
South Korea has so far reported 11,590 COVID-19 patients, 10,467 of who have been released from hospitals or quarantine after full recoveries.
A total of 850 people remained hospitalized or in quarantine as of Wednesday, while 273 people have died from the viral disease.


Lindar is looking for an amazing React+Redux developer to join our growing team of engineers. We are located in St Albans, 18 minutes away from St Pancras.
We prefer vanilla CSS with a good naming convention and extensive use of flexbox.
We like our HTML/templates to be semantically correct, with a sensible structure.
We create awesome APIs that are easy to work with.
We strive to write maintainable, extendable code.
A good grasp CS fundamentals: Algorithms, data structures, computational complexity.
In-depth understanding of React, Redux and CSS is a must.
A good understanding of software and web technologies.
Basic understanding of both OO and functional programming.
A lot of passion and curiosity.
You are curious about UIs and how users interact with them. You always want to provide a better experience.
You like to have an overall understanding of the product and its requirements.
This is a great opportunity for a React developer to hone and expand their skills on a sophisticated codebase. We are (or will be) working on a pretty broad range of products; websites, games, even B2B services. Mobile development is also in the horizon, so this is a great place to experiment and learn.
Also: Snacks, nerf wars, darts, dart wars. We are a company of 17 and work in a pretty fun environment. Come see for yourself.


text:
Рудольф Мартин (; 1 июля 1864, Цюрих, Швейцария — 11 июля 1925, Мюнхен, Германия) — немецкий антрополог, специалист по физической антропологии. Создатель современной методики антропологических исследований.

Биография
Его родители с юга-запада Германии: отец родом из Вюртемберга, а мать из Бадена. Отец работал инженером-механиком в Цюрихе, затем открыл своё дело в Оффенбурге в Бадене. В Оффенбурге Мартин поступил и окончил школу в 1884 году, а затем поступил на юридический факультет университета во Фрайбурге. После двух семестров он стал изучать философию и покинул Фрайбург, чтобы продолжить образование в Лейпцигском университете. Вскоре он вернулся, чтобы учиться у профессора зоологии Августа Вейсмана. Также он посещал лекции профессора анатомии и сравнительной анатомии , профессора философии Алоиза Риля. Мартин увлекся воззрениями Канта на человека. В 1887 году Мартин защитил докторскую диссертацию Kants philosophische Anschauungen in den Jahren 1762-1766 под руководством Риля. В 1887—1890 Мартин посещает антропологические коллекции в Европе, знакомится с Матиасом-Марией Дювалем, , Леонсом Мануврие, братьями Паулем и Габриэлем де Мортилье. В 1890—1891 годах пишет хабилитацию по физической антропологии Zur physischen Anthropologie der Feuerländer и становится приват-доцентом на философском факультете Цюрихского университета.

В 1897 году профессором анатомии в Цюрихском университете становится Георг Руге. Он даёт Мартину лабораторию для антропологических исследований, вскоре формируется отдельный институт. В 1899 году Мартин становится экстраординарным профессором антропологии, в 1905 профессором.

В 1897 году Мартин едет в научно-исследовательскую экспедицию в Малайзию, где ведёт исследования жителей полуострова Малакка, исследует народы сенои и семанги. Для этой работы Мартин разработал инструментарий. Результаты работы опубликованы в 1905 году в монографии  Die Inlandstämme der malaiischen Halbinsel.

В 1911 году из-за слабого здоровья Мартин отказывается от места профессора Цюрихского университета. В Версале он работает над учебником Lehrvuch der Anthropolgie в systematischer darstellung, который был издан в 1914 году. Мартин усовершенствовал существующую методику Поля Броки для антропологических исследований. Первая мировая война застает Мартина врасплох. Ему приходится бросить научную коллекцию и личный архив во Франции и уехать в Германию.

С 1917 года — профессор Мюнхенского университета. Он продолжает работать над вторым изданием учебника. В 1928 году после смерти Мартина он выйдет в трех томах, подготовленный Стефани Оппенхайм, соавтором и второй женой Мартина. В 1956 году третье издание в четырех томах подготовит Карл Саллер, ученик Мартина.

В 1924 году основал журнал биологической и клинической антропологии Anthropologischer Anzeiger (ISSN 0003-5548). В нем Мартин опубликовал результаты исследования влияния голода в Германии на развитие школьников.

Сочинения

Примечания

Литература

Антропологи Германии
Выпускники Фрайбургского университета
Преподаватели Цюрихского университета
Преподаватели Мюнхенского университета

redpajama_set_name: RedPajamaWikipedia


text:
Updated October 26, 2018 by Melissa Harr
The 8 Best Button Machines
This wiki has been updated 4 times since it was first published in October of 2018. Whether you are looking to start a small home business or simply want to craft some flair for yourself, your friends, and your family, a button machine will help you bring your design ideas to life. On this list you'll find a variety of sizes that give you room to express your personal style and vision, as well as bundles that have everything you need to dive in and get to work immediately. When users buy our independently chosen editorial recommendations, we may earn commissions to help fund the Wiki. Skip to the best button machine on Amazon.
8. Dawei Tripod
Sometimes bigger is truly better, and with its ability to make 3-inch designs, the Dawei Tripod does outsize most of its competition. If you're interested in more traditional sizes, several other versions are available, starting as small as 1 inch.
Aluminum alloy slide
No accessories included
Pricier than many bundles
7. Choose Friendship My Image Button Maker
The Choose Friendship My Image Button Maker is a toy kit rather than a long-lasting machine, making it an afternoon crafting idea and not a business investment. Still, it offers both pins and magnets and provides entertainment to kids aged 7 and up.
Convenient storage drawers
Preprinted photo cards
Plastic parts feel flimsy
6. Badge-A-Minit Deluxe
While some people love the Badge-A-Minit Deluxe, other users find it to be too flimsy and frustrating, but since it's both less expensive and simpler to operate than many others, it could be a worthy choice for those who have only a casual interest.
Comes with preprinted designs
Requires a lot of hand strength
Includes parts for only 10 buttons
5. Yescom Punch
Get ready to make 1,000 buttons with the Yescom Punch, which offers three sizes to choose from, 25, 32, and 58 millimeter. If you decide you'd like a different diameter later, don't worry, because the molds are completely interchangeable.
Body is solid cast iron
Acrylic base board
Mechanism could be more long lasting
4. Mophorn 1-Inch
If you're on a budget but still want to get into this hobby, then the Mophorn 1-Inch is a wallet-friendly option to consider. And since it is packaged with 1,000 button parts, you're more likely to run out of ideas than materials.
Several other sizes available
Plastic base with metal body
Pin backs seem a little loose
3. ChiButtons Press
The ChiButtons Press was made to be lightweight, so you could use it as a fun activity at a play date, birthday party, or other event. Plus, there are five colors to choose from, should you want craft supplies that show off your personality.
Online video instructions
Helpful circle cutter
Variety of die sizes are available
2. Neil 2-1/4 Inch
The Neil 2-1/4 Inch is not only a sturdy machine, but it even arrives with an adjustable rotary cutter that ensures precision and excellent results. It's pretty easy to operate, as well, so you won't have to struggle or apply a lot of force.
Includes 100 buttons
Looks and feels heavy duty
Straightforward instructions
1. American Button Machines Set
You'll have just about everything you could need to get started with the American Button Machines Set, which includes a 1-inch machine with an all-metal construction for longevity and durability. It even comes with three handy button design CDs.
Soft cushioned hand grip
Made in the united states
Lifetime warranty against defects
October 24, 2018:
Added choices from the most popular companies, including American Button Machines and Neil. Investigated claims about the usefulness and durability of the Badge-A-Minit machine, ultimately deciding to add it thanks to its budget friendly pricing.
See all creative arts wikis »
Last updated on October 26, 2018 by Melissa Harr
Melissa Harr is a language-obsessed writer from Chicagoland who holds both a bachelor of arts and master of arts in English. Although she began as a TEFL teacher, earning several teaching certificates and working in both Russia and Vietnam, she moved into freelance writing to satisfy her passion for the written word. She has published full-length courses and books in the realm of arts & crafts and DIY; in fact, most of her non-working time is spent knitting, cleaning, or committing acts of home improvement. Along with an extensive knowledge of tools, home goods, and crafts and organizational supplies, she has ample experience (okay, an obsession) with travel gear, luggage, and the electronics that make modern life more convenient.


text:
People sometimes ask, within all you do in art and teaching, why do you officiate weddings?
"I love weddings! They make happy! I love working with couple. This is deeply personal and fulfilling work and I concentrate on the best experience for each wedding. I love the beloved's courage and conviction, idealism, passion, and love that brings forth a wedding. I love the stages of traditional ceremonies, and enhancing them with words that reflect now. This feels like such noble, honorable work, bearing witness to and supporting love and optimism. I have the opportunity to make a profound difference in the sparking of a new marriage. I am always humbled and honored to be included in a wedding, elopement, or vow renewal!"
Calley O'Neill, renowned cultural and conservation artist, and well respected yoga/meditation teacher and originator of The Full Body Elixir, is a beloved wedding officiant on Hawai'i Island. Calley is all in for each and every ceremony, and goes all out for the couples that she works with. Her enthusiasm and positive energy is contagious, uplifting, and deeply loving. Calley was first asked to help with chanting in a few wedding ceremonies twenty years ago, and she loved traditional wedding ceremonies so much, that with no more than word of mouth, her special ceremonies became known for their depth of heart, love, joy, meaning, and sensitivity.
Calley has studied with many renowned yoga, qigong, meditation, spiritual, and Hawaiian cultural teachers and leaders over decades. Calley's spiritual and consciousness studies are ongoing, and her daily morning Full Body Elixir practice is ongoing. Calley brings with her a wealth of wisdom, awareness, and deep respect for our host Native Hawaiian culture, as well as knowledge of mind/boy/spirit practices and integration. Her joie de vie, love and caring for people, her gifts of speaking and reflecting the bride and groom's best, her deep love of nature and Hawai'i, her dedicated work in conservation and education, and her genuine interest in serving to make a powerful positive difference in the world come together in happy, moving, memorable ceremonies.
Calley O'Neill at Puakea Ranch, Kohala, Photo by Shane Fowler
CALLEY O'NEILL, BIG ISLAND WEDDING OFFICIANT
Meet Calley
Planning Details
Vow Renewals
Officiant Fees
Team/Venues
Lokahi Yoga
Wedding Windows
Sunset Love
with Calley O'Neill
Call Calley:
Mobiile: (808) 987-7003
Hawai'i License # 00-104


Mineral performs at Great American Music Hall in San Francisco on Jan. 30, 2019. Photos: Joaquin Cabello.
SAN FRANCISCO — Mineral, which is marking its 25th anniversary this year, performed an intimate show full of emotional throwbacks at the Great American Music Hall Wednesday. While the Austin band has released only a couple of albums and a few EPs over the years, it's made a greater impact that surpassed the sum of its catalog.
Mineral performs at Great American Music Hall in San Francisco on Jan. 30, 2019.
Mineral originally broke up in 1997 after spending less than four years, reuniting for. handful of shows in 2014. While most disbanded groups at the time quickly faded from the spotlight, Mineral had the opposite effect. Its legacy continued to grow. Hearing many of Mineral's songs at Wednesday's show still felt like quite a rarity.
The band opened with three cuts off their 1997 debut album, The Power Of Failing: "Five, Eight and Ten," "Gloria" and "Slower." Mineral still possessed a magical chemistry that made these songs resonate. Vocalist-guitarist Chris Simpson, guitarist Scott McCarver, bassist Jeremy Gomez and drummer Gabe Wiley all played with a passion that captured the whirlwind of emotions of youth.
The group followed with "Unfinished" and "A Letter," from 1998's post-breakup album EndSerenading, and continued with the lilting, soothingly melancholic "Aurora,"off 2019 EP One Day When We Are Young. Mineral's mix of emotively expressed lyrics and sedating guitar melodies transcended emotional boundaries, tugging at heartstrings and underscoring the calm before an emotional storm.
"Summer unfolded like a tapestry/ And you were there as you have always been," Simpson sang during the former. Popular cut "Parking Lot" ultimately closed out the show, with a stirring melody perfectly encompassing the raw sincerity of the '90s emo era.
Tancred performs at Great American Music Hall in San Francisco on Jan. 30, 2019.


text:
Architects and Birdies
"Pole vaulting in the chapel, bicycling in the laundromat, sky diving in the elevator shaft?" Might Bernard Tschumi have also asked, "Badminton in Rudolph Hall?" I leapt to Tschumi's words when seeing this photo on my Facebook wall, from an article at Yale Alumni Magazine:
[Photo: Bob Handelman, via Yale Alumni Magazine]
Apparently, turning "the Pit" on the fourth floor of the Yale School of Architecture into a badminton court is an annual tradition, with about 50 teams playing nearly 100 games, per the magazine. While the tournament takes over the central crit space a few night per week, students still work around the perimeter and on the mezzanine overlooking it. A view of the pit set up for a crit:
[Photo: Seth Tisue, via Wikimedia Commons]
But the Yale architecture students don't just take over the pit, turning Paul Rudolph's space of education into a space of recreation; they also design t-shirts and posters. And according to at least one former student, "Rudolph clearly had Badminton in mind when he designed the 4th floor pit to the perfect dimensions of a Badminton court."
[Photo: Unknown, via Yale School of Architecture]
(Thanks to John J. for the inadvertent heads up!)


Reply offers Consulting, System Integration, Business Process Outsourcing and Application Management. Specialising in the design and development of solutions based on new communication channels and digital media, Reply combines vertical market expertise with innovative technologies such as Social Networking, Cloud Computing and the Internet of Things for the optimisation and integration of processes, applications and devices. Based on a network of companies specialized by service offering, Reply combines the planning and organisational capacity of a large corporation with the flexibility and dynamism typical of specialist companies. Reply [REY IM] since December 2000 is listed in the Star segment of the Italian Stock Exchange.


one- I don't play any sports. Sometimes I wish I did, because I'd like to be part of a team. but oh well.
2. I almost got an iPod with Siri, but it was more expensive, we've had some fun times with Siri XD Have you ever asked her to marry you? It's hilarious.
3. ME. TOO. Oh gosh, that is me 100%. It's sad and annoying, but true.
I just love how you reply to my facts. XD you're so awesome.
That's awesome! I have an iPhone 4. My dad has Siri so I've asked it some questions in the past.
My school is giving us iPads so I am getting Siri next week or so. We are going to be best friends. I feel like I can always talk to her she will listen.


Cap'n ArrDrownHo! is the lovechild of Ardweeny and Boarduino and he's here to commandeer your AVR ships. ArrDrownHo! inherits pros of both and cons of neither. Pick up an AVR chip and start prototyping instantly on a breadboard! Want to replace that costly Arduino in your project with a cheap AVR, but don't know how? Use the simple plug-and-play ArrDrownHo! piggybacked onto the AVR to act as interface for programming and provide power.
I made this when I wanted a simpler way to work with AVRs instead of having to each time wire up breadboard for power regulation, timing crystal and ICSP or SPI programming header connections. Boards like Boarduino and RBBB used plated through holes which I couldn't make at home. Ardweeny required soldering pins to AVR's legs and provided very few features. So I combined the two and took the best of both worlds..
The PCB was designed in Eagle with an underlying theme of Sea Pirates. Don't ask me why, just felt like a fooling around a bit. The parts are stuck together as close as possible and while violating a lot of PCB design rules to achieve as much of a tight fit as possible with through-hole components and home-fabrication in mind. This allows us to keep many rows free on the breadboard for connecting peripherals.
The PCB was fabricated at home using toner transfer method and then soldered. This almost a complete Arduino, without on-board serial communication and of course, without any Atmel IC. Its benefit lies in quick setup of a bare-bones ATmega on a breadboard and taking very less space, most of which is already being taken by the microcontrolIer IC.
• On-board 16MHz crystal/resonator: For precise timing. Both crystal and resonator are comptible with board.
• Tiny 1.6cmX4cm (0.65"X1.6") package: Takes only 1 extra row on a breadboard.
• Home fabrication friendly: No plated through holes!!!


Google took down 1.7bn 'bad ads' in 2016 but why has ad fraud become so hard to stop?
Google took down 1.7bn 'bad ads' in 2016.
Google purged itself of 1.7 billion bad ads last year - more than double the number it axed in 2015 - a fact which belies a problem set to swell unless more advertisers refuse to turn a blind eye to inflated numbers caused by ad fraud.
The online behemoth's latest update on its own efforts to curb ad fraud highlights the scale of a problem; for all Google's efforts last year, is blocking a greater volume of ads just a consequence of there being more bad ads in the first place?
Expanded policies, better detection and sharper internal expertise investments in 2016 suggest it's a conundrum not lost on the advertising business as the industry starts to understand its own involvement in ad fraud.
No surprise then that Scott Spencer, director of product management, Sustainable Ads, couched its achievements with the revelation that it saw a "dramatic increase in scamming activity in 2016". Last year alone, he and his team removed almost seven million bad ads for intentionally attempting to fool its detection systems.
Despite the challenge, it removed almost seven million ads for intentionally attempting to trick its detection systems, proof that is "ready" to spot the tricks of fraudsters. As systems improve, scammers become more advanced, and the battle continues as seen by recent uncovering of Methbot, the largest ad fraud scam to date.
To stress the point, Google pointed out that over 1,300 accounts were suspended last year for attempting to game its system by pretending to be news, a trick known as "tabloid cloaking". Such is the problem that during a single sweep for tabloid cloaking in December 2016, it took down 22 culprits responsible for ads seen over 20 million times by people online in a single week.
Any quality ad tech platform will have multiple layers of defence in place in the form of both human and technology review systems that work to eliminate bad ads. However, no system is 100% fool proof, argued Andrew Buckman, managing director for OpenX's EMEA business.
There is massive transaction volume and a very low tolerance for error by publishers, and it is a never ending battle as the bad actors are continually developing more sophisticated and advanced ways of evading the controls in place.
But it's not just ads behind bad experiences, there's also the publishers and website owners that would make money from them too.
Bad ads are disguising themselves as topical news stories for click bait, threatening the integrity of the media industry at a time when fake news is a legitimate concern. Between November and December last year, Google reviewed 550 sites it suspected of "misrepresenting content to users", including impersonating news organisations, it took action against 340 of them for violating its revamped AdSense misrepresentative content policy. Of that number, nearly 200 publishers were booted out of its network permanently.
However, Google can only do so much to tackle a problem as entrenched as ad fraud. The online behemoth may have disabled more than 68 million bad ads for healthcare violations (up from 12.5 million the year prior) and taken down more than 17 million for illegal gambling violations in 2016, but the issue continues to grow when there is little in incentive for ad networks to offer an alternative if clients continue to press them for lower rates.
It's a contentious point many advertisers have been unwilling to tackle for some time, though their stance is shifting now ad fraud is becoming more widely debated. As recently as the World Economic Forum last week, Publicis Groupe boss Maurice Levy voiced his concern that fraudsters are rife on Facebook.
"It's down to us to as clients to be taking back control of that ecosystem and to understand how are money is working for us," said the Stephan Loerke, the chief executive of the World Federation of Advertisers.
Every player in the ad tech industry – publishers, agencies, marketers, and ad tech providers – must be held accountable and take appropriate steps to eradicate fraud and improve ad quality, said Marc Rouanet, co-founder and president at Sublime Skinz.
While smaller ad providers may argue that eradicating fraud is easier said than done, Marc Rouanet, co-founder and president at Sublime Skinz said the solution lies in partnering with companies that can help prevent fraud infiltrating their systems.
Elsewhere, Google also acknowledged the spread of ad fraud on mobile, revealing that it had disabled over 23,0000 self-clicking ads on its platforms last year, compared to only a "few thousand" in 2015.
One thing that perhaps doesn't get enough visibility is in-app fraud. Whereas desktop is significantly more established, fraud in-app poses a number of different issues unique to mobile. In particular, viewability checks are needed to guard against ads being served when an app is running in the background.
"In the mobile app inventory space, Google – despite having, arguably, the biggest mobile app exchange in admob – could end up relying on 3rd party tracking technologies such as AppsFlyer, Tune and Adjust to provide a greater barrier to avoiding fraudulent ads, suggested James Shaw, mobile director at Roast.


Patient received filler (Restylane) in her tear troughs, and filler (Juvederm Ultra Plus) in her marionette lines with Dr. Chang.
41 year old with mid facial atrophy after weight loss. She underwent filler injections with immediate rejuvenation. Note her "immediate" after photo without any bruising and minimal edema, ready to return immediately back to her "normal active" life.
Fillers – photos of a 35 year old female patient that had 2 syringes of Juvederm Ultra Plus injected into her lips using the blunt tip cannula technique resulting in fuller looking lips.
Before and 6 month after photos of a 48 year old female patient of Dr. Chang's after having minimally invasive rejuvenation done to her lower face around her mouth and chin with 1 syringe of Juvederm Ultra Plus.


Further numbers that were allocated to the caller "domestic & general"
This number has called me several times in the last few days... 39 more comments!
Would I like insurance for all electric items I have possibl... 23 more comments!
Domestic & General Ltd... 8 more comments!
pain in the arse telemarketing outfit. block them if you can... 10 more comments!
Said they were calling from Domestic and General - a company... 25 more comments!


text:
Cesare: A Novel of War Torn Berlin
by Jerome Charyn
Add to My Bookshelf
LoveReading View on Cesare: A Novel of War Torn Berlin
Exquisitely weaving fact and fiction this heart-rending yet fascinating historical novel is set during a time of clandestine opposition to the Nazis. Chief of the Abwehr, spymaster Wilhelm Canaris, creates an almost mythical figure when he recruits a young man and calls him Cesare. The story centres around Canaris, Erik (Cesare) and Lisa, the woman who effectively set Erik on his course. Using the real-life Canaris ensured my mind almost played tricks on me, and at times I struggled to remember that this was fiction, as it felt all too real. Jerome Charyn successfully highlights the contradictory nature of Canaris, this is the man who suggested the yellow Star of David in 1935 to identify Jews, but by 1939 and the outbreak of war began attempts to undermine the Nazi regime. There is a raw, almost brutal quality to the all-consuming storyline. Yet this is intoxicatingly readable and the central relationships encouraged me on to the finish. By the end I was mentally shattered, this most certainly isn't an easy read, but it is enthralling. This novel encouraged me to research the history of Admiral Canaris, to consider the nature of good and evil and how it combines when contained within human nature. Cesare is haunting, traumatic, and yet I wholeheartedly recommend, and include it as one of my Liz Picks of the Month.
Liz Robinson
Cesare: A Novel of War Torn Berlin Synopsis
On a windy night in 1937, a seventeen-year-old German naval sub-cadet is wandering along the seawall when he stumbles upon a gang of ruffians beating up a tramp, whose life he saves. The man is none other than spymaster Wilhelm Canaris, chief of the Abwehr, German military intelligence. Canaris adopts the young man and dubs him 'Cesare' after the character in the silent film The Cabinet of Dr. Caligari for his ability to break through any barrier as he eliminates the Abwehr's enemies.
Canaris is a man of contradictions who, while serving the regime, seeks to undermine the Nazis and helps Cesare hide Berlin's Jews from the Gestapo. But the Nazis will lure many to Theresienstadt, a phony paradise in Czechoslovakia with sham restaurants, novelty shops, and bakeries, a cruel ghetto and way station to Auschwitz. When the woman Cesare loves, a member of the Jewish underground, is captured and sent there, Cesare must find a way to rescue her.
Cesare: A Novel of War Torn Berlin Press Reviews
'A complex and detailed story of the inner workings of the German Third Reich during World War II... Highly recommended' - Library Journal
'Charyn has created a terrific cast of original characters who speak in a language that reflects the selfish and predatory nature of that time... He tells a fascinating story of resistance against evil with a great deal of energy'- Historical Novels Review
If you loved this, you might like these...
All versions of this book
Publisher: No Exit Press
Publication date: 12th November 2020
Author: Jerome Charyn
Pagination: 1 pages
Genres: Action Adventure / Spy, Historical Fiction, Liz Robinson's Picks of the Month, Star Books, Thriller / Suspense,
Collections: 70+ Action-Packed Books, Our Favourite Books of 2020,
Categories: Crime & mystery,
About Jerome Charyn
More About Jerome Charyn
More Books By Jerome Charyn
View All Books By Jerome Charyn


If you have a remarkable sensibility to handicraft, take on this azulejos printed shirt! You will appreciate the finish of its Milanese collar and single-button cuffs as well as its slim cut. With navy blue pants or beige ones for a contrast, you are dressed for a treasure hunt!


text:
by Peter Tyson
Hunt for the Supertwister homepage
How is that with nearly 200 nations in the world, just one—the United States—gets up to three quarters of all tornadoes?
I've had only one tornado dream that I can remember. Now, I agree with whatever famous writer it was who said "Describe a dream, lose a reader." So I won't bore you with the details of that nightmare, except to say that even as I realized I was completely surrounded by tornadoes—something stormchasers call being "inside the bear's cage"—I knew instinctively that I was in the Great Plains.
Verisimilitude is hardly a quality I would associate with my dreams, particularly when it comes to settings. But in this case my brain got it just right. I once drove the breadth of Kansas, and the landscape in my dream looked just like that: low-lying and treeless in all directions, with nothing to obstruct my imagined view of eight or 10 jet-black twisters writhing all about me like giant leeches.
Tornado heaven
My mind had good reason to set my nightmare there. The Great Plains of the U.S. gets more tornadoes—and more violent tornadoes—than anywhere else on Earth. Movies from The Wizard of Oz to Twister have drummed this fact into our collective unconscious, and every year we hear of killer cyclones that have ravaged some midwestern town or trailer park.
But have you ever stopped to wonder why the Great Plains, and by extension the country as a whole, gets the lion's share of our annual planetary quota of tornadoes? I hadn't—mostly, I suspect, because I'm an East Coaster, and for us tornadoes lie in the realm of the freak occurrence. As we'll see, most people elsewhere in the world appear to feel similarly about tornadoes.
The answer, I found, is two-fold. It has to do with what you might expect (climatological conditions in the Great Plains are unparalleled for spawning tornadoes), but also with what might come as a surprise (very few nations even bother to record tornadoes). One expert I spoke with believes that even countries that report their worst windstorms may be underreporting by a factor of seven. And "tornadic events" that get reported as a single tornado in a country with a nonexistent damage-assessment system might, with a better such system, be found to have been 10 separate tornadoes—this makes assigning twister numbers by country even trickier.
The truth is, the U.S. very well may not get three out of every four tornadoes that occur on Earth; it may just look that way.
Accident of geography
The Great Plains has been likened to a funnel factory. It possesses all the ingredients needed to produce, as one expert put it to me, "some hellacious thunderstorms"—the parents of tornadoes. In spring and early summer, warm, moist air blowing in from the Gulf of Mexico can become trapped beneath a "lid" of hot, dry air gusting from the high desert region of the Southwest and, above that, cold, dry air sweeping over the Rockies. Like a lid on a pot of boiling water, this "convection cap" keeps the warm air from rising. The pressure builds, until a cold front or other boundary between air masses moves in and weakens the cap. Quite suddenly, the warm, humid air can burst forth, billowing upwards at up to 100 miles per hour and swelling into 50,000-foot-tall thunderstorms in minutes.
Some of these thunderstorms begin rotating through most of their depth. (This happens because of wind shear, a dramatic change in wind speed or direction over a very short distance.) Called "supercells," these storms serve as ideal generators of tornadoes, from those that scrape off a few shingles to those rare, mile-wide monsters that leave nothing in their wake but cleared concrete foundations. "No other place on the planet has the source of warm, moist air on the equatorward side and a wide, high range of mountains extending from north to south on the west side," says Harold Brooks, a tornado expert at the National Severe Storms Laboratory in Norman, Oklahoma. "The Andes aren't as wide as the Rockies, and the Himalayas don't extend very far from north to south."
While the Great Plains gets the bulk of American tornadoes, other parts of the country witness them as well. Florida sees more twisters than Oklahoma, though they're far weaker. Cyclones also strike Colorado, and occasionally a ripsnorter will touch down in other states. In 1979, I was living in Hartford, Connecticut, when a tornado raked through nearby Windsor Locks. That tornado is fifth on a list of tornadoes that have caused at least $200 million in damage (in inflation-adjusted 1999 dollars). All 50 states, in fact, have experienced twisters.
All told, about 1,200 tornadoes occur annually in the United States. The entire rest of the world collectively reports just 200 to 300 every year. Yet only in this country is the number of reported tornadoes roughly equal to the number of actual tornadoes in any given year. The U.S. began officially collecting tornado reports back in 1953 and rating tornadoes using the Fujita Scale 20 years later. No other nation has such a robust or longstanding system.
As a sign of how lackluster tornado reporting is elsewhere, can you name a single country outside the U.S. where tornadoes regularly occur? I couldn't before starting this article. In fact, I couldn't remember hearing of a single tornado that ever struck anywhere else in the world. I'm sure I've heard of some, but they didn't stick in my mind.
Tornado countries
Not surprisingly, the planet does have other tornado seedbeds, and some occasionally germinate twisters to rival the nastiest the U.S. has to dole out. In raw numbers, Canada probably comes in second to the U.S. The same climatological regime that brings tornadoes to the southern Great Plains in early spring moves north through the year to unleash more of the same on western Canada in July.
After the U.S. and Canada, Bangladesh and East India probably get the most violent tornadoes; they certainly suffer the deadliest. On April 26, 1989, the most lethal tornado on record swept Bangladesh, killing about 1,300 people, injuring 12,000, and leaving 80,000 homeless. High population density, flimsy housing, and a nonexistent tornado warning system mean killer tornadoes are all too common there, says Jonathan Finch, a meteorologist at the National Weather Service in Dodge City, Kansas, who is an expert on that region's tornado climatology.
Europe may come next in sheer number and intensity. Tornadoes have been reported across the continent, from Scandinavia south to Italy and from Spain east to European Russia. The United Kingdom gets more than 30 tornadoes a year, which per unit area compares with the Great Plains. But as in Florida, they're sired by nonsupercell storms and thus pack a much softer punch.
The Southern Hemisphere has several hotspots, including southeastern and southwestern Australia; the region encompassing northern Argentina, Uruguay, and southern Brazil; and southeastern South Africa. Records show that more than 200 tornadoes hit South Africa in the 20th century, including one in 1999 that knocked down part of a pharmacy in which President Nelson Mandela was shopping at the time (he was uninjured).
Virtually all areas that regularly see tornadoes share one thing in common: they lie 20° to 50° on either side of the equator, in the mid-latitudes. "You could probably get a tornado anywhere on the planet, but there are places where they are far less frequent," says John Snow, a tornado expert at the University of Oklahoma. "For good meteorological reasons, these tend to be in the tropics and the very high latitudes." The only continent where tornadoes have not been reported is Antarctica.
Telling it like it is
In 1973, the year his Fujita Scale went into effect, tornado expert Theodore Fujita called for the creation of an international tornado reporting system. Such a system would help in better understanding and preparing for potentially devastating tornadoes. Yet 30 years later, no such thing exists. International reports remain so incomplete that rather than rely on them, Brooks has taken to studying environmental conditions worldwide to make estimates of the frequency of the severe thunderstorms that give rise to tornadoes.
The situation is improving. This November representatives from across Europe will meet about creating a Europe-wide tornado database. A similar database for Bangladesh tornadoes is in the works. Perhaps even Russia and China—two nations notorious for keeping mum about their tornadoes—will begin to collect and share reliable data. Both countries are thought to get their share of deadly tornadoes: one tornado north of Moscow in 1984 may have been an F5—the most destructive type of funnel—and southeastern China is regularly pounded by typhoons that likely trigger tornadoes. Perhaps it's just a matter of time before we have a truly accurate notion of how many tornadoes are not American-made.
That won't change where the most and worst tornadoes occur, however. The Great Plains, as my dreaming mind knows, will always hold that distinction. Incidentally, a mea culpa: I did describe my dream. For the very moment I realized I was surrounded, I got so spooked I woke up.
There's no better place to set a tornado nightmare than in the Great Plains. Here, a massive funnel near Seymour, Texas, in 1979.
The Great Plains climate cooks up the right ingredients for twisters. Above, a graceful strand touches down near Union City, Oklahoma, in 1973.
Tornadoes regularly touch down in places far from Tornado Alley. In June 1998, a twister demolished this house near Pittsburgh, Pennsylvania.
Though outdated and far from comprehensive, Ted Fujita's 1973 map of tornadoes expected to occur over a four-year period gives a rough idea of where they are known to occur around the globe.
Tornadoes strike not only many countries other than the U.S. but their cities as well. Perhaps the earliest tornado on record for London descended on October 17, 1091, killing two. The one that damaged this house in West London appeared in 1954.
How is it that the U.S. gets up to three quarters of all tornadoes?
With this remarkable story, see how far tornado warning has come since 1928.
Tracking Twisters
Can new weather radar networks spot tornadoes earlier and thereby save lives?
Shelter From
Damage expert Tim Marshall explains why he fears ever graver twister disasters.
Rate Tornado Damage
Assess the level of destruction left in the wake of actual tornadoes.
Peter Tyson is editor in chief of NOVA online.
Hunt for the Supertwister homepage | NOVA homepage
© | Created March 2004


This page may not contain all items available from Cabranmary Woods. If you do not see what you are looking for please email us and if possible we will add the item to this page or order it for you.
The Box is a handy container with a hole in the cover for that special cross stitch or needlepoint design. It comes with a wood insert that can be engraved at no extra cost, and also a piece of foam core to stretch that special stitchery on when ready. Custom orders are accepted. Enter your information in the box provided if you want engraving. The box comes in several sizes and is available in Butternut, Cherry, Maple or Walnut. There is even a size that fits the Mill Hill 6" x 6" beaded kits perfectly!
The Box - 4.50" by 4.50"
Dimensions: 4.50" by 4.50", with an opening in the cover of 2.5"
The Tool Caddy is a functional accessory to carry your tools and threads. It is 2 1/2" x 6" x 6". It comes in Butternut, Cherry, Maple and Walnut and can be engraved with your company name, or even a customer's name at no additional cost.


A fascist group had called a rally in Melbourne against immigrants and against Islam.
A coalition of left groups, community groups and unions organised a powerful rally in the same day and place to stop the racists. The anti racist rally was sucessful. Some fascists came, but they could not rally and they soon left. The anti racist rally was very well attended, with many speeches and rap music. The anti racist rally concluded with a short march through the centre of Melbourne.
Thank you to all the people who came to the rally, to the organising groups, endorsers and supporters who sent solidarity messages.


City of Glass is the third book in the urban fantasy series The Mortal Instruments by Cassandra Clare .  In 2009, Walker Books published the third book of the series worldwide.  It is a journey that explores Simon's and Clary's experience in the Shadowhunter city, and Clary works on saving her mother, as they travel from New York institute to Alicante, Idris.


Here is another blog entry about thumbprint taking - step by step.
Here is a post about notary thumbprints and how they can save your neck.
Taking journal thumbprints is an essential part of being a good notary. Most states don't require thumbprinting the signer, nor do many states even require a journal. I say, use both, because you need records that can prove the identity of a signer without guessing and wondering if they forged a signature.
In California, it is mandatory to take a journal thumbprint for each signer of a Power of Attorney or Deed effecting real property. This is a great way to prevent fraud.
Take the RIGHT thumb of the signer, press it against the ink in your thumbprinter. Or get an inkless thumbprinter if you like oxymorons. Then, press the signers thumb to make a FLAT impression in the thumbprint section of the corresponding journal entry. Its easy, and you can carry sanitary wipes so that the signer can clean their thumb.
Rolled prints are only for fingerprint cards, not for journal thumbprints. Flat only please.
Try taking people's thumbprints a few times, and its not too hard. Elderly people often have arms as tense as the Berlin Wall and hold on for dear life, and they can be a trick to fingerprint. Some individuals have very faint thumbprints which is an issue for fingerprint cards, as those could be rejected. But, for a journal thumbprint there is no standard and nobody will check your work unless you go to court regarding that particular notarization which is a one out of 40,000 chance.
What if they are missing a right thumb?
I had one client who liked experimenting with explosives. I'll leave the rest to your imagination. If the signer lacks a right thumb, use the left thumb. If no left thumb, use a right index finger. If you use a finger other than the right thumb, DOCUMENT which finger you used in your journal.
Remember, a criminal can forge an ID, and can forge a signature, but nobody can forge a thumbprint. So, take thumbprints to deter fraud and to protect yourself from court cases and liability.


text:
'Players turning down Premier League for Newcastle'
Posted on 20th July 2016 by Donagh Corby
Newcastle United manager Rafael Benitez was in flying form when met the Irish media today in his team's base at county Kildare's Carton House today.
His Newcastle side will face League of Ireland outfit Bohemians at Dalymount Park tomorrow, but he admitted that pre-season results are not be his main priorities at this stage. "I'm not really worried about the games that we have in pre-season. I am more worried about my team. I want to see a good performance, and hopefully we win, but I want us to play well and hopefully the fans have a good time, especially our fans! But it's just part of pre-season and what I want is for the team to be ready for August.
"Tomorrow is an opportunity for us to see how everything we've done during this week [in Ireland] affects us on the pitch. I think it will be a competitive game."
Benitez' squad appeared settled when we watched them train at the countryside hotel, which has also hosted many international sides as well as Real Madrid, who completed a similar week's training camp prior to Cristiano Ronaldo's debut in 2009. While there may be one or two players still to come in, as well as the returns of Moussa Sissoko from the Euros and Tim Krul from injury, the Spaniard seems content with his current crop of players.
"Now it seems with the TV contracts everybody has more money, so my job is to keep players from moving and maybe buy some… But I am happy so far."
He also noted the changes in the sport because of finances and believes that it makes managers more alert. "The game has changed a lot and you have to be careful because now you have to be quick when you want to sign a player. But [Newcastle] is a big club. You see players who want to come here or stay here and they turn down offers from Premiership clubs. That was very important, and another reason why I decided to stay because you can see we want to build something and become even bigger in the future."
Donagh Corby
Donagh started working in the League of Ireland in 2010 at the age of 12. Since then his videos have amassed over two hundred thousand views on Youtube and he has worked with RTE, Ireland's National Broadcaster, as well as newspapers and radio stations all over the country. He has won awards for his work, including the inaugural Football Blogging Award. You can follow him on twitter @DonaghCorby_
Latest posts by Donagh Corby (see all)
Hozier at the Pride of Ireland Awards - 13th September 2016
BAMMA 26 coverage - 9th September 2016
'Players turning down Premier League for Newcastle' - 20th July 2016
English ChampionshipEnglish footballNewcastle UnitedPremier League
Football / Sport	Leave a comment
« Wall Street Guru: The new movie villain?
Ones to watch at Rio 2016 »


I understand that yoga requires and includes physical movements. I realize that yoga also provide relaxation, stress relief, stress education and awareness. As with any physical activity, the risk of injury, even serious or disabling, is always present and cannot be entirely eliminated. If I experience any pain or discomfort, I will notify the instructor, adjust my posture and listen to my body. I will not push my body too far and will ask for support from the teacher if needed.
Yoga is not a substitute for medical care or diagnosis. Yoga can work well in conjunction with traditional medical care. I will practice yoga only after discussing it with my doctor and gaining their approval. I affirm that I alone am responsible to decide whether to practice yoga. I hereby agree to irrevocably release and waive any claims that I have now or hereafter may have against NATTIEL PIERSON.
1. That I am participating in yoga classes offered with NATTIEL PIERSON, where I will receive information and instruction about yoga. I understand that yoga requires physical exertion which may be strenuous and may be strenuous and may cause physical injury. I am fully aware of the risks involved.
3. In consideration of participating in yoga, I agree to assume full responsibility for any risks, injury or damages, which I might incur as a result in participating yoga.
4. I knowingly and voluntarily waive any claim I might have against NATTIEL PIERSON for injury or damages that I may sustain as a result of participating in this program.
5. I, my heirs or legal representative forever release, waive, discharge and covenant not to sue NATTIEL PIERSON for any injury or death caused by their negligence or other acts.