text:
Tiki Talk: The Jokes of Episodes 6 and Scraps
A new airplane design dubbed the "Sky Whale" would be the greenest aircraft ever according to its Spanish designer, Oscar Viñals. He went on to say that the name is not final, because he doesn't want it to also be the most self conscious aircraft of all time.
...The only problem with his design, is getting it to run on something other than krill.
Two teenage girls from California who both crossed the country to attend Tulane University in Louisiana became room mates only to find out that they share the same sperm donor father. That's pretty cool, but more importantly, does that mean their moms are eskimo sisters...?
A fisherman in New Zealand caught a strange translucent sea creature which baffled him. Upon further analysis it turned out it was just a condom with extra ribbing for her pleasure.
Stephen Hawking has written a new paper in which he claims that black holes don't exist. He said, "if you think that's controversial, wait until my next paper, which will prove that the holocaust never happened."
New evidence collected by the Mars Opportunity rover has revealed that life-friendly water flowed on the planet 4 billion years ago. However, it is still impossible to prove that the life was actually there without a working time machine.
...NASA says the limits of the older rover make it difficult to be certain still whether life ever actually did exist on the planet, but the time machine they wanted to install would have been way too expensive.
A fan of Apple's iPhone recently spent six months with a Samsung Galaxy S4 to see whether he should switch or not. He said that overall apps on the iPhone, "not only work better... they just... look better." Which is basically how I feel about girls who work at Raley's and Bel Air.
In an interview with Self magazine, skiing star Lindsey Vonn said that she doesn't always feel comfortable with her body image, especially when she's at fashion events with lots of skinny girls. Hey, I would feel that way too if I was dating Tiger Woods.
According to a story on The Street, the five states most likely to legalize marijuana after Colorado and Washington are Alaska, Oregon, California, New Hampshire, and Maine. Meanwhile Florida is on its way to being the first state to legalize bath salts.
Scientists recently discovered a supernova that appeared in the night sky. The supernova was detected when an astronomer, "felt a great disturbance in the Force, as if millions of voices suddenly cried out in terror and were suddenly silenced."
...The supernova is a reminder that the night sky is full of wonders but more importantly, death and destruction. Worship the sun today, or die. (cut to Ricky and I worshiping the sun).
NASA is shutting down tours of the Vehicle Assembly Building at the Kennedy Space Center for renovations that will prepare it to launch a new Space Launch System or SLS. However, due to budgetary constraints, the renovations will be done by HGTV as part of its 2014 Dream Home giveaway.
A photo has been taken of the extremely elusive Borneo Bay Cat in Southeast Asia. The cat is said to be nocturnal, secretive in nature, and have a very low population density. We have a picture here: That's right, we at Epic Tiki are smart enough to make an Emily Dickinson joke!
A plumber in Louisville surprised Muhammad Ali on his birthday last Friday by knocking on his door and saying hello. The plumber got to take a picture with the living legend, which he said, "took a few tries to get down." (A lot of shakiness).
Big news today, Amber Heard, known to be bisexual, and Johnny Depp have gotten engaged. Depp said the reason he asked her to marry him is that she was the only girl who is into him wearing makeup all the time.
NFL Hall of Fame quarterback and former 49er Joe Montana said Friday that he thinks current 49ers QB Colin Kaepernick is great except for his pocket passing skills. After watching the 49ers take on the Seahawks however, Montana said he believes Kaepernick may just be color blind, as he couldn't tell which jersey was the right one to throw to.
Former MLB All-Star Vernon Wells will make $21 million this year despite being let go by the Yankees. Well's contract is pretty bad, but at least the Yankees didn't overpay for a brand new Ford Fiesta! (This guy...)
...So basically 2014 is starting off pretty well for him so far!
George Clooney recently played a prank on his friend Matt Damon by taking in the waistline of Damon's pants by small amounts every few days as he was trying to lose weight. Clooney later admitted that this prank is the real reason none of his girlfriends last that long.
An automotive company in Canada called Canadian Tire has built a Chevy Silverado 2500 with a cab made completely out of blocks of ice. Chevy said it was largely an impractical model as only Eskimo and Inuit peoples would ever actually consider buying it.
Kim Jong Un reportedly fed his uncle alive to 120 starved hunting dogs. There is something ironic and racist here, but I won't say what it is... I'll let you do the math...
...Michael Vick
A man surprised his long-distance girlfriend with 98 Instagram love notes. Within minutes he lost every single one of his followers, including his girlfriend who said, "It was a little much."
← Random Tiki Talk Jokes From I Don't Know WhenTiki Talk: Monologue Jokes 12/18/13 - 12/26/13 →


Because once again, e-cigs may not be the magic bullet for the tobacco industry — and indeed your health — that we initially thought.
New research reports that vapour produced by electronic cigarettes can contain worryingly high concentrations of formaldehyde, a known carcinogen.
Dang, it looks like e-cigarettes just can't catch a break right now. New research has revealed that vapor produced by electronic cigarettes can contain a surprisingly high concentration of formaldehyde. Formaldehyde is a known carcinogen, with long term exposure contributing to lung cancer.
Published in the New England Journal of Medicine, the findings add to the concern surrounding the safety of electronic cigarettes, which have seen a steady uptake in users despite increasing evidence that they're not the healthy solution to cigarette smoke that the tobacco industry claims.
NPR reports that the e-cigarette industry has immediately dismissed the findings. "They think, 'Oh well. If we hit the button for so many seconds and that produces formaldehyde, then we have a new public health crisis to report.' But that's not the right way to think about it," Gregory Conley of the American Vaping Association told the public broadcaster.
The New England Journal of Medicine report took a closer look at what's in the vapor of e-cigarettes. The researchers found that when dialling them up to their highest settings (like a boss), masked formaldehyde could be found in the liquid droplet particles in the aerosol. Masked formaldehyde is a particular type of the carcinogen that's thought to increase the likelihood of being deposited in the lungs.
But it was the level of masked formaldehyde that was most disturbing, coming in at a concentration five or fifteen times that of normal cigarettes. The researchers acknowledged that they were testing the e-cigarettes on a high setting, but Professor David Peyton of Portland State University, a co-author on the paper, told NPR that he suspected from anecdotal evidence that many users were regularly vaping at these sorts of levels.
The findings are the latest in a series of blows for the nascent e-cigarette industry, which for a long time seemed like a savior for both the tobacco industry and those looking to break their addiction to traditional cigarettes.
In August last year the Telegraph reported that the World Health Organisation was urging a ban on the indoor smoking of e-cigarettes. "The fact that [electronic nicotine delivery system] exhaled aerosol contains on average lower levels of toxicants than the emissions from combusted tobacco does not mean that these levels are acceptable to involuntarily exposed bystanders," the Telegraph quoted the WHO as saying. Meanwhile, in late December KVUE reported on a National Jewish Health study that found that liquid vapor can damage healthy cells in the lungs within ten minutes.
Earlier this week, Reuters reported that the Cochrane review, a meta assessment of impartial e-cigarette studies, concluded that while e-cigs may help smokers quit and that there was little evidence that they hurt users, the studies were generally thin and the data poor.
In short, the jury's out. Vape with vigilance, dudes.
Ask The Big Question: Given the massive damage traditional cigarettes do to our health, shouldn't we take it a little easier on all this vape knocking?
Disrupt Your Feed: Smoking is bad for you. Vaping is bad for you. Maybe it's just time you quit.
Drop This Fact: More than 40 million Americans are cigarette smokers, and two million have converted to e-cigarettes.


text:
It's not only engineers who work in robotics
by Hallie Siegel
Occupational Therapist Rosalie Wang investigates how intelligent haptic robotic systems can benefit people recovering from upper limb disability due to stroke. Photo courtesy IATSL (Intelligent Assistive Technology and Systems Lab) at Toronto Rehab, University of Toronto.
Robotics has always been an interdisciplinary field – one that integrates knowledge from computer science, mechanical, electrical, controls, and other areas of engineering. But as robots move out of factories and research labs, and into our homes and workplaces, another breed of robotics expert is emerging – and an engineering or computer science degree is not necessarily part of their resume.
From occupational therapy to rehab robotics
Rosalie Wang is Assistant Professor at the Intelligent Assistive Technology and Systems Lab (IATSL), a multi-disciplinary research group at the University of Toronto made up of engineers, computer scientists, rehabilitation and medical researchers who leverage artificial intelligence and robotics to develop intelligent assistive and therapeutic devices. IATSL research runs the gamut, including obstacle avoidance and guidance systems for powered wheelchairs, fall detection solutions, intelligent haptic systems for stroke rehabilitation, personal robots to assist aging-in-place, assistive robots for people with dementia, and much more.
But Wang started her career working as an Occupational Therapist, supporting clients in long-term care. Her passion was helping seniors, and it was while working at a nursing home that she found herself tinkering with her clients' wheelchairs. "I would come home with grease in my fingernails, having taken apart and put back together a wheelchair so that it would better fit my client's needs." One thing led to another, and soon she found herself doing a PhD on collision-avoidance technology for powered wheelchairs.
Translating tech into practice
Finding technical solutions to 'people problems' is a special skill that requires deep knowledge of both the end-user and their context, and an ability to work closely with engineers and computer scientists to understand the possibilities and limitations of the technology.
A common problem with powered wheelchairs, says Wang, is that they can be hard for someone who has physical and/or cognitive impairments to control; and because they are powered, they can also be more dangerous than manual wheelchairs, especially to someone who is already in a fragile state of health – one reason why some nursing homes have banned the use of powered wheelchairs altogether. And then there are the ethical aspects: "It's hard to take a powered wheelchair away from someone once you've given them one. We want to enable mobility, and we want to keep people safe, and we want to do it in a way that respects the client," says Wang.
Wang also points out that simply having technology that works under certain conditions doesn't mean it will be taken up in practice; many contextual factors that lie outside the technology itself can get in the way. For example, most fall detection monitoring services tend to use a subscription-based business model, similar to home monitoring. But Wang has found that many clients prefer to have their personal care monitoring service trigger warning calls to a family member rather than a call center – even though this solution is less likely to be taken up by industry partners. "As you're designing the system, you have to look at the whole picture. Clients feel there is a stigma attached to disrupting a call centre."
Developing technology into systems and products that can actually be deployed into real world scenarios is a challenge, and it's important to understand clients' personal preferences and their physical and cognitive abilities, as well as contextual factors, such as nursing home architecture, routines and regulations, family and caregiver needs, ethics and more. This is why a critical part of the research at IATSL is also to develop frameworks, guidelines and methodologies for applying intelligent assistive technologies in nursing homes and at home.
Rosalie Wang speaks about her career path from Occupational Therapist to rehab robotics researcher at the Women in Robotics lecture series, hosted by Get Your Bot On and Women Engineers TO in Toronto, Canada. Photo via Nicole Proulx.
For Wang, the benefits of being an Occupational Therapist in the field of robotics and AI cut both ways: she can bring a user-centered perspective to designing the technology, but "Robotics and AI can also help to augment the work of the Occupational Therapist and advance the field as a whole," she says. Wang's research also includes clinically evaluating robots for upper limb stroke rehabilitation and assistive robots to help older adults with dementia. Her latest paper, just published last month, examines how older adults with Alzheimer's and their caregivers feel about using robots to help them complete tasks at home, and is one of the few studies to give an in-depth perspective on the issue.
From an Occupational Therapist's perspective, one of the key benefits of employing robotics and AI is that it can yield data for evidence-based therapy. "It used to be that we could only measure therapy results with very coarse snapshots … a client either could complete a task or they could not complete it. This kind of feedback is potentially very demoralizing to the client, and makes it harder for the therapist to perceive and record small changes in progress… Now we can collect continuous data, which lets us design more refined therapies, and gives clients a better sense of progress. A therapy robot can give you continuous clinical data, even when you can't perceive it."
When asked if she ever imagined she would be working in robotics one day, Wang gave a resounding answer: "No." And she is reluctant to describe herself as a roboticist. Still, given the wide range of projects being undertaken at the Intelligent Assistive Technology and Systems Lab, it's clear that it takes an interdisciplinary team with all kinds of expertise to translate robotics and AI into practical healthcare solutions.
Team members at IATSL have backgrounds that include occupational therapy, neuroscience, industrial design, biology, clinical psychology, experimental psychology, rehabilitation science, and nursing.
tags: assistive robotics, c-Health-Medicine, Canada, cx-Research-Innovation, rehabilitative robotics, Rosalie Wang, University of Toronto
Hallie Siegel robotics editor-at-large

redpajama_set_name: RedPajamaCommonCrawl


text:
Detecting Crap on the Internet
27. October 2014 · 10 comments	· Categories: Science Communication
For our course about the impacts of the internet, we developed an exercise to get our students thinking critically about the credibility of things they find on the web. As a number of colleagues have expressed in interest in this, I thought I would post it here. Feel free to use it and adapt it!
Near the beginning of the course, we set the students to read the chapter "Crap Detection 101: How to Find What You Need to Know, and How to Decide If It's True" from Rheingold & Weeks' book NetSmart. During the tutorial, we get them working in small groups, and give them several, carefully selected web pages to test their skills on. We pick webpages that we think are not too easy nor too hard, and use a mix of credible and misleading ones. It's a real eye-opener exercise for our students.
To guide them in the activity, we give them the following list of tips (originally distilled from the book by our TA, Matt King, who wrote the first draft of the worksheet).
Tactics for Detecting Crap on the Internet
Here's a checklist of tactics to use to help you judge the credibility of web pages. Different tactics will be useful for different web pages – use your judgment to decide which tactics to try first. If you find some of these don't apply, or don't seem to give you useful information, think about why that is. Make notes about the credibility of each webpage you explored, and which tactics you used to determine its credibility.
Is the author of a given page named? Who is s/he?
What do others say about the author?
Does the article include links (or at least references) to sources?
What do these sources tell us about credibility and/or bias?
Ownership of the website
Can you find out who owns the site? (e.g. look it up using www.easywhois.com)
What is the domain name? Does the "pedigree" of a site convince us of its trustworthiness?
Who funds the owner's activities? (e.g. look them up on http://www.sourcewatch.org)
How much traffic does this site get? (e.g. use www.alexa.com for stats/demographics)
Do the demographics tell you anything about the website's audience? (see alexa.com again)
Do other websites link to this page? (e.g. google with the search term "link: http://*paste URL here*")? If so, who are the linkers?
Is the page ranked highly when searched for from at least two search engines?
Design & Interactivity
Does the website's design and other structural features (such as grammar) tell us anything about its credibility?
Does the page have an active comment section? If so, does the author respond to comments?
Can you verify the content of a page by "triangulating" its claims with at least two or three other reliable sources?
Do fact-checking sites have anything useful on this topic? (e.g. try www.factcheck.org)
Are there topic-specific sites that do factchecking? (e.g. www.snopes.com for urban legends, www.skepticalscience.com for climate science). Note: How can you tell whether these sites are credible?
Check your own biases
Overall, what's your personal stake in the credibility of this page's content?
How much time do you think you should allocate to verifying its reliability?
(Download the full worksheet)
Another sign of the death of Science in America
08. February 2012 · 5 comments	· Categories: Science Communication
The 12th Annual Weblog (Bloggies) awards shortlists are out. This year, they have merged the old categories of "Best Science weblog" and "Best Computer or Technology Weblog" into a single category, "Best Science or Technology Weblog". And the five candidates on the shortlist? Four technology blogs and one rabid anti-science blog.
Not that this award ever had any track record for being able to distinguish science from pseudo-science; the award is legendary for vote-stuffing. But this year it has really stooped to new depths.


text:
Home > 6 Degrees of Separation > The Big Question
Author: Chuck Barris
From the revolutionary mind of television's legendary mad genius Chuck Barris, a story of money, sex, greed, revenge, murder – and reality TV. An aging game show host hopes to make a comeback with a new concept: answer the quiz show's final question correctly, and win $100 million; get it wrong, and get executed on live TV.
The Most Famous Television Producer in the World is walking down a wintry New York City block, he's accosted by a homeless-looking physically disabled man who, like everyone else, insists he has the formula for the greatest TV show of all time. As it turns out, he does: Contestants will compete for one hundred million dollars. If they win, they're rich. If they lose, they face immediate on-camera execution.
As the Producer begins scheming to steal the idea and revive his fading career, The Big Question introduces the extraordinary characters who will ultimately become the show's contestants – a brilliantly rendered, Dickensian cast that includes the seventy-something Vera Bundle, with a taste for scotch and encyclopedias; Arthur Durch, a convicted sex offender-turned-relationship therapist; Retta Mae Wagons, a sixteen-year-old prostitute with an IQ of 170 and an ex-con-turned-Muslim fundamentalist boyfriend who doesn't appreciate her; Billy Constable, the Kentucky rube who gets off a bus in New York and promptly finds himself in trouble with the Mob; and Father Brady, the devout Catholic priest with a mortifying secret to hide at any cost. As the first episode is broadcast live in front of millions, the audience, the cast, and the crew behind the scenes do the unthinkable: they sit and watch, rapt and glassy-eyed, as the final contestant left on stage meets an unimaginable fate.
To say The Big Question is a novel of greed and immorality would be putting it lightly. But to read this book without laughing out loud at every page would be impossible. This is more than just a funny book, though. With uncanny precision and razor-sharp wit, the inimitable Chuck Barris reveals the inconceivable lengths to which people will go for those priceless fifteen minutes, the fascination we have with the little black box in our homes – and the horrifying deeds done in the name of entertainment.
"From one of the original and most prolific creators of reality television comes the latest, and extremely progressive, idea for a TV show, a game where the pay-off is the ultimate – death! This is an amazing and believable story. Another innovative creation from Barris." — Dick Clark, broadcast icon
"You'll fall in love with Chuck's characters. What a great read." — Dick Ebersol, legendary producer
Chuck Barris (1929-2017) was an American game show creator, producer and host, whose credits include The Dating Game, The Newlywed Game, The Gong Show, and Treasure Hunt. The multi-talented game show creator was also a songwriter, writing songs such as Palisades Park for Freddy "Boom Boom" Cannon as well as music for his game shows.


According to the Census Bureau of the Department of Commerce, total U.S. eCommerce sales for 2009 were estimated at $134.9 billion, an increase from the prior year.* Without a doubt, eCommerce is where the money is headed in today's marketplace—and tomorrow's. Over the next 10 years, online figures are estimated to nearly double.
The Mancor Tech Continuing Education eCommerce Certification Training could help you develop a strong foundation in eCommerce and examines advanced eCommerce concepts. In these eCommerce courses, you will study how Internet marketplaces operate, how to manage the development and maintenance of eCommerce platforms, strategies for online marketing, search engine optimization (SEO), electronic privacy, security and law, and emerging business models and technologies.
Mancor Tech eCommerce Certification Training consists of short courses to be completed within 2 months.
The anticipated rise of online spending by consumers and businesses worldwide could raise the stakes for eCommerce business experts. Understanding every facet of the industry is key to profitable ventures on the Web. Earning your Mancor Tech eCommerce Certification Training could help you succeed in organizations of any size, both domestic and international, spanning a variety of industries.
Yes, I enjoy and learn how to create my own website and ecommerce for others who can pay me good money and working with their ecommerce business, computer sales and service. They were better than any adult, computer class. Becuase they will give you all real like application in ecommerce and website design. Go to Mancor Global Ecommerce at 6139 Mission st Daly City CA 94014 or go online to enroll.


text:
Justice Richard Goldstone: South Africa's Attempt to Withdraw from Int'l Criminal Court is Unconstitutional
by Ryan Goodman
In a shocking surprise to many in the international community, South Africa has announced that is has formally begun the process of withdrawing from the International Criminal Court. Having now submitted an "Instrument of Withdrawal" (full text) to the UN Secretary-General, South Africa became the first nation to take this extraordinary step. Justice Richard Goldstone is one of the most significant figures in the field of international justice and in South Africa. Among other positions, he was Chief Prosecutor of the International Criminal Tribunals for the former Yugoslavia and Rwanda and Justice of the the Constitutional Court of South Africa. I asked him to provide his views for Just Security. His comments follow:
South Africa's notice of withdrawal from the Rome Statute is unfortunate on legal, moral and political grounds. To begin with the legal: the ratification of the Rome Statute in 2002 was followed by the Implementation of the Rome Statute of the International Criminal Court Act, No. 27 of 2002. That Statute, in essence, domesticates the provisions of the Rome Statute, including the core crimes defined in the Statute. It contains far-reaching provisions that oblige relevant departments of state to cooperate with the ICC. The purported withdrawal from the Rome Statute by executive act is quite inconsistent with the Statute and on that ground unconstitutional and unlawful. It is also demeaning of Parliament and robs the people of South Africa of the opportunity to debate this move.
Turning to the moral and political aspects: the Preamble to the 2002 legislation contains the following paragraph:
"the Republic of South Africa is committed to bringing persons who commit such atrocities to justice, either in a court of law of the Republic in terms of its domestic laws where possible, pursuant to its international obligations to do so when the Republic became party to the Rome Statute of the International Criminal Court, or in the event of the national prosecuting authority of the Republic declining or being unable to do so, in line with the principle of complementarity as contemplated in the Statute, in the International Criminal Court, created by and functioning in terms of the said Statute."
South Africa, together with other so-called "like-minded nations" played an important role in encouraging other Southern African states to rectify the Rome Statute. President Nelson Mandela, together with his administration, was a firm supporter of the ICC and more generally on furthering the mechanisms of international justice. This is an unfortunate development that detracts from their inspiring legacy. It will also encourage those States, and specially in Africa, whose leaders have good reason to fear the International Criminal Court, to follow this most unfortunate example.
It is my hope that our courts will yet again have to rescue the executive from acting in conflict with our Constitution – a most unfortunate development.
International Criminal Court,
Co-Editor-in-Chief of Just Security, Anne and Joel Ehrenkranz Professor of Law at New York University School of Law, former Special Counsel to the General Counsel of the Department of Defense (2015-2016). Follow him on Twitter (@rgoodlaw).
Reconsidering the Digitalization of International Criminal Justice
January 19, 2021 by Deyaa Alrwishdi
Nestlé & Cargill v. Doe Series: Remedying the Corporate Accountability Gap at the ICC
January 11, 2021 by Fien Schreurs
ICC Associates Win Temporary Reprieve from Draconian US Sanctions
January 5, 2021 by Andrew Boyle
December 16, 2020 by David Matyas, Payam Akhavan, Sareta Ashraph and Barzan Barzani
Part III: What Kinds of Situations and Cases Should the ICC Pursue? The Independent Expert Review of the ICC and the Question of Aperture
December 2, 2020 by Todd Buchwald
Part II: What Kinds of Situations and Cases Should the ICC Pursue? The Independent Expert Review of the ICC and the Question of Aperture
Nestlé & Cargill v. Doe Series: Toward a Harmonized Test for Complicity of Corporate Officials?
November 30, 2020 by Marina Aksenova
Part I: What Kinds of Situations and Cases Should the ICC Pursue? The Independent Expert Review of the ICC and the Question of Aperture
November 30, 2020 by Todd Buchwald
National Security This Week at the United Nations (Oct 30-Nov 6)
November 6, 2020 by Lyes Jalali
Trump's Executive Order on the ICC is Illegal, Not Just Shameful
October 13, 2020 by Carrie DeCell and Jameel Jaffer
Why We Are Suing President Trump
October 8, 2020 by Diane Marie Amann, Margaret deGuzman, Gabor Rona and Milena Sterio
A Test for the US Posture on the Int'l Criminal Court: "Safe Harbor" Licenses?
September 4, 2020 by Beth Van Schaack


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

/**
 * @constructor
 * @extends {WebInspector.VBox}
 * @implements {WebInspector.TargetManager.Observer}
 */
WebInspector.PromisePane = function()
{
    WebInspector.VBox.call(this);
    this.registerRequiredCSS("promises/promisePane.css");
    this.element.classList.add("promises");

    var toolbar = new WebInspector.Toolbar("", this.element);
    this._recordButton = new WebInspector.ToolbarToggle("", "record-toolbar-item");
    this._recordButton.addEventListener("click", this._recordButtonClicked.bind(this));
    toolbar.appendToolbarItem(this._recordButton);

    var clearButton = new WebInspector.ToolbarButton(WebInspector.UIString("Clear"), "clear-toolbar-item");
    clearButton.addEventListener("click", this._clearButtonClicked.bind(this));
    toolbar.appendToolbarItem(clearButton);
    toolbar.appendSeparator();

    this._promiseStatusFiltersSetting = WebInspector.settings.createSetting("promiseStatusFilters", {});
    this._hideCollectedPromisesSetting = WebInspector.settings.createSetting("hideCollectedPromises", false);

    this._createFilterBar();
    toolbar.appendToolbarItem(this._filterBar.filterButton());

    var garbageCollectButton = new WebInspector.ToolbarButton(WebInspector.UIString("Collect garbage"), "garbage-collect-toolbar-item");
    garbageCollectButton.addEventListener("click", this._garbageCollectButtonClicked, this);
    toolbar.appendToolbarItem(garbageCollectButton);

    toolbar.appendSeparator();
    var asyncCheckbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString("Async"), WebInspector.UIString("Capture async stack traces"), WebInspector.moduleSetting("enableAsyncStackTraces"));
    toolbar.appendToolbarItem(asyncCheckbox);

    this._filterBar.show(this.element);

    this._hiddenByFilterCount = 0;
    this._filterStatusMessageElement = this.element.createChild("div", "promises-filter-status hidden");
    this._filterStatusTextElement = this._filterStatusMessageElement.createChild("span");
    this._filterStatusMessageElement.createTextChild(" ");
    var resetFiltersLink = this._filterStatusMessageElement.createChild("span", "link");
    resetFiltersLink.textContent = WebInspector.UIString("Show all promises.");
    resetFiltersLink.addEventListener("click", this._resetFilters.bind(this), true);

    // FIXME: Make "status" column width fixed to ~16px.
    var columns = [
        { id: "status", weight: 1 },
        { id: "function", title: WebInspector.UIString("Function"), disclosure: true, weight: 10 },
        { id: "created", title: WebInspector.UIString("Created"), weight: 10 },
        { id: "settled", title: WebInspector.UIString("Settled"), weight: 10 },
        { id: "tts", title: WebInspector.UIString("Time to settle"), weight: 10 }
    ];
    this._dataGrid = new WebInspector.ViewportDataGrid(columns, undefined, undefined, undefined, this._onContextMenu.bind(this));
    this._dataGrid.setStickToBottom(true);
    this._dataGrid.asWidget().show(this.element);

    this._linkifier = new WebInspector.Linkifier();

    /** @type {!Map.<!WebInspector.DebuggerModel, !Map.<number, !WebInspector.PromiseDetails>>} */
    this._promiseDetailsByDebuggerModel = new Map();
    /** @type {!Map.<number, !WebInspector.DataGridNode>} */
    this._promiseIdToNode = new Map();

    this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
    this._popoverHelper.setTimeout(250, 250);

    this.element.addEventListener("click", this._hidePopover.bind(this), true);

    WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.PromiseUpdated, this._onPromiseUpdated, this);
    WebInspector.targetManager.addModelListener(WebInspector.ResourceTreeModel, WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._mainFrameNavigated, this);
    WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._targetChanged, this);

    WebInspector.targetManager.observeTargets(this);
}

WebInspector.PromisePane._maxPromiseCount = 10000;

/**
 * @constructor
 * @param {!DebuggerAgent.PromiseDetails} details
 */
WebInspector.PromiseDetails = function(details)
{
    this.id = details.id;
    this.isGarbageCollected = false;
    this.update(details);
}

WebInspector.PromiseDetails.prototype = {
    /**
     * @param {!DebuggerAgent.PromiseDetails} details
     */
    update: function(details)
    {
        if (this.id !== details.id)
            throw new Error("Invalid id, expected " + this.id + " was " + details.id);
        if (details.status)
            this.status = details.status;
        if (details.parentId)
            this.parentId = details.parentId;
        if (details.callFrame)
            this.callFrame = details.callFrame;
        if (details.creationTime)
            this.creationTime = details.creationTime;
        if (details.settlementTime)
            this.settlementTime = details.settlementTime;
        if (details.creationStack)
            this.creationStack = details.creationStack;
        if (details.asyncCreationStack)
            this.asyncCreationStack = details.asyncCreationStack;
        if (details.settlementStack)
            this.settlementStack = details.settlementStack;
        if (details.asyncSettlementStack)
            this.asyncSettlementStack = details.asyncSettlementStack;
    }
}

WebInspector.PromisePane.prototype = {
    _createFilterBar: function()
    {
        this._filterBar = new WebInspector.FilterBar("promisePane");

        this._textFilterUI = new WebInspector.TextFilterUI(true);
        this._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._onFilterChanged, this);
        this._filterBar.addFilter(this._textFilterUI);

        var statuses = [
            { name: "pending", label: WebInspector.UIString("Pending") },
            { name: "resolved", label: WebInspector.UIString("Fulfilled") },
            { name: "rejected", label: WebInspector.UIString("Rejected") }
        ];
        this._statusFilterUI = new WebInspector.NamedBitSetFilterUI(statuses, this._promiseStatusFiltersSetting);
        this._statusFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._onFilterChanged, this);
        this._filterBar.addFilter(this._statusFilterUI);

        var hideCollectedCheckbox = new WebInspector.CheckboxFilterUI("hide-collected-promises", WebInspector.UIString("Hide collected promises"), true, this._hideCollectedPromisesSetting);
        hideCollectedCheckbox.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._onFilterChanged, this);
        this._filterBar.addFilter(hideCollectedCheckbox);
    },

    /**
     * @param {!WebInspector.PromiseDetails} details
     * @param {!WebInspector.DataGridNode} node
     * @return {boolean}
     */
    _shouldBeVisible: function(details, node)
    {
        if (!this._statusFilterUI.accept(details.status))
            return false;

        if (this._hideCollectedPromisesSetting.get() && details.isGarbageCollected)
            return false;

        var regex = this._textFilterUI.regex();
        if (!regex)
            return true;

        var text = node.dataTextForSearch();
        regex.lastIndex = 0;
        return regex.test(text);
    },

    _onFilterChanged: function()
    {
        if (this._filterChangedTimeout)
            clearTimeout(this._filterChangedTimeout);
        this._filterChangedTimeout = setTimeout(onTimerFired.bind(this), 100);

        /**
         * @this {WebInspector.PromisePane}
         */
        function onTimerFired()
        {
            delete this._filterChangedTimeout;
            this._refresh();
        }
    },

    /**
     * @override
     * @return {!Array.<!Element>}
     */
    elementsToRestoreScrollPositionsFor: function()
    {
        return [this._dataGrid.scrollContainer];
    },

    /**
     * @override
     * @param {!WebInspector.Target} target
     */
    targetAdded: function(target)
    {
        var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
        if (debuggerModel && this._enabled)
            this._enablePromiseTracker(debuggerModel);
    },

    /**
     * @override
     * @param {!WebInspector.Target} target
     */
    targetRemoved: function(target)
    {
        var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
        if (!debuggerModel)
            return;
        this._promiseDetailsByDebuggerModel.delete(debuggerModel);
        if (this._debuggerModel === debuggerModel) {
            this._clear();
            delete this._debuggerModel;
        }
    },

    /**
     * @param {!WebInspector.Event} event
     */
    _targetChanged: function(event)
    {
        if (!this._enabled)
            return;
        var target = /** @type {!WebInspector.Target} */ (event.data);
        var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
        if (!debuggerModel || this._debuggerModel === debuggerModel)
            return;
        this._debuggerModel = debuggerModel;
        this._refresh();
    },

    /**
     * @param {!WebInspector.Event} event
     */
    _mainFrameNavigated: function(event)
    {
        var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
        var target = frame.target();
        var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
        if (!debuggerModel)
            return;
        this._promiseDetailsByDebuggerModel.delete(debuggerModel);
        if (this._debuggerModel === debuggerModel)
            this._clear();
    },

    /** @override */
    wasShown: function()
    {
        // Auto enable upon the very first show.
        if (typeof this._enabled === "undefined") {
            var target = WebInspector.context.flavor(WebInspector.Target);
            this._debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
            this._updateRecordingState(true);
        }
        if (this._refreshIsNeeded)
            this._refresh();
    },

    /**
     * @param {!WebInspector.DebuggerModel} debuggerModel
     */
    _enablePromiseTracker: function(debuggerModel)
    {
        debuggerModel.enablePromiseTracker(true);
    },

    /**
     * @param {!WebInspector.DebuggerModel} debuggerModel
     */
    _disablePromiseTracker: function(debuggerModel)
    {
        debuggerModel.disablePromiseTracker();
    },

    /** @override */
    willHide: function()
    {
        this._hidePopover();
    },

    _hidePopover: function()
    {
        this._popoverHelper.hidePopover();
    },

    _recordButtonClicked: function()
    {
        this._updateRecordingState(!this._recordButton.toggled());
    },

    /**
     * @param {boolean} enabled
     */
    _updateRecordingState: function(enabled)
    {
        this._enabled = enabled;
        this._recordButton.setToggled(this._enabled);
        this._recordButton.setTitle(this._enabled ? WebInspector.UIString("Stop Recording Promises Log") : WebInspector.UIString("Record Promises Log"));
        WebInspector.DebuggerModel.instances().forEach(this._enabled ? this._enablePromiseTracker : this._disablePromiseTracker, this);
    },

    _clearButtonClicked: function()
    {
        this._clear();
        if (this._debuggerModel)
            this._promiseDetailsByDebuggerModel.delete(this._debuggerModel);
    },

    _resetFilters: function()
    {
        this._hideCollectedPromisesSetting.set(false);
        this._promiseStatusFiltersSetting.set({});
        this._textFilterUI.setValue("");
    },

    _updateFilterStatus: function()
    {
        this._filterStatusTextElement.textContent = WebInspector.UIString(this._hiddenByFilterCount === 1 ? "%d promise is hidden by filters." : "%d promises are hidden by filters.", this._hiddenByFilterCount);
        this._filterStatusMessageElement.classList.toggle("hidden", !this._hiddenByFilterCount);
    },

    _garbageCollectButtonClicked: function()
    {
        var targets = WebInspector.targetManager.targets();
        for (var i = 0; i < targets.length; ++i)
            targets[i].heapProfilerAgent().collectGarbage();
    },

    /**
     * @param {!WebInspector.DebuggerModel} debuggerModel
     * @return {boolean}
     */
    _truncateLogIfNeeded: function(debuggerModel)
    {
        var promiseIdToDetails = this._promiseDetailsByDebuggerModel.get(debuggerModel);
        if (!promiseIdToDetails || promiseIdToDetails.size <= WebInspector.PromisePane._maxPromiseCount)
            return false;

        var elementsToTruncate = WebInspector.PromisePane._maxPromiseCount / 10;
        var sortedDetails = promiseIdToDetails.valuesArray().sort(compare);
        for (var i = 0; i < elementsToTruncate; ++i)
            promiseIdToDetails.delete(sortedDetails[i].id);
        return true;

        /**
         * @param {!WebInspector.PromiseDetails} x
         * @param {!WebInspector.PromiseDetails} y
         * @return {number}
         */
        function compare(x, y)
        {
            var t1 = x.creationTime || 0;
            var t2 = y.creationTime || 0;
            return t1 - t2 || x.id - y.id;
        }
    },

    /**
     * @param {!WebInspector.Event} event
     */
    _onPromiseUpdated: function(event)
    {
        var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target);
        var eventType = /** @type {string} */ (event.data.eventType);
        var protocolDetails = /** @type {!DebuggerAgent.PromiseDetails} */ (event.data.promise);

        var promiseIdToDetails = this._promiseDetailsByDebuggerModel.get(debuggerModel);
        if (!promiseIdToDetails) {
            promiseIdToDetails = new Map();
            this._promiseDetailsByDebuggerModel.set(debuggerModel, promiseIdToDetails);
        }

        var details = promiseIdToDetails.get(protocolDetails.id);
        if (!details && eventType === "gc")
            return;

        var truncated = this._truncateLogIfNeeded(debuggerModel);
        if (details)
            details.update(protocolDetails)
        else
            details = new WebInspector.PromiseDetails(protocolDetails);
        promiseIdToDetails.set(details.id, details);

        if (eventType === "gc")
            details.isGarbageCollected = true;

        if (debuggerModel === this._debuggerModel) {
            if (!this.isShowing()) {
                this._refreshIsNeeded = true;
                return;
            }
            if (truncated || this._refreshIsNeeded) {
                this._refresh();
                return;
            }

            var node = /** @type {!WebInspector.DataGridNode} */ (this._promiseIdToNode.get(details.id));
            var wasVisible = !node || !node._isPromiseHidden;

            // Check for the fast path on GC events.
            if (eventType === "gc" && node && node.parent && !this._hideCollectedPromisesSetting.get())
                node.update(details);
            else
                this._attachDataGridNode(details);

            var isVisible = this._shouldBeVisible(details, /** @type {!WebInspector.DataGridNode} */(this._promiseIdToNode.get(details.id)));
            if (wasVisible !== isVisible) {
                this._hiddenByFilterCount += wasVisible ? 1 : -1;
                this._updateFilterStatus();
            }
        }
    },

    /**
     * @param {!WebInspector.PromiseDetails} details
     */
    _attachDataGridNode: function(details)
    {
        var node = this._createDataGridNode(details);
        var parentNode = this._findVisibleParentNodeDetails(details);
        if (parentNode !== node.parent)
            parentNode.appendChild(node);
        if (this._shouldBeVisible(details, node))
            parentNode.expanded = true;
        else
            node.remove();
    },

    /**
     * @param {!WebInspector.PromiseDetails} details
     * @return {!WebInspector.DataGridNode}
     */
    _findVisibleParentNodeDetails: function(details)
    {
        var promiseIdToDetails = /** @type {!Map.<number, !WebInspector.PromiseDetails>} */ (this._promiseDetailsByDebuggerModel.get(this._debuggerModel));
        var currentDetails = details;
        while (currentDetails) {
            var parentId = currentDetails.parentId;
            if (typeof parentId !== "number")
                break;
            currentDetails = promiseIdToDetails.get(parentId);
            if (!currentDetails)
                break;
            var node = this._promiseIdToNode.get(currentDetails.id);
            if (node && this._shouldBeVisible(currentDetails, node))
                return node;
        }
        return this._dataGrid.rootNode();
    },

    /**
     * @param {!WebInspector.PromiseDetails} details
     * @return {!WebInspector.DataGridNode}
     */
    _createDataGridNode: function(details)
    {
        var node = this._promiseIdToNode.get(details.id);
        if (!node) {
            node = new WebInspector.PromiseDataGridNode(details, this._debuggerModel, this._linkifier, this._dataGrid);
            this._promiseIdToNode.set(details.id, node);
        } else {
            node.update(details);
        }
        return node;
    },

    _refresh: function()
    {
        delete this._refreshIsNeeded;
        this._clear();
        if (!this._debuggerModel)
            return;
        if (!this._promiseDetailsByDebuggerModel.has(this._debuggerModel))
            return;

        var rootNode = this._dataGrid.rootNode();
        var promiseIdToDetails = /** @type {!Map.<number, !WebInspector.PromiseDetails>} */ (this._promiseDetailsByDebuggerModel.get(this._debuggerModel));

        var nodesToInsert = { __proto__: null };
        // The for..of loop iterates in insertion order.
        for (var pair of promiseIdToDetails) {
            var id = /** @type {number} */ (pair[0]);
            var details = /** @type {!WebInspector.PromiseDetails} */ (pair[1]);
            var node = this._createDataGridNode(details);
            node._isPromiseHidden = !this._shouldBeVisible(details, node);
            if (node._isPromiseHidden) {
                ++this._hiddenByFilterCount;
                continue;
            }
            nodesToInsert[id] = { details: details, node: node };
        }

        for (var id in nodesToInsert) {
            var node = nodesToInsert[id].node;
            var details = nodesToInsert[id].details;
            this._findVisibleParentNodeDetails(details).appendChild(node);
        }

        for (var id in nodesToInsert) {
            var node = nodesToInsert[id].node;
            var details = nodesToInsert[id].details;
            node.expanded = true;
        }

        this._updateFilterStatus();
    },

    _clear: function()
    {
        this._hiddenByFilterCount = 0;
        this._updateFilterStatus();
        this._promiseIdToNode.clear();
        this._hidePopover();
        this._dataGrid.rootNode().removeChildren();
        this._linkifier.reset();
    },

    /**
     * @param {!WebInspector.ContextMenu} contextMenu
     * @param {!WebInspector.DataGridNode} node
     */
    _onContextMenu: function(contextMenu, node)
    {
        var debuggerModel = this._debuggerModel;
        if (!debuggerModel)
            return;

        var promiseId = node.promiseId();
        if (this._promiseDetailsByDebuggerModel.has(debuggerModel)) {
            var details = this._promiseDetailsByDebuggerModel.get(debuggerModel).get(promiseId);
            if (details.isGarbageCollected)
                return;
        }

        contextMenu.appendItem(WebInspector.UIString.capitalize("Show in ^console"), showPromiseInConsole);
        contextMenu.show();

        function showPromiseInConsole()
        {
            debuggerModel.getPromiseById(promiseId, "console", didGetPromiseById);
        }

        /**
         * @param {?RuntimeAgent.RemoteObject} promise
         */
        function didGetPromiseById(promise)
        {
            if (!promise)
                return;
            var object = debuggerModel.target().runtimeModel.createRemoteObject(promise);
            object.callFunction(dumpIntoConsole);
            object.release();
            /**
             * @suppressReceiverCheck
             * @this {Object}
             */
            function dumpIntoConsole()
            {
                console.log(this);
            }
            WebInspector.console.show();
        }
    },

    /**
     * @param {!Element} element
     * @param {!Event} event
     * @return {!Element|!AnchorBox|undefined}
     */
    _getPopoverAnchor: function(element, event)
    {
        if (!this._debuggerModel || !this._promiseDetailsByDebuggerModel.has(this._debuggerModel))
            return undefined;
        var node = this._dataGrid.dataGridNodeFromNode(element);
        if (!node)
            return undefined;
        var details = this._promiseDetailsByDebuggerModel.get(this._debuggerModel).get(node.promiseId());
        if (!details)
            return undefined;
        var anchor = element.enclosingNodeOrSelfWithClass("created-column");
        if (anchor)
            return details.creationStack ? anchor : undefined;
        anchor = element.enclosingNodeOrSelfWithClass("settled-column");
        return (anchor && details.settlementStack) ? anchor : undefined;
    },

    /**
     * @param {!Element} anchor
     * @param {!WebInspector.Popover} popover
     */
    _showPopover: function(anchor, popover)
    {
        var node = this._dataGrid.dataGridNodeFromNode(anchor);
        var details = this._promiseDetailsByDebuggerModel.get(this._debuggerModel).get(node.promiseId());

        var stackTrace;
        var asyncStackTrace;
        if (anchor.classList.contains("created-column")) {
            stackTrace = details.creationStack;
            asyncStackTrace = details.asyncCreationStack;
        } else {
            stackTrace = details.settlementStack;
            asyncStackTrace = details.asyncSettlementStack;
        }

        var content = WebInspector.DOMPresentationUtils.buildStackTracePreviewContents(this._debuggerModel.target(), this._linkifier, stackTrace, asyncStackTrace);
        popover.setCanShrink(true);
        popover.showForAnchor(content, anchor);
    },

    __proto__: WebInspector.VBox.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ViewportDataGridNode}
 * @param {!WebInspector.PromiseDetails} details
 * @param {!WebInspector.DebuggerModel} debuggerModel
 * @param {!WebInspector.Linkifier} linkifier
 * @param {!WebInspector.ViewportDataGrid} dataGrid
 */
WebInspector.PromiseDataGridNode = function(details, debuggerModel, linkifier, dataGrid)
{
    WebInspector.ViewportDataGridNode.call(this, {});
    this._details = details;
    this._debuggerModel = debuggerModel;
    this._linkifier = linkifier;
    /** @type {!Array.<!Element>} */
    this._linkifiedAnchors = [];
    this.dataGrid = dataGrid;
}

WebInspector.PromiseDataGridNode.prototype = {
    _disposeAnchors: function()
    {
        for (var i = 0; i < this._linkifiedAnchors.length; ++i)
            this._linkifier.disposeAnchor(this._debuggerModel.target(), this._linkifiedAnchors[i]);
        this._linkifiedAnchors = [];
    },

    /**
     * @param {!WebInspector.PromiseDetails} details
     */
    update: function(details)
    {
        this._disposeAnchors();
        this._details = details;
        this.refresh();
    },

    /**
     * @override
     */
    wasDetached: function()
    {
        this._disposeAnchors();
    },

    /**
     * @override
     * @return {number}
     */
    nodeSelfHeight: function()
    {
        return 24;
    },

    /**
     * @return {number}
     */
    promiseId: function()
    {
        return this._details.id;
    },

    /**
     * @override
     */
    createCells: function()
    {
        this._element.classList.toggle("promise-gc", !!this._details.isGarbageCollected);
        WebInspector.ViewportDataGridNode.prototype.createCells.call(this);
    },

    /**
     * @param {!Element} cell
     * @param {?ConsoleAgent.CallFrame=} callFrame
     */
    _appendCallFrameAnchor: function(cell, callFrame)
    {
        if (!callFrame)
            return;
        var anchor = this._linkifier.linkifyConsoleCallFrame(this._debuggerModel.target(), callFrame);
        this._linkifiedAnchors.push(anchor);
        cell.appendChild(anchor);
    },

    /**
     * @override
     * @param {string} columnIdentifier
     * @return {!Element}
     */
    createCell: function(columnIdentifier)
    {
        var cell = this.createTD(columnIdentifier);
        var details = this._details;

        switch (columnIdentifier) {
        case "status":
            var title = "";
            switch (details.status) {
            case "pending":
                title = WebInspector.UIString("Pending");
                break;
            case "resolved":
                title = WebInspector.UIString("Fulfilled");
                break;
            case "rejected":
                title = WebInspector.UIString("Rejected");
                break;
            }
            if (details.isGarbageCollected)
                title += " " + WebInspector.UIString("(garbage collected)");
            cell.createChild("div", "status " + details.status).title = title;
            break;

        case "function":
            cell.createTextChild(WebInspector.beautifyFunctionName(details.callFrame ? details.callFrame.functionName : ""));
            break;

        case "created":
            this._appendCallFrameAnchor(cell, details.callFrame);
            break;

        case "settled":
            this._appendCallFrameAnchor(cell, details.settlementStack ? details.settlementStack[0] : null);
            break;

        case "tts":
            cell.createTextChild(this._ttsCellText());
            break;
        }

        return cell;
    },

    /**
     * @return {string}
     */
    _ttsCellText: function()
    {
        var details = this._details;
        if (details.creationTime && details.settlementTime && details.settlementTime >= details.creationTime)
            return Number.millisToString(details.settlementTime - details.creationTime);
        return "";
    },

    /**
     * @param {?ConsoleAgent.CallFrame=} callFrame
     * @return {string}
     */
    _callFrameAnchorTextForSearch: function(callFrame)
    {
        if (!callFrame)
            return "";
        var script = callFrame.scriptId && this._debuggerModel ? this._debuggerModel.scriptForId(callFrame.scriptId) : null;
        var sourceURL = script ? script.sourceURL : callFrame.url;
        var lineNumber = callFrame.lineNumber || 0;
        return WebInspector.displayNameForURL(sourceURL) + ":" + lineNumber;
    },

    /**
     * @return {string}
     */
    dataTextForSearch: function()
    {
        var details = this._details;
        var texts = [
            WebInspector.beautifyFunctionName(details.callFrame ? details.callFrame.functionName : ""),
            this._callFrameAnchorTextForSearch(details.callFrame),
            this._callFrameAnchorTextForSearch(details.settlementStack ? details.settlementStack[0] : null),
            this._ttsCellText().replace(/\u2009/g, " ") // \u2009 is a thin space.
        ];
        return texts.join(" ");
    },

    __proto__: WebInspector.ViewportDataGridNode.prototype
}

redpajama_set_name: RedPajamaGithub


text:
Employment tribunals need radical overhaul, say lawyers
by Richard Fox 7 Jun 2016
by Richard Fox 7 Jun 2016 REX/Andy Paradise
REX/Andy Paradise
The Employment Lawyers Association's (ELA) response to the call for a single employment law court argues for a radical overhaul of employment tribunal services. The ELA's Richard Fox looks at how costs, technology and alternative dispute resolution could be reformed. A hare was set running two years ago when the outgoing president of employment tribunals in England & Wales, David Latham, proposed the creation of a single employment court to hear all employment disputes.
More on employment tribunal procedure
Tribunal procedures and penalties How to get the most out of early conciliation How to respond to an employment tribunal claim
This was at a time when the effect of the introduction of tribunal fees in July 2013 was beginning to be felt, with around three-quarters of all employment tribunal claims effectively disappearing from the system. There was also concern that there was some illogicality in the division of cases between the two different types of court. For example, breach of contract claims are allowed only in the employment tribunal at the end of the employment relationship, and even then up to a limit of £25,000. Such claims may be brought without limit in the High Court or county court. Retiring Judge Latham envisaged one single court that would hear all employment claims and manage all the stages of the litigation process, including offering an in-house alternative dispute resolution (ADR) service. The ELA surveyed its members in April 2015 and some 64% believed a single court would be an improvement on the current system. It then set up a working party to look at the issue in detail, and has recently published its report. It concluded that a debate arou
Richard Fox
Richard M Fox is vice president of the Employment Lawyers Association and chair of its Single Employment Court Working Party. He is also head of employment at Kingsley Napley.
Disability: NHS worker's claim over blood phobia rejected
EU referendum: no excuse to put off data protection preparations
Tribunal claims citing health and safety concerns up...
Employee who blew whistle on Covid safety was...
Flexible working requests behind growing number of tribunal...
Cleaner who attended work with Covid-19 was unfairly...
Former British Council official wins unfair dismissal claim
University to pay £108,000 in compensation for failing...
Dementia sufferer wins age and disability case against...
Christian nurse dismissed for wearing cross necklace wins...
Porter who lost pay while awaiting result of...
Worker who refused to go to work because...


Mrs. Brown is one of many related services staff members at Round Lake Middle School. Together the department works to support the social and emotional learning of the students. Mrs. Brown graduated with her bachelor of arts degree in social work from Bethel University, in Minnesota. She then went on to earn her masters degree in social work, from UIC, Jane Addams College of Social Work. She joined the Round Lake Area School District in 2000, where she has remained ever since. In her free time she enjoys traveling, exercising, baking, and cooking, all with her husband and 2 children.


Anhangueridae is a group of pterosaurs within the suborder Pterodactyloidea. They were among the last pterosaurs to possess teeth. A recent study discussing the group considered the Anhangueridae to be typified by a premaxillary crest and a lateral expansion in the distal rostrum. The same study presented a cladistic analysis, for which an "agreement subtree" was calculated. The Anhangueridae was found to be sister taxon to the large crested Tropeognathus.
^ Campos D. A.; Kellner Alexander W. A. (1985). "Panorama of the flying reptiles study in Brazil and South America". Anais da Academia Brasileira de Ciências. 57: 453–466.
^ Rodrigues, Taissa; Kellner, Alexander W. A. (2013). "Taxonomic review of the Ornithocheirus complex (Pterosauria) from the Cretaceous of England". ZooKeys. 308: 1–112. doi:10.3897/zookeys.308.5559. PMC 3689139. PMID 23794925.


text:
I Tomato sono stati un gruppo musicale pop rock italiano, formatosi nel 1979.

Storia
Formato nel 1979 da Giorgio Vanni, Paolo Costa e Claudio D'Onofrio, il gruppo viene notato nel 1982 da Roberto Colombo.

Nel 1983 producono, sotto lo pseudonimo "Iudy", il disco The Island of the Sun, che diventa subito uno dei brani più ballati in discoteca e trasmessi dalle stazioni radio. Nel 1984 hanno lavorato all'album Bandido di Miguel Bosé, poi con Den Harrow, Taffy e Ivan.

Nel 1985 incidono finalmente il loro primo singolo: Tam tam/Questo è un po' di noi, con l'ex batterista dei Simple Minds, Mike Ogletree e il tastierista Marco Tazzi.

Passano ancora anni prima che la band riesca a trovare una casa discografica che creda appieno nella sua musica, che è un miscuglio di pop inglese, musica black statunitense e melodie italiane. Nel 1991, dopo aver lavorato con artisti come Mango, Eugenio Finardi, Cristiano De André, Roberto Vecchioni, Pierangelo Bertoli, Tazenda, il gruppo riesce finalmente a incidere il suo primo album Tomato, prodotto da Mauro Paoluzzi e Angelo Carrara. Con il brano Nasce il sole, tratto dall'album, partecipano al Festivalbar 1991.

Nel 1992 partecipano al Festival di Sanremo, nella sezione Novità, con il brano Sai cosa sento per te, che non raggiunge la finale, pubblicato nel singolo Sai cosa sento per te/Musica nei bar.

Dopo l'esperienza sanremese il gruppo si scioglie e ognuno dei tre intraprende una carriera parallela: Giorgio Vanni, soprattutto dopo aver esordito nel 1994 da solista con l'album Grande cuore, raggiunge la popolarità grazie alle sigle di cartoni animati da lui cantate e composte insieme a Max Longhi, mentre Paolo Costa è uno dei richiesti bassisti italiani.

Formazione
 Giorgio Vanni - voce, chitarra acustica
 Paolo Costa - basso
 Claudio D'Onofrio - chitarra acustica

Discografia

Album in studio
1992 - Tomato (WEA Italiana 9031 77102-1)

Singoli
1985 - Tam tam/Questo è un po' di noi (Compagnia Generale del Disco 10633)
1992 - Sai cosa sento per te/Musica nei bar (WEA Italiana 9031 77094-7)

Collegamenti esterni

Gruppi e musicisti della Lombardia

redpajama_set_name: RedPajamaWikipedia


You may have found the perfect blog site where you can submit your guest post but are you ready to make the perfect guest post on a blog?
Getting positive results from online marketing strategies through guest posting has become quite revealing among online marketers. With proper guest posting it can help businesses to grow its online presence and popularity on the web.
Guest blogging makes it easier for online marketers to widen their market reach, build their network, to propagate brand awareness, to provide valuable information about their business and to drive relevant traffic to their website that helps to boost their search engine ranking. Behind the success of guest posting are these golden rules that every guest blogger should keep in mind to ensure complete success in their online marketing campaigns when making a perfect guest post on a blog.
Every guest posting site has their own terms and conditions that you need to understand prior to submitting your guest post. It is crucial to read the rules and note the specific instructions that you should do and not to do when writing your guest post. By being aware of the rules and guidelines of writing a guest blog you are able to meet their standards and requirements better with a high chance of your guest post approval.
Among the things that you need to research is whether the theme of the guest posting site is suited to your niche. For example you might be submitting to a guest blogging platform that caters to the technology market while your niche involves health topics. One of the reasons why bloggers gets rejected on a guest posting site is because they are submitting to a blog site that does not match their niche.
In order to maximize the exposure of your guest blog post it is essential to submit on guest posting sites with a high page rank and quality of traffic through the search engine. There are tools that can help you evaluate website's traffic flow and page rank of a website.
Owing to the existence of several websites that accepts guest posts, it is best to short list your options in order to concentrate on guest blogging only to the top ranking guest posting site. In this aspect, your target goal is to yield better results by concentrating on the quality and not on the quantity of the guest posting sites to submit your guest posts.
Keep the great ideas flowing otherwise you end up writing poor content. Guest posting sites, especially those that are already top ranking on the search engine are very quick in rejecting poorly written articles. If you want to reduce the risk of rejection, you should take more effort in writing very high quality and informative content that will make your guest post highly relevant to the site's target readers. For example, if you want to write about a particular topic make sure not to write general information that your readers probably already know. Take a different direction by researching more and provide statistics, research studies and other pertinent information that will support the facts on your guest post content.
How you place the links on your guest post will significantly affect the manner of referring your website to the search engine. Most of the time bloggers usually use the same anchor text when embedding their links to their guest post. It is best to avoid using the same target anchor text within your blog post content and using the same anchor text on your author biography.
Your link attribute should consist of one with an anchor text that is relevant and meaningful within the content in order to help the search engine find the relevance of your links and anchor texts. When you are adding link to your guest post from other sites, make sure that the sites that you link to must be within the authority of their niche with content that your readers will find interested of reading.
Links can help boost your guest post's authority and reputation which benefits your brand awareness campaigns. Guest blogging is all about reaching to your audience and using links embedded on anchor texts that are within the context of your content is essential to give some sense to your links.
Original and well researched content.
Follows the blog's target tone when writing content on their site.
Content is fresh, factual and updated.
Content is free from grammatical errors and flaws.
Content addresses the blog site's niche or theme.
Guest posting is all about reaching and connecting with people. In order to maximize the exposure of your guest post it is essential to promote the same through social sharing. The power of the social media can harness better brand awareness and relevance of your guest post to the search engine. The more people share and read your guest posts the better traffic your website gains on the search results. Consequently, you need to exert the extra effort in promoting your guest post for maximum exposure by sharing your content on various social media channels.


It was a busy year for WFPL Health Reporter Lisa Gillespie. Here are some of her favorite stories of 2018.
A new poll from the Foundation for a Healthy Kentucky says support across the state for the health reform law has increased dramatically since 2010.
Louisville Metro government is the latest employer to experiment with the idea that providing employees with fresh vegetables might improve worker health.
This Santa is no less jolly, just more reserved. He moves a little slower and lets the child take the lead about interacting.
About half of the people who didn't get vaccinated said one reason was because they thought either the flu shot could make them sick or it wasn't effective.
For now, the ruling from a federal judge doesn't change any ongoing ACA programs, including Medicaid expansion or coverage for pre-existing conditions.
The ruling by a Texas judge invalidates what's commonly referred to as Obamacare nationwide, and casts into doubt the survival of the law.
Kentucky health leaders gathered Monday at a statewide summit called for state officials to ban flavors in e-cigarettes and vape pens to curb teen use.


text:
Q: FSharp.Data.SqlClient on windows with dotnet core reports type 'SqlCommand' unavailable I'm trying to use FSharp.Data.SqlClient on Windows
c:\...> dotnet new console -lang f# -o test5
c:\...> cd test5

Now add <Import Project="fsc.props" /> to test5.fsproj and add fsc.props from https://raw.githubusercontent.com/fsprojects/FSharp.TypeProviders.SDK/master/fsc.props. Then
c:\...\test5> dotnet add package FSharp.Data.SqlClient

And edit Program.fs as follows:
open FSharp.Data
open FSharp.Data.SqlClient

[<Literal>]
let connectionString =
    @"Data Source=.\SQL14X64;Initial Catalog=test;User=sa;Password=***"

[<EntryPoint>]
let main argv =
    use cmd = new SqlCommandProvider<"
            SELECT 1
            " , connectionString>(connectionString)
    0

Trying to compile it:
c:\...\test5> dotnet build

Have error:
 The type 'SqlCommand' is required here and is unavailable.
 You must add a reference to assembly 'System.Data.SqlClient, Version=0.0.0.0, ...

Ok, installing System.Data.SqlClient:
c:\...\test5> dotnet add package System.Data.SqlClient

Have error:
The type 'SqlCommand' is required here and is unavailable.
You must add a reference to assembly 'System.Data.SqlClient, Version=4.2.0.1, ...

O-key, let install 4.2.0.1:
c:\...\test5> dotnet remove package System.Data.SqlClient
c:\...\test5> dotnet add package System.Data.SqlClient --version 4.2.0.1
c:\...\test5> dotnet build

Have error:
The type 'SqlCommand' is required here and is unavailable.
You must add a reference to assembly 'System.Data.SqlClient, Version=4.1.0.0, ...

Hm... Replace with 4.1.0.0:
c:\...\test5> dotnet remove package System.Data.SqlClient
c:\...\test5> dotnet add package System.Data.SqlClient --version 4.1.0.0
c:\...\test5> dotnet build

Have same error again:
The type 'SqlCommand' is required here and is unavailable.
You must add a reference to assembly 'System.Data.SqlClient, Version=4.1.0.0, ...

Cannot really move any further with it.
OS: Windows, .NET Core: 2.1.2

A: I'm sure others are still struggling with this from time to time, so here is what I had to do in order to get the FSharp.Data.SqlClient running in a .NET Core project on a Mac (yes, it does work, beautifully!).
I believe most of it will apply to Windows as well, except that you won't need Mono.
At compile time you need full .NET framework, so you have to install Mono if you are running Linux or Mac. The project still compiles to clean .NET Core.
You need fsc.props in your project folder (place it in the same folder as your project file). Fsc.props contains the path to the tool to use at compile time. In my fsc.props file the relevant path was described as follows (I can't remember whether or not I had to edit it to get things running):
<PropertyGroup Condition="'$(IsOSX)' == 'true'  AND Exists('/Library/Frameworks/Mono.framework/Versions/Current/Commands/fsharpc')">
          <FscToolPath>/Library/Frameworks/Mono.framework/Versions/Current/Commands</FscToolPath>
          <FscToolExe>fsharpc</FscToolExe>
</PropertyGroup>

Next you need to reference fsc.props in your .fsproj file, and DisableAutoSetFscCompilerPath:
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="fsc.props" />

    <PropertyGroup>
        <DisableAutoSetFscCompilerPath>true</DisableAutoSetFscCompilerPath>
        <DotNetFscToolPath></DotNetFscToolPath>
        <DotnetFscCompilerPath></DotnetFscCompilerPath>
    </PropertyGroup>

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <Compile Include="mySQLCode.fs" />
        <Compile Include="Program.fs" />
    </ItemGroup>

    <ItemGroup>
      <PackageReference Include="FSharp.Data" Version="3.3.3" />
      <PackageReference Include="FSharp.Data.SqlClient" Version="2.0.6" />
    </ItemGroup>

</Project>

The relevant lines are lines 2 through 8.
Of course you also have to get the Fsharp.Data and FSharp.Data.SqlClient using your favourite package manager, which will add the PackageReference lines to the project.
Happy coding
Roland

redpajama_set_name: RedPajamaStackExchange


Immediately after spending years of enjoying Basketball and testing dozens of goal systems, we've found the ideal in ground basketball hoops. Really serious Players enjoy the H-Frame In-Ground Basketball Target Program from Spalding and Lifetime 71525 Height Adjustable Basketball Hoop is 1 of the most favorite options of budget consumers. Both of these have height adjustment facility along with other cool characteristics and from breathtaking basketball match to afternoon sweat secreting practice, the overall performance of the very first one particular is fairly fantastic. It has 6″ Square pole which ensures the maximum stability. The other hoops we looked at could have excelled in two or three options, but did poorly in other individuals. Really the initial a single is the best one particular to hold you warm till the evening. Basketball hoops always ought to be steady and that's why we favor in ground hoops more than transportable ones and the H-Frame In-Ground Basketball Objective Technique meets this criterion to the greatest. Most of the basketball hoop companies emphasize functions that make sure the maximum satisfaction of the fitness enthusiasts. Here, we can't but represent the term FITNESS mainly because we've by no means seen any basketball player who is overweight or physically unfit.
For even a newbie, it is not a dilemma to throw a ball by means of the ring right after practicing 100 instances. But, can you imagine the excitement of that particular person following that pretty first productive throw of the day? Can you control the emotion of your close friends, when they earn biggest points by producing a results throw? Yes, I just beg you to recognize that basketball is complete of excitement and excitation.
You may choose wall mount if your game room is extremely modest. But, to delight in the taste of playing basketball to the fullest, there is absolutely nothing but an in ground basketball hoop. A transportable one is okay only if you reside in a rented apartment. About me, I didn't get a single explanation of purchasing something else rather than an in ground one particular although there is a huge backyard in my residence. So, no one particular is fittest to all. But, never worry! From our pretty brief list, you will get the finest match for you. Just hold reading if you are seeking for an in ground basketball system for your group or family members.
It is very complicated to keep ourselves away from hanging right after a effective dunking. So, stability of a basketball system is the important. You will not be capable to do this if your's one particular is transportable. To delight in hanging immediately after generating biggest points, you have to have to have an in ground target hoop. To me, there should not be any limitation in sports. There also shouldn't have any restriction of expressing inner feelings. But, how will you enjoy this freedom if your basketball pole cannot bide your weight. I assume, you are now caring adequate about the Key and that is stability.
The 1 point where the H-Frame In-Ground Basketball Aim Program falls a bit brief and that is its height adjus- tability. Yes, it has the height adjustment function, but it is only from 7′ to 10′. To me, it would be far better if it is 5′ to 10′ so that my sweet Jessie also would be in a position to hang up on its ring. She is now only 7 years old. If you want to get pleasure from basketball with your youngsters, it may perhaps not then be the finest decision for you.
But, the reality is that they might want to see their kiddies in the NBA , they themselves may possibly like to practice it with a view to burning fat, or even they may count on a college basketball championship trophy from their son or daughter. So, they want a reputable basketball hoop technique, even though they don't know which will be the best one and from our About Us web page, you will come to know that the aim of our endless work is to enable these customers to choose possibly the ideal sporting goods according to their expectation. So, if you need a small a lot more info and instruction to invest in your desired basketball hoop, then feel free of charge to scroll down your mouse.
We've listened to them, talked to them and not only this, but also we played fairly matches with them. I checked out 50 of those 57 different basketball systems with my personal hands. The process was really incredibly enjoyable. From the experiment, I discovered that individuals really like to share their Sporting Goods with other folks. They like to tell stories relating to their recreational gear. Didn't you see any overweight people? They do a lot of items to burn their fat and as time goes by, they come to be bored of carrying out boring workouts. So, they begin searching for a thing new and you know, playing basketball is incredibly helpful as nicely as pretty interesting to burn additional fat. It also aids us to stay in a wonderful shape.
Numerous inground basketball hoops can be adjusted depending on current playing wants. Just use a single hand to make uncomplicated adjustments to differ the height, generating modifications among games a breeze. There are total 10 hoops in our quick list, but we did run our test approach over 50. It was a long time consuming procedure. We've spend about to 200 minutes on each and every system. We did make a list of our pals who have a basketball hoop There have been around 500 pals in our very first list. We made a phone call to all these buddies and discussed about our intention.
The 1st and foremost aim of our effort is to attain the fitness and stay in a excellent shape. From our life long expertise, it has been established that just after practicing this sport for six months, it is impossible to have undesirable fat to our physique. Ideal children trampoline also does the exact same to your young children. Even so, to ensure the stability, the pole of this basketball system has been designed in square shape and made of steel.


Gabrielle Bonheur Chanel was born in France on 19 August 1883 to impoverished parents but she would overcome her tough early years to become the world's most famous fashion designer, Coco Chanel. After flirting with a brief career as a singer where she adopted the name Coco, Chanel turned her attention to hat making which she was able to pursue after becoming the mistress of the textile heir, Etienne Balsan.
It was through Balsan that Coco would eventually meet the love of her life, Arthur 'Boy' Capel, the man who funded her first shop in Paris. Thanks to the connections she made through Balsan and Capel, Coco's hat shop proved to be a great success and it wasn't long before she was expanding into clothes. Tired of the restrictions placed on the female attire, Coco eschewed corsets and frills in favour of simple clothes in flexible materials which became a sensation. Highly innovative, Coco always seemed to know what women wanted before they knew it themselves and her fame grew despite still being shunned by the higher echelons of society.
The Chanel brand would go on to become one of the most famous in the world, largely helped by sales of the signature scent, Chanel No.5, which would lead to Coco's tempestuous relationship with Pierre and Paul Wertheimer who agreed to distribute the scent for her. While Coco's professional life went from strength to strength, her personal life was in a far more precarious state with a string of unsuitable lovers. Despite her fame, Coco was destined to die alone at the Ritz Hotel where she lived.
Mademoiselle Chanel is a fictional account of the life of this famous woman, starting with her humble childhood and ending with her triumphant return to Paris in 1954. More or less everything about Coco's life is covered, including the years she spent at the Aubazine convent which would have a major influence on her designs, particularly in regard to the number five which was represented symbolically throughout the convent. Coco chose to release her collections on the fifth day of the fifth month, although this is not mentioned in the book.
The character of Coco is convincingly portrayed and we are privy to the ambitious side of the woman who had a steely determination to succeed, as well as the more vulnerable side when it came to her family and her lovers. At times Coco is a ruthless taskmaster but that trait was essential for her to succeed in a male dominated world and her vision for the future of ladies fashion was extraordinary. Coco is a complex figure, a woman who yearns for love, yet one not willing to compromise her independence, which may be why she ended up in liaisons with men who were out of her reach.
While I believe Gortner did manage to convey the complexities of Coco's personality adequately enough, I do think he glossed over her more unsavoury traits, particularly in regard to her actions during the Second World War. According to Gortner's take on things, Coco's association with the Germans was necessary to save the life of her nephew, Andre, who was being held by the Germans, and this is used as an excuse for much of her subsequent behaviour. If Coco was merely using Hans Gunther von Dincklage, why did she continue to have an relationship with him after the war? And why is this not mentioned? Once the war ends, Dincklage seems to just disappear from the story as Coco takes Andre to Switzerland to recuperate.
Gortner also tries to excuse Coco's decision to use Nazi legislation to take sole control over Parfums Chanel run by Pierre and Paul Wertheimer who were of Jewish ancestry. Coco had signed a contract with the brothers to distribute Chanel No.5 after its launch, but she had cause to regret it when she realised she had cheated herself out of a fortune. The Wertheimers had refused to renegotiate the contract prior to the war and Coco had been left fuming. The Nazi occupation gave her a chance to seize the company but unknown to her the Wertheimers had foreseen the problems likely to be caused by the Germans and handed ownership over to a Christian for the duration of the war. In the book, Coco is persuaded into filing the claim by her German lover as a way of proving her loyalty, but I don't buy this for one minute and totally believe Coco tried to use the situation to her advantage.
Whatever the truth is behind Coco's wartime activities, I can understand why Gortner chose to make her appear like a victim of circumstances because no one wants to admit their idols have feet of clay. Coco was never the most likeable of women, but her contribution to the world of fashion cannot be denied and I guess we should try to remember her for that more than anything else. While this book offers no startling revelations about Coco's life, it will more than satisfy her admirers.


Fremont, CA – November 28, 2018 – Blackmagic Design today announced that Living As One, LLC, a global leader in multisite and live streaming solutions for houses of worship and corporations, has developed their popular Multisite Platform around the Blackmagic Design DeckLink Mini Monitor 4K and DeckLink Mini Recorder 4K. The products provide high quality capture and playback for Living As One's flagship turnkey streaming solution designed to reliably live stream UltraHD video content to remote locations and to the web.
Texas based Living As One, LLC is focused on improving communications within and between geographically broad organizations. The company was founded in 2014 to fill a void in the professional video market for a highly resilient live streaming solution and now serves a growing number of multi location non profit and for profit organizations around the world.
The Blackmagic Design DeckLink Mini Recorder 4K provides realtime video capture for the Multisite Encoder, while the DeckLink Mini Monitor 4K is used for live/DVR playback with the Multisite Decoder. With this system, Living As One is able to provide flawless streaming of one UltraHD broadcast or two 1080p60 feeds with guaranteed synchronization at playback sites.
Multisite Encoders, available in Single Channel and Dual Channel models, capture professional audio and video through HDMI and SDI and use either h.264 or h.265 (HEVC) codecs to efficiently compress one or two channels of video and up to 16 channels of perfectly synchronized audio. Feeds are then live streamed to the Living As One content delivery network, with the encoders automatically resending content that may be lost during transmission through a patented method, regardless of the duration of any network interruption.
The Multisite Decoder, which is designed with volunteer operators in mind, includes a simple to use video player that runs on dedicated hardware and allows playback and pausing of live video. Regardless of whether the video is playing or paused, Multisite Decoder's advanced algorithms will continue to buffer live video ahead of time to a local SSD to prevent interruptions in playback. Living As One used the DeckLink SDK along with the DeckLink Mini Monitor 4K to create the Decoder application providing these zero content loss playback capabilities.
One of the features most useful to Living As One is the DeckLink Mini Recorder 4K and Mini Monitor 4Ks ability to support 16 channels of audio and any standard video format.
"By providing 16 channels of audio, the remote viewing experience can be way more immersive because audio from any element of an event can be streamed and played in remote locations in whatever way works for those venues. For example, Crossroads Church in Cincinnati Ohio broadcasts their band's instruments and click track on individual audio channels so that the band's at their remote campus can sync and play together. Other churches send audio from audience microphones to give an 'in the room' experience to viewer's at remote venues. And some like the Global Leadership Summit send audio from multiple real time language translations which can be distributed locally at the remote venues with RF headsets or even a phone app. We were able to build these capabilities into our platform through the DeckLink's easy to use SDK, which is another huge advantage from using Blackmagic Design," Martel said.
DeckLink Mini Monitor 4K and DeckLink Mini Recorder 4K both models support all SD, HD and Ultra HD formats up to 2160p30. They are low profile 4 lane generation 2 PCI Express cards that include 6G-SDI and HDMI 2.0a connections. This means the high quality connections support broadcast quality 10-bit YUV and 12-bit RGB video, along with the latest Rec. 2020 color and support for high dynamic range (HDR) formats and HDR metadata. Both DeckLink Mini 4K models are fully compatible with the Blackmagic Desktop Video SDK, making them perfect for OEMs or developers that are building custom playback or recording solutions.
For more information about Living As One, please visit https://livingasone.com/.


text:
3/6/2018 - Final Update to Floodplain Map & Regulations
Floodplain Insurance
The Federal Emergency Management Agency (FEMA) administers the National Flood Insurance Program (NFIP), which was created in 1968 to encourage communities to adopt floodplain management ordinances and to help offset rising disaster assistance costs to the federal government. The owners of property located in Special Flood Hazard Areas (SFHAs) (also known as the "100-year floodplain"), are required to purchase flood insurance if they have a federally insured mortgage and their property is located in one of these mapped areas. According to FEMA, property in a SFHA has at least a one-percent chance of being flooded in any given year, or a 26 percent chance of being flooded during the term of a 30-year mortgage.
Although flood insurance is sold by private insurers, the rates are set by FEMA and are based on a property's hazard zone designation, which can be found on a participating community's flood insurance rate map (FIRM). Homes, apartments and commercial buildings built above the flood level – the base flood elevation – are generally not required to carry flood insurance, while buildings built below the flood level pay more for flood insurance according to a risk-based sliding scale.
Floodplain Maps
Salina's floodplain maps were adopted in 1986 and were outdated. The federal program for replacing old and outdated paper topographical FIRM maps with digital versions began in 2006. Replacing decades-old data with information generated by aerial laser surveys (LIDAR) and new computer models is intended to allow FEMA to more precisely identify and map flood-prone areas. The digital maps will be easier to access by the public, easier to read and easier to update. The process of updating flood maps for Salina and Saline County is now complete.
The Kansas Division of Water Resources, in a collaborative effort with FEMA and their mapping contractor AMEC Foster Wheeler, has sent a letter of Final Determination and a final set of the updated FIRMS to community officials in Salina and Saline County. The boundaries of many flood-prone areas within the city of Salina shown on the existing 1986 flood map have been revised.
The public may view the final maps at the City-County Building, 300 W. Ash St., Room 205, or online at www.salina-ks.gov/maps.
Frequently asked questions and the LOMC database, which is a listing of all LOMAs by address for properties within city limits, can be found online at www.salina-ks.gov/floodplaininformation.
In May of 2016, City staff hosted a public open house. 3,719 Salina floodplain property owners were notified; approximately 450 people attended.
Out of 2,107 Letters of Map Amendment (LOMA) for properties within the city limits, there are 35 properties whose LOMAs were not revalidated on the revised map.
Approximately 30 properties that were not shown in the floodplain on the 1986 FIRM are now shown in the floodplain on the revised map.
The Flood Insurance Study (FIS) and the FIRM will go into effect on April 18, 2018.
The City of Salina is required to adopt updated floodplain management regulations by April 18, 2018 to bring the City's regulations into conformance with FEMA and Kansas Division of Water Resources Requirements.
Salina's updated regulations must be reviewed and approved by the Kansas Division of Water Resources prior to final adoption by the City Commission.
The Salina City Planning Commission is scheduled to hold a public hearing to review the updated regulations on March 6, 2018 in Room 107 of the City-County Building.
The City Commission is scheduled to consider the updated floodplain management regulations and maps at the March 26, 2018 meeting.
For local information regarding inquiries about properties within the city limits of Salina, or the revalidation of existing Letters of Map Change (LOMA or LOMR letters), contact the City of Salina Planning Division at (785) 309-5715 or (785) 309-5720, or email floodplaininformation@salina.org.
For state information, contact Program Manager Dane Bailey with the Kansas Department of Agriculture, Division of Water Resources at (785) 296-7769, or visit http://agriculture.ks.gov/divisions-programs/dwr.
For federal information regarding Map Modernization or the National Flood Insurance Program visit www.fema.gov.


text:
Q: Transform a variable's exponent from an exact rational to an inexact decimal here is a little problem I could not find a solution for.
I have a variable with an exponent represented as a fraction, for example,
var = a^(39/106)

Now I would like to have Mathematica report this as a decimal fraction, like
var = a^0.368

Is there a way to do it in functional style, something like NExponentsAsDecimals[var]? I want to apply this to results obtained from Solve etc.

A: As Mike Honeychurch suggested
var = N /@ var

a^0.367925

is probably the simplest way to do what you ask for.


text:
Qantas celebrates its centenary with an historic flight
byHelen Nugent
A century after the first customer and a bag of letters made their way over the Queensland outback, Qantas and Australia Post are recreating the inaugural airmail and passenger service.
Today, November 2, 2022, marks 100 years since the airline's launch. QF661 will follow the specially convened flightpath, carrying family members of Qantas founders, top tier frequent flyers, and guests with a connection to the early Queensland airmail services. Also on board for the celebratory event will be local communities who played in a key role in the foundation of the airline which is now Australia's national carrier.
Qantas Group CEO Alan Joyce said that the flight marked a significant milestone for the two Australian companies and a defining moment in the nation's aviation history.
"This flight celebrates the entrepreneurship and innovation of our founders a century ago, that still exists in Qantas's DNA today. Our founding chairman Fergus McMaster prophetically described our first flight as a 'small beginning which would develop into one of the greatest services in the world'."
Qantas says operations, finances getting back to normal
byVictoria Bryan
A two-day flight
Qantas founders inaugurated the airline as a company in November 1920 and spent the following two years preparing for scheduled services by flying joyriders, raising funds, sourcing aircraft, and planning the first air route.
Operated by a Bombardier Q400 turboprop, the centenary flight will follow the 882-kilometer route taken by Qantas co-founders and pilots from Charleville to Longreach and by Hudson Fysh from Longreach to Cloncurry in an open cockpit FK8 biplane over two days on November 2 and 3, 1922.
A replica mailbag will fly 106 handwritten letters from schoolchildren in Charleville to kids in Longreach and Cloncurry.
Joyce said: "Qantas has gone from that single biplane flight 100 years ago to the brink of a new era of aviation with our Airbus A350s on order, positioning us to fly people and parcels direct from Australia to any city in the world.
"Qantas and Australia Post have had a long and successful partnership, moving mail and freight for Australians, as we did on that first flight. The rapid growth of online shopping and the demand for air freight that comes with it is only seeing that partnership grow."
Growing freight demand
The airline operates 11 dedicated Australia Post freighters and is preparing for a busy Christmas period as online retail demand ramps up.
Paul Graham, chief executive officer and managing director of Australia Post, said: "One hundred years on from our first airmail flight, our partnership with Qantas continues to go from strength to strength. Receiving mail and parcels from loved ones is as important to people today as it was 100 years ago."
Qantas CEO Alan Joyce and Australian Post CEO Paul Graham. Credit: Qantas
Qantas is converting one of its A330 widebody passenger aircraft into another dedicated Australia Post freighter. The converted freighter will be able to carry around 42 tonnes of cargo each flight, approximately double the capacity of the A321 freighters currently operating for Australia Post. The A330 freighter is expected to start operating in 2023 and will support the permanent shift towards online shopping in Australia.
A further six A321P2Fs have been approved to join the Qantas Freight fleet from 2023. These aircraft will have 60% more capacity than the Boeing 737s they're replacing and be up to 35% more fuel efficient.
The first flight has already taken place, but aviation enthusiasts can follow the rest of QF6661's journey, which will be featured on FlightRadar24 and view behind the scenes coverage on Qantas social media channels.
100 years to the day, Qantas is retracing the route of its very first flight on 1 November 1922 from Charleville to Cloncurry via Longreachhttps://t.co/kb69XSWTmW pic.twitter.com/m5XQ2H0ick
— Flightradar24 (@flightradar24) November 2, 2022
Today in history: Pan Am Flight 103, Lockerbie
On the evening of December 21, 1988, Pan Am Flight 103 was cruising at 31,000 feet over the…
byAlec Wignall
Today in history: the Lufthansa heist
On this day, in the early hours of December 11, 1978, six armed men in a stolen Ford…
Celebrating 75 years of the Kangaroo Route: Qantas services to London
75 years ago, Qantas launched its own iconic route, now one of the world's key air journeys: the…
On this day: The crash of South African Airlines flight 295
During the early hours of November 28, 1987, communication with South African Airlines (SAA) flight SA295, registration ZS-SAS,…
byAleksandras Griskevicius