text:
Q: Upload file to MS SharePoint using Python OneDrive SDK Is it possible to upload a file to the Shared Documents library of a Microsoft SharePoint site with the Python OneDrive SDK?
This documentation says it should be (in the first sentence), but I can't make it work.
I'm able to authenticate (with Azure AD) and upload to a OneDrive folder, but when trying to upload to a SharePoint folder, I keep getting this error:

"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."

The code I'm using that returns an object with the error:
(...authentication...)
client = onedrivesdk.OneDriveClient('https://{tenant}.sharepoint.com/{site}/_api/v2.0/', auth, http)
client.item(path='/drive/special/documents').children['test.xlsx'].upload('test.xlsx')

I can successfully upload to https://{tenant}-my.sharepoint.com/_api/v2.0/ (notice the "-my" after the {tenant}) with the following code:
client = onedrivesdk.OneDriveClient('https://{tenant}-my.sharepoint.com/_api/v2.0/', auth, http)
returned_item = client.item(drive='me', id='root').children['test.xlsx'].upload('test.xlsx')

How could I upload the same file to a SharePoint site?
(Answers to similar questions (1,2,3,4) on Stack Overflow are either too vague or suggest using a different API. My question is if it's possible using the OneDrive Python SDK, and if so, how to do it.)

Update: Here is my full code and output. (Sensitive original data replaced with similarly formatted gibberish.)
import re
import onedrivesdk
from onedrivesdk.helpers.resource_discovery import ResourceDiscoveryRequest

# our domain (not the original)
redirect_uri = 'https://example.ourdomain.net/'
# our client id (not the original)
client_id = "a1234567-1ab2-1234-a123-ab1234abc123"
# our client secret (not the original)
client_secret = 'ABCaDEFGbHcd0e1I2fghJijkL3mn4M5NO67P8Qopq+r='
resource = 'https://api.office.com/discovery/'
auth_server_url = 'https://login.microsoftonline.com/common/oauth2/authorize'
auth_token_url = 'https://login.microsoftonline.com/common/oauth2/token'
http = onedrivesdk.HttpProvider()
auth = onedrivesdk.AuthProvider(http_provider=http, client_id=client_id,
                                auth_server_url=auth_server_url,
                                auth_token_url=auth_token_url)

should_authenticate_via_browser = False
try:
    # Look for a saved session. If not found, we'll have to
    # authenticate by opening the browser.
    auth.load_session()
    auth.refresh_token()
except FileNotFoundError as e:
    should_authenticate_via_browser = True
    pass

if should_authenticate_via_browser:
    auth_url = auth.get_auth_url(redirect_uri)
    code = ''
    while not re.match(r'[a-zA-Z0-9_-]+', code):
        # Ask for the code
        print('Paste this URL into your browser, approve the app\'s access.')
        print('Copy the resulting URL and paste it below.')
        print(auth_url)
        code = input('Paste code here: ')
        # Parse code from URL if necessary
        if re.match(r'.*?code=([a-zA-Z0-9_-]+).*', code):
            code = re.sub(r'.*?code=([a-zA-Z0-9_-]*).*', r'\1', code)
    auth.authenticate(code, redirect_uri, client_secret, resource=resource)
    # If you have access to more than one service, you'll need to decide
    # which ServiceInfo to use instead of just using the first one, as below.
    service_info = ResourceDiscoveryRequest().get_service_info(auth.access_token)[0]
    auth.redeem_refresh_token(service_info.service_resource_id)
    auth.save_session()  # Save session into a local file.

# Doesn't work
client = onedrivesdk.OneDriveClient(
    'https://{tenant}.sharepoint.com/sites/{site}/_api/v2.0/', auth, http)
returned_item = client.item(path='/drive/special/documents')
                      .children['test.xlsx']
                      .upload('test.xlsx')
print(returned_item._prop_dict['error_description'])

# Works, uploads to OneDrive instead of SharePoint site
client2 = onedrivesdk.OneDriveClient(
    'https://{tenant}-my.sharepoint.com/_api/v2.0/', auth, http)
returned_item2 = client2.item(drive='me', id='root')
                        .children['test.xlsx']
                        .upload('test.xlsx')
print(returned_item2.web_url)

Output:
Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown.
https://{tenant}-my.sharepoint.com/personal/user_domain_net/_layouts/15/WopiFrame.aspx?sourcedoc=%1ABCDE2345-67F8-9012-3G45-6H78IJKL9M01%2N&file=test.xlsx&action=default

A: I finally found a solution, with the help of (SO user) sytech.
The answer to my original question is that using the original Python OneDrive SDK, it's not possible to upload a file to the Shared Documents folder of a SharePoint Online site (at the moment of writing this): when the SDK queries the resource discovery service, it drops all services whose service_api_version is not v2.0. However, I get the SharePoint service with v1.0, so it's dropped, although it could be accessed using API v2.0 too.
However, by extending the ResourceDiscoveryRequest class (in the OneDrive SDK), we can create a workaround for this. I managed to upload a file this way:
import json
import re
import onedrivesdk
import requests
from onedrivesdk.helpers.resource_discovery import ResourceDiscoveryRequest, \
    ServiceInfo

# our domain (not the original)
redirect_uri = 'https://example.ourdomain.net/'
# our client id (not the original)
client_id = "a1234567-1ab2-1234-a123-ab1234abc123"
# our client secret (not the original)
client_secret = 'ABCaDEFGbHcd0e1I2fghJijkL3mn4M5NO67P8Qopq+r='
resource = 'https://api.office.com/discovery/'
auth_server_url = 'https://login.microsoftonline.com/common/oauth2/authorize'
auth_token_url = 'https://login.microsoftonline.com/common/oauth2/token'

# our sharepoint URL (not the original)
sharepoint_base_url = 'https://{tenant}.sharepoint.com/'
# our site URL (not the original)
sharepoint_site_url = sharepoint_base_url + 'sites/{site}'

file_to_upload = 'C:/test.xlsx'
target_filename = 'test.xlsx'

class AnyVersionResourceDiscoveryRequest(ResourceDiscoveryRequest):

    def get_all_service_info(self, access_token, sharepoint_base_url):
        headers = {'Authorization': 'Bearer ' + access_token}
        response = json.loads(requests.get(self._discovery_service_url,
                                           headers=headers).text)
        service_info_list = [ServiceInfo(x) for x in response['value']]
        # Get all services, not just the ones with service_api_version 'v2.0'
        # Filter only on service_resource_id
        sharepoint_services = \
            [si for si in service_info_list
             if si.service_resource_id == sharepoint_base_url]
        return sharepoint_services

http = onedrivesdk.HttpProvider()
auth = onedrivesdk.AuthProvider(http_provider=http, client_id=client_id,
                                auth_server_url=auth_server_url,
                                auth_token_url=auth_token_url)

should_authenticate_via_browser = False
try:
    # Look for a saved session. If not found, we'll have to
    # authenticate by opening the browser.
    auth.load_session()
    auth.refresh_token()
except FileNotFoundError as e:
    should_authenticate_via_browser = True
    pass

if should_authenticate_via_browser:
    auth_url = auth.get_auth_url(redirect_uri)
    code = ''
    while not re.match(r'[a-zA-Z0-9_-]+', code):
        # Ask for the code
        print('Paste this URL into your browser, approve the app\'s access.')
        print('Copy the resulting URL and paste it below.')
        print(auth_url)
        code = input('Paste code here: ')
        # Parse code from URL if necessary
        if re.match(r'.*?code=([a-zA-Z0-9_-]+).*', code):
            code = re.sub(r'.*?code=([a-zA-Z0-9_-]*).*', r'\1', code)

    auth.authenticate(code, redirect_uri, client_secret, resource=resource)
    service_info = AnyVersionResourceDiscoveryRequest().\
        get_all_service_info(auth.access_token, sharepoint_base_url)[0]
    auth.redeem_refresh_token(service_info.service_resource_id)
    auth.save_session()

client = onedrivesdk.OneDriveClient(sharepoint_site_url + '/_api/v2.0/',
                                    auth, http)
# Get the drive ID of the Documents folder.
documents_drive_id = [x['id']
                      for x
                      in client.drives.get()._prop_list
                      if x['name'] == 'Documents'][0]
items = client.item(drive=documents_drive_id, id='root')
# Upload file
uploaded_file_info = items.children[target_filename].upload(file_to_upload)

Authenticating for a different service gives you a different token.

redpajama_set_name: RedPajamaStackExchange


Schenscher has appeared in 10 games since joining Chicago and averaged 2.2 ppg and 2.0 rpg.
March 25, 2006 — The Chicago Bulls today signed rookie Luke Schenscher for the remainder of the 2005.06 season.
Schenscher joined the Bulls from the D-League's Fort Worth Flyers on March 5 when he signed his first 10-day contract with Chicago. He then signed his second 10-day on March 15.
The 7-1, 265-pound center has appeared in 10 games since joining Chicago and averaged 2.2 ppg and 2.0 rpg in 9.2 mpg and shot .769 from the floor.
Chicago's roster now stands at 15.
March 15, 2006 — The Chicago Bulls today re-signed rookie Luke Schenscher to a second 10-day contract.
The 7-1, 265-pound center has appeared in five games since joining Chicago on March 5 from the D-League's Fort Worth Flyers. With the Bulls he has averaged 2.8 ppg and 1.6 rpg in 8.6 mpg while shooting .778 from the field.
In last night's 95-66 win over Portland, Schenscher registered season-highs of 10 points (5-6 FG) and four rebounds in 17:18 of action.
March 5, 2006 — The Chicago Bulls today signed Luke Schenscher of the NBA Development League to a 10-day contract. Schenscher, a 7-1, 265-pound center, will be with the Bulls tonight when they visit the Cleveland Cavaliers at Quicken Loans Arena at 6:30 P.M. CT.
Schenscher joins Chicago from the Fort Worth Flyers of the D-League, where he has averaged 8.2 ppg, 6.1 rpg, 1.42 bpg and 1.2 apg in 36 appearances (34 starts). He has shot .530 from the floor and .607 from the free throw line.
The Australian native played four seasons at Georgia Tech (2001-05), including a key role in the Yellow Jackets' run to the 2004 Final Four. In 119 games at Tech he averaged 7.3 ppg, 5.4 rpg and 1.32 bpg.


text:
Where Evers and Republican leadership agree, differ on Wisconsin's 2023 budget
Democratic Wisconsin Gov. Tony Evers and Republicans in the Wisconsin Legislature appear willing to compromise on how to spend the state's unprecedented budget surplus, estimated at more than $7.1 billion.
Speaker of the Assembly Robin Vos watches as Wisconsin Gov. Tony Evers speaks during the annual State of the State address on Jan. 24, 2023, in Madison. (Credit: AP Photo / Morry Gash)
By Scott Bauer and Harm Verhuizen, AP
MADISON, Wis. (AP) — Democratic Wisconsin Gov. Tony Evers has laid out his priorities to the Republican-controlled Legislature twice since the start of 2023, first in his inaugural address and in more detail in his State of the State speech on Jan. 24.
Some are clearly dead on arrival, but in other areas, Evers and Republicans appear willing to compromise on how to spend the state's unprecedented budget surplus, estimated Jan. 25 at more than $7.1 billion.
Here is a closer look at where things stand.
Where are Evers and the Legislature close?
Evers and the Republicans are supportive of increasing funding for Wisconsin counties, cities, towns and villages. Evers initially called for a 4% increase in funding, using the current formula, while Republicans talked about taking a new approach that would divert a portion of the state sales tax to fund local governments.
On Jan. 24, Evers appeared to get behind the Republican plan in calling for using up to one-fifth of the state sales tax to pay for local governments. The state sales tax is 5 cents per dollar. The plan equates to using one penny from every 5 cents of the tax for local governments.
"Both sides of the aisle seemingly agree that the current system of funding local governments in Wisconsin is broken, and everyone must come to the table to find a long-term solution," the Wisconsin Counties Association, the League of Wisconsin Municipalities, and the Wisconsin Towns Association said in a joint statement. "To see our state's top leaders work collaboratively to invest in our communities is unprecedented and will result in a stronger Wisconsin tomorrow."
Local governments have turned to voters to approve tax increases more frequently in recent years, arguing that state funding is unable to keep up with demand for services. The shared revenue program to fund local governments, created in 1911, has remained nearly unchanged for almost 30 years, despite overall growth in tax revenues, according to the nonpartisan Wisconsin Policy Forum.
Shared revenue for counties and municipalities was cut in 2004, 2010 and 2012 and since then has been relatively flat.
Where could there be compromise?
Evers and the Republicans both say they want to cut taxes. The question is, which taxes would be cut and by how much.
Republicans' top priority is creating a flat 3.25% income tax rate in Wisconsin, a plan that Evers and Democrats oppose because it would lower taxes for the state's wealthiest residents who are taxed at 7.65% for income over $280,950.
Evers' tax cut plan would lower income taxes by 10% for individuals earning less than $100,000 and families earning less than $150,000.
Figuring out if they can compromise and what that would look like will be one of the bigger tension points this session, as Evers and the Legislature wrestle over how to use the state's surplus that was projected Jan. 25 to come in at $7.1 billion by July, up by $524 million from estimates in November. Evers drew conservatives' ire in his reelection campaign when he took credit for more than $2 billion in Republican-authored tax cuts under the previous budget, which Evers signed into law.
Evers and Republicans could also find common ground on funding for mental health services, child care and fighting contamination from so-called forever chemicals known as PFAS. Evers proposed devoting more than $1 billion to address those areas.
Republican Assembly Speaker Robin Vos was skeptical.
"Governor Evers has literally had billions and billions of dollars to throw at some of these problems," he said, referring to pandemic relief funds Evers has designated for similar issues. "I'd like to see evidence to know whether or not the investments actually paid off or it was just money kind of flushed down the toilet."
Vos didn't detail alternatives, but Republicans have also named those areas as priorities in recent years.
Evers proposed $225 million for grant programs to train and attract new workers for in-demand fields including clean energy and health care. Republicans didn't immediately throw their support behind the governor's ideas but have historically supported funds for workforce development.
Where are they far apart?
Evers wants the Legislature to overturn the state's 1849 law banning abortion. Republicans have repeatedly refused to do that.
Republicans talk about wanting to clarify the law and create clear exceptions to protect the life of the mother and to cover cases of rape and incest. Evers has vowed to veto any proposal that leaves the underlying ban in place.
Evers wants to legalize marijuana for recreational and medical use. Republicans have shown some support for a limited medical marijuana program, but are dead set against allowing recreational use.
Evers wants to accept federal money to expand Medicaid. Republicans have rejected that dozens of times over the past 14 years and show no signs of changing course.
Harm Venhuizen is a corps member for the Associated Press/Report for America Statehouse News Initiative. Report for America is a nonprofit national service program that places journalists in local newsrooms to report on undercovered issues. Follow Venhuizen on Twitter.
'Here & Now' Highlights: Cindy Bourget, Suzanne Becker, Janet Protasiewicz

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Want to make the visibility true from client side of the control which made invisible from server side I have a text box in a page. Whose visibility is set false from the server side. Now I want to make it visible from client side by using java-script. (Any post back or partial post back can not be implemented in this case.)
<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
        <title>ControlVisibilityClientSide</title>
            <script type="text/javascript">
                function toggleVisibility(controlId)
                {
                    var control = document.getElementById(controlId);
                    if(control.style.visibility == "visible" || control.style.visibility == "")
                        control.style.visibility = "hidden";
                    else
                        control.style.visibility = "visible";
                }
            </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <input type="button" ID="btnShowHide" value="Show/Hide" onclick="toggleVisibility('TextBox1');" />
            </div>
        </form>
    </body>
</html>

This is working fine.
But when I use
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox1.Visible = false;
    }
}

The above code is not working at all.
Can any one please help me out from this problem or any suggestion will be appreciated.

A: If you set the control visible=false it will not render at client side, But there is a tricky solution, that will accomplish the same thing.
In your page load, where you are set Visible=false, you can set the style to display:none
protected void Page_Load(object sender, EventArgs e)
{
   TextBox1.Attributes.Add("style", "display:none");
}

It will render the control in client side, but user can't see and then you can visible the control in Javascript function to set style Diplay:block, LIKE...
document.getElementById('<%=TextBox2.ClientID %>').style.display = 'block';

A: Once control is marked as invisible at server side, no mark-up (html) is emitted for it. So it cannot be made visible at JS, because it (corresponding html) does not exists at client side.
Instead of making invisible at server side, you need to emit a start-up script to hide it on client side.

A: set the style["visibility"] = "hidden" on the server side.
I.E. in c# btnSave.style["visibility"] = "hidden";
It will get the button rendered and therefore on the client side this element is accessible.
On the client side change the visibility style to visible.
$('#btnSave).css("visibility", "visible");


Everyone loves a good deal. And when you have the freedom to choose what to pay for a product, things get even better! Offer Your Price lets you create a "pay what you want", "name your own price" or "donation based" pricing system. Customers caneither buy at the listed price or make an offer. If offered price is higher than the minimum bidding price threshold you've set, offer is accepted and customer is emailed a coupon immediately. If not, a counter offer is sent to the customer. Everything is instant and automated. Set it once and let the cash registers roll!


1. What is Text Mining?
This monograph surveys the technology and empirics of text analytics in finance. I present various tools of information extraction and basic text analytics. I survey a range of techniques of classification and predictive analytics, and metrics used to assess the performance of text analytics algorithms. I then review the literature on text mining and predictive analytics in finance, and its connection to networks, covering a wide range of text sources such as blogs, news, web posts, corporate filings, etc. I end with textual content presenting forecasts and predictions about future directions.
Text and Context: Language Analytics in Finance describes the current landscape of text analytics in finance. After a brief introduction, Section 2 examines how text is extracted from various web sites and services. Section 3 deals with the basics of text analytics such as dictionaries, lexicons, mood scoring, and summarization of text. This is followed by the analytics of text classification in Section 4. The performance of text analytic algorithms is assessed using a range of metrics in Section 5. A survey of the empirical literature on text mining in finance and the commercialization of textual analytics is discussed in Section 6. Finally, the author takes a look at the future of text analytics in Section 7.


text:
Home > Connecticut > Middletown > Bernstein, Stephanie A.
Bernstein, Stephanie A.
Updated: February 26th, 2019 Middletown Lawyer List B, The Balaban Law Firm, Personal Injury	0 review
Address: 425 Main Street 4th Floor, Middletown, CT 06457
Lawyer Firm: The Balaban Law Firm
Website: http://www.balabanlaw.com
Areas of Practice Family Law, Personal Injury, Criminal Defense, Real Estate, Contracts, Probate – Wills & Trusts
Description Attorney Stephanie A. Bernstein received her B.A. from The University of New Hampshire in May of 1989, where she majored in English. She swam competitively on her college swim team. She received her J.D. Degree from Western New England College School of Law in May of 1992. Prior to coming to the Balaban Law Firm she was a solo practitioner, concentrating in the areas of family law, personal injury and contracts. Attorney Bernstein is admitted to practice before the Connecticut Bar and is active in her community in the following roles and activities: Coach for Madison Recreational Soccer and Travel-Rec (2000 — Present); Foster Volunteer for The Connecticut Humane Society (2004 — Present); Foster Volunteer for Forgotten Felines; Girl Scout Leader; Member of a USTA Tennis Team; Active participant in local road races.
Update Bernstein, Stephanie A. information | View Google Map
Other lawyers in Middletown, Connecticut
Ellis, Makana A. - 8 views
Messick, D. Jeanne - 4 views
Haire, Stephen A. - 2 views
Harris, Gregory M. - 5 views
Balaban, Mark A. - 32 views
Barrow, Barbara A. - 11 views
Szewczyk, Phrances Leverton - 5 views
Rousseau, Laurent L. - 0 views
Rocco, AnnMarie Cienava - 3 views
Harvey, William W. II - 7 views
Popular lawyers in Middletown, Connecticut
Rutkowska, Sylvia K. - 8 views
Lynch, Jeremiah C. III - 4 views
Accumanno, Christina M. - 8 views
Bernstein, Stephanie A. - 80 views
Most rated lawyers in Middletown, Connecticut
Accumanno, Christina M. - 0 votes
Harris, Gregory M. - 0 votes
Szewczyk, Phrances Leverton - 0 votes
Croce, R. Richard - 0 votes
Rocco, AnnMarie Cienava - 0 votes
Rousseau, Laurent L. - 0 votes
Stevens, Shawna L. (Fredericksburg) - 73 views
Carter, James L. "Jeremy" (Salisbury) - 172 views
Flaherty, Brandy (Pittsburgh) - 51 views
Fierst, Timothy J. (New York City) - 99 views
Wyman, Alyson L. (Bowie) - 67 views


text:
Professional Diploma of French
MAIS Programme
Cooperation Programme ETIA
Study at the DA
Living at the DA
Studying in Vienna
Entry and Residence Permit Regulations
Recognised Students
ÖFG Peaceful Change
Workshops Conferences
Cooperation Partners Academic Programmes
Association for the Advancement of Teaching at the Diplomatic Academy of Vienna
Cooperation Partners Public Events
The Academy About the Academy Faculty MoreInformation
KEMP, Walter
Professorial Lecturer
Walter Kemp is a Senior Fellow at the Global Initiative against Transnational Organized Crime and Senior Advisor to the Cooperative Security Initiative. He has held a number of senior positions with the Organization for Security and Cooperation in Europe (OSCE), including Head of the Strategic Policy Support Unit, Senior Adviser to the OSCE High Commissioner on National Minorities and Senior Adviser to the Secretary General and OSCE Chairmanships.
Between 2010 and 2016 he was Director for Europe and Central Asia and then Vice President at the International Peace Institute (IPI). Previously he served for four years as spokesman and speechwriter at the United Nations Office on Drugs and Crime (UNODC).
Dr. Kemp has written extensively on conflict prevention, organized crime, inter-ethnic relations and national minorities, the political economy of conflict, and the OSCE.
Walter, who is Canadian, has a PhD in international relations from the London School of Economics, as well as degrees in political science and history from the University of Toronto and McGill University.


text:
Speak for Yourself è il secondo album registrato dalla cantautrice inglese Imogen Heap nel 2005.

Tracce
 "Headlock" – 3:36
 "Goodnight and Go" – 3:52
 "Have You Got It in You?" – 4:10
 "Loose Ends" – 3:40
 "Hide and Seek" – 4:16
 "Clear the Area" – 4:14
 "Daylight Robbery" – 3:21
 "The Walk" – 5:14
 "Just for Now" – 3:00
 "I Am in Love with You" – 3:08
 "Closing In" – 4:48
 "The Moment I Said It" – 5:56
 "Speeding Cars" (re-release bonus track)
 "Can't Take It In" (re-release bonus track)

Collegamenti esterni

redpajama_set_name: RedPajamaWikipedia


text:
The Overit SEO Brief Episode 2 | Updates from Google and Predictions for 2023.
The Overit SEO Brief Episode 2 | Updates from Google and Predictions for 2023
Hello, and welcome back to The Overit SEO Brief! This Brief is for Q4 2022, and since we're nearing the end of the year, we thought we'd cover some notes and updates since Q3, give you a few tips for end-of-the-year SEO reporting, and leave you with some predictions for 2023. As always, if you like what you see, be sure to subscribe using the form to the right, and follow us on social. Let's get started!
GA4 Updates
Google announced they won't sunset Universal Analytics until 2024, pushing back their timeline by at least 6 months. If you tuned into our last episode for Q3, we discussed Google's big move away from today's familiar Universal Analytics to its next evolution in digital analytics, GA4.
The good news is that organizations have more time and a longer runway in transitioning over to GA4. But don't wait too long! The transition process will take some time and effort and the new sunset date will be here before you know it. If you want to learn a bit more about GA4, you can watch that segment from our last SEO Brief.
Google's Helpful Content Update
Google released another algorithm update since Q3, this one called the Helpful Content update. This one shook up search results for mostly informational content that was deemed to be targeting search engine algorithms maybe a bit more than actual users. If you haven't reviewed them recently, be sure to check out your most recent keyword ranking and organic traffic reports and see if the Helpful Content update had any impact on your site. For tips on how to handle any kind of major Google Update, you can watch that segment from our last Brief as well.
Endless Scroll Results
Google is rolling out Endless Scroll for search results on Desktop. Instead of distinct pages, with 10 results per page, Google will now show up to 6 pages worth of results for users that scroll down the page, before they reach a More Results prompt. This is similar to the experience that mobile searchers have had for a while now, where they can view up to 4 pages of results by scrolling.
Could this mean the end of pagination in Google search forever? Maybe. That might finally make long-standing distinctions between Page 1 and Page 2 visibility a little less meaningful and could have some unexpected long-term impacts on Click Through Rates. We'll have to wait and see, but Google is bringing more consistency between its mobile and desktop experience and it seems like Endless Scroll is here to stay.
Year-End Website Review
We're reaching the end of the year, which means it's a great time to start gathering SEO data for annual website reviews. These types of reviews can help you assess your organization's search performance for the last year, and they also provide you a strong benchmark to gauge against for the coming year. The specific KPIs you should be tracking are going to vary based on your organization's goals, your specific industry or vertical, and your visitor profiles and demographics. But having said that, there are a few different types of KPIs you should be looking at, ones that cover the full user journey for your website visitors.
KPI #1 – Visibility & Awareness
The first KPI you should analyze at the end of the year is a Visibility or Awareness based metric. This includes keyword ranking reports and maybe Impressions data for your various keywords. We recommend you really review and profile the keywords your site ranks for. Are they more transactional or commercial in nature, or are they more information-based searches? How many terms are Branded or non-Branded? Do you see a lot of short-tail terms, or are they mostly mid to long-tail terms? Understand what types of keywords your website appears in the search results the most for, and just how many times they're appearing in those searches.
KPI #2 – Traffic & Engagement
The second kind of KPI you should look at are Traffic and Engagement based metrics. Based on the visibility you had in the search results, how did that translate to Clicks, Users, and Sessions? How many search engine visitors came to your website and which pages did they arrive on? Are most of your visits going to the homepage? Category pages? Your blog? And where do they go after that? Does it seem like they can find the content or answer they were looking for, or are they clicking around lost on your website? Or even worse, are they abandoning it before they can complete an important goal? Try to understand where users go on your website once they've clicked over from a search result.
KPI #3 – Actions & Outcomes
And finally, the third kind of KPI you should look at are Action or Outcome-based metrics. These depend on what the objectives of your website and organization are, but the most common ones include eCommerce transactions, form completions, event registrations, content signups, and more. Your website should be guiding all users, not just search engine users, toward a small set of primary actions or outcomes, the ones that are the most meaningful and impactful to your organization's bottom line. Once you understand where your search engine traffic comes from, and where those visitors go on your website, it's now time to understand what they DO. Compare how search engine users complete primary tasks and actions compared to visitors from other channels.
By looking at Visibility, Traffic, and Outcome-based KPIs for search visitors, you should get a more thorough understanding of how search contributes to your organizational goals and which parts of the User Journey are in need of improvement more than others. So, grab that data as the year wraps up, see how you did in 2022, and set your benchmarks for these KPIs in 2023.
SEO Predictions for 2023
And speaking of 2023, we'll leave you with a prediction or two for the world of search. Our first prediction is that we can expect to see even more Featured Snippets in the search results as Google continues to shift from a search engine to an answer engine. The trend for several years now has been to provide key information and facts directly in the search results through various Snippets, without needing to send users to actual websites anymore. We predict this trend continues to accelerate in 2023 and the percentage of so-called "Zero Click" searches continues to rise. This could mean improved experiences for users but perhaps a more mixed bag for website owners.
And finally, you heard it here first folks: 2023 is the year that AI will go mainstream. It was only a week ago or so when the marketing community went bananas playing with Chat GTP, a super sophisticated Chat Bot released by the Open AI group. Chat GTP is based on what are called Large Language Models and can do things that seemed impossible just a few years ago, from writing poetry to de-bugging code and even generating full essays or articles of content.
The most immediate reactions in the SEO community were expectedly about how marketing teams might leverage this kind of technology to automate or expedite a lot of routine tasks. But for some, the bigger takeaway became just how antiquated Search Engines all of a sudden felt, when ChatBots can now output stunningly detailed replies, answers, and texts from very basic prompts.
We're still a long way from Google being replaced, if ever, but one thing is definitely clear: Google's been put on notice, they'll need to respond to AI-based alternatives and adapt to a future where AI underlies more and more of the user experience across the web.


text:
4:09 pm Get Lucky (feat. Pharrell Williams) Daft Punk
4:05 pm Counting Stars OneRepublic
4:01 pm I Knew You Were Trouble Taylor Swift
Update: D.A. Helps Homeowner Recover Funds Taken In Real Estate Scam
After being scammed, a local homebuyer got some good news. The Shasta County D.A.'s Office Real Estate Fraud Unit was able to recover "much" of the funds in a case of fraud. A Shasta County homebuyer had fallen victim to a scam that could have lost them a very substantial amount of money. The District Attorney's Consumer Protection/Real Estate Fraud Unit recently learned of someone being tricked into sending their down payment money to a fraudulent account. The way it works is during the closing process someone sends a spoofed email that appears to be from the real estate agent, settlement agent, or another trusted individual with false instructions for wiring the closing funds. By following the instructions the homebuyer ends up sending their nest egg to an account where it's quickly withdrawn and rerouted to an offshore account or converted to crypto currency. Once that happens, the D.A.'s Office says it's nearly impossible to recover the money…except in this case. The warning is still there. To avoid such a rip-off, it's suggested that email should never be considered a secure way to send financial information and only previously known and validated phone numbers should be used for any sort of confirmation.
Filed Under: Local News
© 2016 KSHA-FM. Internet Development by Frankly Media.


But there is good news for those who don't like goodbyes. Get ready for hellos.
That process could begin at noon Thursday, when MLS holds the second phase of its re-entry draft. The Sounders sat out the first phase Friday — as did all but three of the 20 MLS clubs.
However, increased contract flexibility makes the second phase more active. And it's also the phase that paid off well for the Sounders in 2013 when they snagged Chad Barrett from the New England Revolution.
When the re-entry draft closes, a trade window will open leading to the SuperDraft on Jan. 15. Between those two dates last offseason (Dec. 18-Jan. 21), the Sounders made seven transactions, including extended or new contracts for Thomas Jefferson High grad Lamar Neagle, Tristan Bowen and Hahnemann, and the signings of Barrett and homegrown players Aaron Kovar of Garfield High and Sean Okoli of Beamer High. The club loaned Clint Dempsey to Fulham. It also traded for Anibaba.
In terms of sheer numbers, the biggest needs are on the back end, where there are no reserves behind goalkeeper Stefan Frei due to the retirement of Hahnemann and the decision to decline the contract of Josh Ford.
Along the back line, defensive player of the year Chad Marshall returns, as does left back Leo Gonzalez, who dodged the bullet of the expansion draft. However, there are questions at center back and right back — each aggravated by the loss of Anibaba, who played both spots.
Just days before the expansion draft, coach Sigi Schmid had listed Anibaba as one potential option for filling the starting right back position vacated by Yedlin. The other choice he mentioned was Brad Evans, who has played right back for the U.S. national team but has primarily been a midfielder with the Sounders.
Also ominously open is the center back spot alongside Marshall. Last season, that was filled by a rotation of Anibaba, Zach Scott and Djimi Traore. But now Anibaba is gone, Traore is considering retirement, and Scott is facing foot surgery.
The Sounders seemed to signal their belief that Scott can contribute when they protected him from the expansion draft once Anibaba was taken. However, he's 34, so that spot seems certain to be reinforced, whether for the first 11 or depth.
All of the key guys return at midfield and forward. But there could be a depth issue at midfield, especially if Evans moves to right back.
That probably takes precedence over forward, where the only real issue is age. Obafemi Martins, Clint Dempsey and Kenny Cooper are all 30 or older, and Barrett will join them by spring. But the serious work of freshening that position is expected to be put off for a year or two.


Chris Beauchamp is a senior and was the Entertainment Editor for last year's program. When he's not working, he operates a film club after school and works as an independent student filmmaker. He loves being apart of The Sage and is looking forward to adventure in this new year.


The RS232 to RS485 Converter(Model : CONV232TO485) allows RS-232 equipment to utilize RS-485 networks, oper-ating in either point-to-point or multi-point, 2-or 4-wire. The CONV232TO485 is one of the most cost effective RS-485 solutions on the market. Use with your standard PC or Laptop to control RS-485 devices directly with no special software required. Any standard communications software for your RS-232 serial ports will work. Plugs directly into standard DB9 male RS-232 port that comes with your PC or convert any number of your RS232 ports on a multiple port card with DB9 connectors to RS-485. You can also make a RS-232 device a RS-485 device on a RS-485 network.
Up to 1200 m using 26AWG twisted pair wire at 115.2 k Baud into 120 Ohm loads.
680 Ohm pull-up and pull-down (Jumper selectable).
Baud into 120 Ohm loads.


text:
function SimpleDraw(options) {

    var defaults = {
        context: null,
        parent: document.body,
        width: 400,
        height: 400,
        scale_x: 1,
        scale_y: 1,
        font: '14px sans-serif',
        colors: {
            background: '#333333',
            axis: '#666666'
        },
        palette: [
            '#000000', //0=black
            '#f4a460', //1=brown
            '#ff0000', //2=red
            '#ffa500', //3=orange
            '#ffff00', //4=yellow
            '#00ff00', //5=green
            '#0000ff', //6=blue
            '#8a2be2', //7=violet
            '#999999', //8= gray,
            '#ffffff', //9= white
        ]
    }

    var options = (function() {
        var res = {}
        for(var k in defaults) {
            res[k] = k in options ? options[k] : defaults[k]
        }
        return res
    })()

    var canvas = document.createElement('canvas')
    canvas.width = options.width
    canvas.height = options.height
    options.parent.appendChild(canvas)

    var canvasContext = canvas.getContext('2d')
    canvasContext.font = options.font
    clear()

    // private

    function clear() {
        canvasContext.fillStyle = options.colors.background
        canvasContext.fillRect(0, 0, options.width, options.height)
        canvasContext.strokeStyle = options.colors.axis
        var ch = Math.round(0.5 * options.height)
        canvasContext.beginPath()
        canvasContext.moveTo(0, ch)
        canvasContext.lineTo(options.width, ch)
        canvasContext.stroke()
        var cw = Math.round(0.5 * options.width)
        canvasContext.beginPath()
        canvasContext.moveTo(cw, 0)
        canvasContext.lineTo(cw, options.height)
        canvasContext.stroke()
    }

    function tx(x) {
        // Translate x in -1..1 to a coordinate on the canvas
        var r = 0.5 * options.width
        return Math.round(r * (1 + x / options.scale_x))
    }

    function itx(x) {
        // Translate x in 0..width to a -1..1
        return (x / (0.5 * options.width) - 1) * options.scale_x;
    }

    function ty(y) {
        // Translate y in -1..1 to a coordinate on the canvas
        var r = 0.5 * options.height
        return Math.round(r * (1 - y / options.scale_y))
    }

    function ity(y) {
        // Translate y in 0..height to a -1..1
        return (- 1 - y / (0.5 * options.height)) * options.scale_y;
    }

    function tr(r) {
        var hr = 0.25 * (options.width + options.height)
        var s = 0.5 * (options.scale_x + options.scale_y)
        return Math.round(hr * r / s)
    }

    function color(idx) {
        var c = options.palette[idx] ? options.palette[idx] : options.palette[0]
        canvasContext.fillStyle = c
        canvasContext.strokeStyle = c
    }

    // drawing

    var prev_point = null;

    this.setPoint = function(x, y, c) {
        color(c)
        if(prev_point) {
            this.addLine(prev_point.x, prev_point.y, x, y, c)
        }
        prev_point = { x: x, y: y }
    }

    this.addString = function(x, y, s, c) {
        color(c)
        canvasContext.fillText(s, tx(x), ty(y))
    }

    this.addLine = function(x1, y1, x2, y2, c) {
        color(c)
        canvasContext.beginPath()
        canvasContext.moveTo(tx(x1), ty(y1))
        canvasContext.lineTo(tx(x2), ty(y2))
        canvasContext.stroke()
    }

    this.addCircle = function(x, y, r, c) {
        color(c)
        canvasContext.beginPath()
        canvasContext.arc(tx(x), tx(y), tr(r), 0, 2 * Math.PI)
        canvasContext.stroke()
    }

    this.resetSize = function(scale_x, scale_y) {
        clear()
        options.scale_x = scale_x
        options.scale_y = scale_y
    }

    this.reset = function() {
        clear()
        options.scale_x = defaults.scale_x
        options.scale_y = defaults.scale_y
    }

    // mouse

    var click_coordinates = {
        x: 0,
        y: 0
    }
    var waiting_for_click = null;

    this.waitForClick = function(callback) {
        if(options.context.display) {
            if(window.quickAlgoInterface) {
                window.quickAlgoInterface.displayError(options.context.strings.messages.clickCanvas);
            } else {
                $("#errors").html(options.context.strings.messages.clickCanvas);
            }

            options.context.runner.waitEvent(callback, canvas, 'click', function(e) {
                var rect = canvas.getBoundingClientRect();
                click_coordinates.x = itx(e.clientX - rect.left);
                click_coordinates.y = ity(rect.top - e.clientY);
            });
        } else {
            // Assume all clicks are in the center
            click_coordinates.x = 0;
            click_coordinates.y = 0;
            options.context.runner.noDelay(callback);
        }
    }

    this.getX = function() {
        return click_coordinates.x
    }

    this.getY = function() {
        return click_coordinates.y
    }

    // may be required in future

    this.destroy = function() {
        options.parent.removeChild(canvas)
        canvasContext = null
        canvas = null
    }
}

redpajama_set_name: RedPajamaGithub


A cantador of Catalan Pyrenees, cant redoblat of Ibiza, a brotherhood of Corsica, a muezzin in Cairo, a versador de cant d'estil of València, and a watermelon seller of Alexandria, express the values of culture with the voice. These chants of oral tradition tell us the Mediterranean lifestyles. The collective consciousness is built over time and updated by the daily rituals. Knowing the non-writenn logic of these chants approaches us to meet the realities of this area.


Dariusz Golczewski brought home two gold medals as one of 10 students from Flemington's JSK Taekwondo Academy who competed in the 2013 New Jersey State Taekwondo Association state championships March 24 at Wardlaw-Hartridge School in Edison.
The JSK competitors earned 11 medals in the state event and all are eligible for the national championships to be held in Chicago in July.
Golczewski took first place in poomsae and sparring while another gold-medal winner was Candace Antkies in poomsae.
JSK's Christopher Atlivankin and John Kavouras came away with two second-place silver medals each in poomsae and sparring while Jeffrey Atlivankin took second place in poomsae and third in sparring for a bronze medal.
Silver medals also went to Victoria Golczewski (breaking) and Madison Guy (poomsae) while also competing were Lauren Atkinson and Mandy Dietze. Atkinson also sang the national anthem to begin the tournament.
JSK Taekwondo also received a trophy as being one of the sport's top schools in New Jersey.
Sae Jang, the head master and owner of JSK Taekwondo Academy, has been appointed New Jersey's state team coach for the U.S. Junior Olympics and nationals.
For more information on JSK Martial Arts Academy, visit its website at www.jsktkdnj.com.


text:
'Listen to Europe,' Dublin tells UK MPs ahead of Brexit votes
Irish Prime Minister Simon Coveney addresses the 73rd session of the General Assembly at the United Nations in New York on September 28, 2018. (Photo by Angela Weiss / AFP)
Monday, January 28th, 2019 at World
LONDON • British MPs seeking to pressure Prime Minister Theresa May this week to renegotiate her Brexit deal should heed European Union (EU) warnings that it will not succeed, Ireland's foreign minister warned yesterday.
Simon Coveney (picture) said attempts by Brexit supporters to remove or set a time limit on a controversial "backstop" clause on the Irish border would never be accepted by Brussels.
"Listen to what people are saying in Europe," he told BBC television, saying May's Brexit deal was "a balanced package that isn't going to change".
"The European Parliament will not ratify a withdrawal agreement that doesn't have a backstop in it, it's as simple as that," he added.
Coveney was speaking ahead of another showdown between May and the House of Commons over Britain's withdrawal from the EU, which is scheduled for tomorrow.
MPs this month rejected the divorce agreement she struck with the bloc last year. On Tuesday night, in a series of votes on parliamentary amendments, they will set out what they want her to do next.
Some MPs want to delay Brexit or adopt a whole new strategy, but others are demanding changes to May's deal that they suggest could allow them to support it.
These focus on the backstop, an arrangement intended to keep open the border between the UK and Ireland by temporarily tying London to the EU's trade rules. May has already spent months trying to amend the backstop with no success, but has promised to return to Brussels if that is what her MPs want.
Health Secretary Matt Hancock denied Coveney's comments meant she could not succeed, telling the same BBC programme that he was taking a "negotiating position".
He said Dublin did not want Britain to leave the EU without a deal, which is the default position if MPs cannot reach agreement.
The European Commission last week conceded that without a deal, controls would be reimposed on the Irish border, which all sides have warned could undermine the Northern Irish peace process.
"The idea the EU and the Irish government would drive this process to a no-deal exit in order to try to achieve something which is intended to avoid no-deal Brexit, that is not going to happen," Hancock said.
Coveney repeated that Dublin would be open to amending an accompanying political declaration on future trading ties, to emphasise that the backstop may never be used.
The Sunday Times newspaper raised eyebrows by reporting that officials are looking at what powers they might need in the event of any civil disorder, including imposing martial law.
Hancock confirmed the government is looking at "all the options in all circumstances", but said martial law "isn't the focus of our attention".
Separately, May's office said it is considering extending House of Commons hours and cancelling MPs' week-long February holiday to make time to pass all the laws needed to prepare for Brexit. — AFP
May said to plan major Cabinet shake-up
EU-S'pore trade pact nears entry
Andrew Bailey named as Bank of England governor
UK lending slows on Brexit uncertainty
Big tobacco fumes over new EU salvo in cigarette smuggling war
Brexit's last chance before the voters take control


Salt is an essential element for life. The main subject of the painting is a salt crystal. It is so complex and beautiful, that it inspired me to create this painting to show you the perfect design of one element of our everyday life around us. On the background you can see a melting ice crystal, which also shows geometric forms. How beautifully designed our world by God.


text:
News Research for a healthy diet and a healthy planet
Research for a healthy diet and a healthy planet
42 research groups from eight countries will map the global food system, from farm to fork. The project will unite across research disciplines, from agricultural and health domains, and look at the links between food production, consumption, and public health. Photo: Anette Tjomsland.
Published: 20.08.2020 By: Anette Tjomsland
An international research project will map knowledge about the global food system. The project takes on a farm to fork approach, ranging from climate and sustainable food production, health and nutrition, to consumer behaviour.
SYSTEMIC is the name of the ambitious project, that will unite researchers and practitioners from different disciplines and different parts of the food system. The project participants will develop knowledge about cross-cutting solutions and identify knowledge gaps. The researchers aim to respond to how the global food system may be sustainably transformed. To do that, it is necessary to look at the links between food production, consumption, and public health.
Habtamu Alem, project coordinator and researcher at NIBIO, explains that the research area that focuses on the links between nutrition and health, as well as nutrition-related public health interventions, often falls into the gap between the agricultural and health domains.
SYSTEMIC will map the impact of climate change on the nutritional make-up of food. It all begins with soil. Photo: Anette Tjomsland.
"Institutes and researchers within these disciplines conduct research to achieve a sustainable and healthy food system, however, they don't know about each other's research and findings. Therefore, there is a need for integration to reduce repetition and use research resources more effectively, as well as facilitating knowledge exchange across disciplines. That's why this project is unique, I don't know about any similar project", says Alem.
He presented the project idea at a knowledge Hub network meeting arranged by the Joint Programming Initiative 'A Healthy Diet for a Healthy Life' (JPI HDHL). The idea was elected for a comprehensive application process, coordinated by Alem. Six months later the international consortium received funding, and the project will run from July 2020 till July 2023.
In this period SYSTEMIC will:
● Assess current technologies on their feasibility to address the food challenges
● Develop methods to assess trade-offs in support of decision and policymaking
● Identify knowledge gaps and research needs to funding agencies and governments
● Disseminate knowledge to industry, society, and policy, and develop and collate education and training tools
Do you ever think about where the food comes from, how it has been grown, processed, transported, and placed in the grocery store – before you chose to buy it, prepare it and serve it? The researchers in SYSTEMIC will examine how different parts of the food system may be transformed and propose sustainable and adaptive strategies, to ensure global food and nutrition security. Photo: Anette Tjomsland.
The overall aim of the SYSTEMIC project is to foster transnational and multidisciplinary collaboration and networking. The intention is to accelerate, further characterize and to manage the impact of climate change on the nutritional make-up of food, and to propose adaptive strategies and measures to ensure food and nutrition security.
"This is a vast multidisciplinary research project that will respond to a complex theme. It is not up to Norway or other countries to work out a sustainable healthy food system, the challenge is global, and we need multidisciplinary global solutions", says Alem.
Habtamu Alem
Research Scientist - Division of Food Production and Society
(+47) 907 81 274 habtamu.alem@nibio.no Office Location: Ås R9
The potential impact of the SYSTEMIC project involves contributing to achieving the Sustainable Development Goals number 2, 3, 12, 13 and 17.
The SYSTEMIC network (an integrated approach to the challenge of sustainable food systems: adaptive and mitigatory strategies to address climate change and malnutrition) brings together 42 research groups from the following eight countries; Spain, Portugal, Norway, Latvia, Italy, Germany, France, and Belgium. The project is coordinated by researcher Habtamu Alem in NIBIO.
The project is funded by the Joint Programming Initiative 'A Healthy Diet for a Healthy Life' (JPI HDHL). It consists of 26 member countries within and outside Europe. Together, they are working on the integration of research in the areas of food, nutrition, health, and physical activity, to help prevent or minimize lifestyle-related chronic diseases. Their governments are collaborating voluntarily to increase the impact of their research investment, minimise duplication of research effort within Europe, and to collectively enhance the insights needed to enable the transformation into a healthier, more sustainable society.
Healthy food for Africa
The main aim of the new project HealthyFoodAfrica is to improve nutrition in Africa. This will be done by strengthening the diversity, sustainability, resilience and connectivity of food systems.
International development research in times of COVID-19
The recent COVID-19 situation has posed challenges to many of NIBIOs international projects. It has however also fuelled several innovative ways to work remotely through digital applications, online tools and other methods.
Updated webpage for NIBIO's Centre for International Development
The Centre for International Development (CID) of the Norwegian Institute for Bioeconomy Research (NIBIO) aims to make NIBIO a more relevant and competitive player in international Research and development. The recently updated CID webpage provides information about our three regions of particular focus, and the ongoing initiatives.
Climate change affects the soil's ability to transport water
Soil has a complex structure that is intertwined by tiny holes and cavities. The larger ones are called macropores, which are vital in the transportation of water. Climate change could however alter macroporosity, leading to more flash floodings and soil erosion.


I have been using it for a while and I am getting good results.
This product is what I needed for my cholesterol and protection of my heart. You have the best price.
SalvTonic is an herbal cardiovascular microcirculation formula that provides multi-target protection for the heart and blood vessels. The action improves circulation and blood flow, lowers total cholesterol, reduces plaque formation, and improves risk of thrombosis – all factors that contribute to angina, heart attack, stroke, pulmonary embolism, many other vascular conditions and cold extremities. Danshen is found to inhibit leukocyte adhesion, H2O2 production, and albumin leakage through the vessel wall. 0In complementary action, Notoginseng, inhibits leukocyte adhesion and mast cell degranulation. Each herbal compound in this formula has it's own microcirculatory benefi ts reducing leukocyte-endothelium interaction and oxidative stress from Ischemia-Reprefusion-Induced injury. By increasing microcirculation, SalvTonic can reduce angina and diabetic complications. In Traditional Chinese Medicine, SalvTonic is the Natural First Choice to invigorate blood, improve blood stasis and alleviate pain in the chest due to stagnation of Qi and blood flow.
• Reduces platelet aggregation and adhesion. improves fi brinolysis, anti-coagulation.
Take 1 capsule three times daily. In cases of acute chest pain (angina), open 1 - 2 capsules and pour under tongue. For cardiovascular risk mitigation with the advice of a health care practitioner.


Welcome to Womble Waste – delivering waste management solutions to East Sussex. Whether you are an individual or a company, we hope that we can satisfy your waste management requirements from estimates through to collection, loading and ethical disposal and recycling. Other companies may claim green credentials, we aim to actually put them into practice.
Commercial Wheelie Bin supply & collection services.
If you like to get a quote or learn more about our waste collection and disposal services please contact us. You will be astonished in the savings you are able to make!


A total of 25 routes were launched by 16 airlines during the course of last two weeks, including Wizz Air commencing services from London Luton to Tallinn, Silver Airways starting an Orlando to Huntsville connection, and SalamAir beginning a Muscat to Kathmandu link.
A total of 25 routes were launched by 13 airlines during the course of last week, including Spirit Airlines adding nine new services to its network, Jetstar Japan inaugurating its 15th connection from Tokyo Narita, plus easyJet commencing two links to Spanish airports from France and Italy.
A total of 41 routes were launched by 19 airlines during the course of last week, including easyJet introducing Aarhus to its network, Qantas adding a second service to San Francisco, plus LATAM Airlines inaugurating its latest long-haul link from Sao Paulo Guarulhos.
A total of 10 routes were launched by nine airlines during the course of last week, including Air Seoul commencing operations on its latest city pair to Japan, Air Italy beginning its newest domestic sector from Milan Malpensa, plus Aerolineas Argentinas producing a second Punta Cana connection.
A total of 30 routes were launched by 14 airlines during the course of last week, including LATAM Airlines creating a connection between Cuzco and Santiago, Malindo Air expanding its route choice to China and Indonesia, plus SalamAir selecting Khartoum as its first African destination from Muscat.
A total of 45 routes were launched by nine airlines during the course of last week, including Frontier Airlines beginning 25 US domestic services, easyJet inaugurating its third route to Belgrade, plus Fly Corporate opening up its latest link from Brisbane to Dubbo in the Orana Region of New South Wales.
A total of 37 routes were launched by 17 airlines during the course of last week, including Malindo Air starting its latest domestic service from Kuala Lumpur, Beijing Capital Airlines adding another Moscow Sheremetyevo link, plus LOT Polish Airlines inaugurates a second Ukrainian service from Bydgoszcz.
A total of 23 routes were launched by 13 airlines during the course of last week, including LEVEL inaugurating its fourth route from its recently opened Vienna base, Arkia Israeli Airlines taking flight for Bangkok from Tel Aviv, plus Tigerair Taiwan making Saga its latest destination in Japan.
A total of 39 routes were launched by 21 airlines during the course of last week, including Delta Air Lines resuming service between Atlanta and Shanghai Pudong after a six-year hiatus, fastjet opening a second domestic route from Harare, plus Turkish Airlines inaugurating its latest sector to Kuwait City.
A total of 30 routes were inaugurated by 20 airlines during the course of last week, including China Southern Airlines going long-haul on new routes into London Heathrow and Rome Fiumicino, Cambodia Airways expanding from Phnom Penh, plus Philippines AirAsia adding an international spoke from Clark.
A total of 68 routes were inaugurated by 45 airlines during the past seven days, including Southwest Airlines adding two services to San Antonio, Tianjin Airlines commencing its latest route to Moscow Sheremetyevo, plus Emirates adding a new spoke to its South American network.
A total of 123 routes were inaugurated by 60 airlines during the past seven days, including easyJet introducing two new European airports to its network, United Airlines adding regional spokes to its Denver and New York Newark hubs, plus Virgin Australia Airlines inaugurating a second link to Hong Kong.