Like any on-again, off-again relationship, my long-time love affair with fast fashion is a complicated one. It feels like a million years ago when we met, but the more I got to know about fast fashion, I felt it just wasn't right for me. As I began to understand its detrimental social and environmental impacts (one viewing of The True Cost on Netflix is very enlightening), I've been trying my best to shop sustainably. I've always loved vintage and thrift shopping, but increasingly buying secondhand has become my true love and fast fashion, my mistress.
Like with any breakup, I'm trying to shift my focus onto the positive. Shopping smaller brands, especially on Instagram, brings me so much joy. I recently bought a top from Maison Cléo, which was £90 (the equivalent of two mid-range high-street tops) that I wear on repeat. Every time I pull it out, I love telling the story about chatting with the designer in my DMs. This kind of value is something I could never get from a quick high-street fix. I feel similarly about all of my vintage pieces, and I've channelled my love of shopping into hunting down the best pieces on Vestiaire Collective, eBay, or charity shops. I'm still careful about what I choose to invest in, but when I do, I relish the story that comes with each unique piece. In turn, I feel reluctant to get rid of one of these treasures when I do a wardrobe clearout.
I try not to judge myself in the rarer moments that I do shop fast fashion; the point is not to feel guilty, like I've failed or given in. I just try to ask myself why I am doing it; do I genuinely love the piece and will I wear it over and over? If I do shop on the high street, I try to take a step back out of the impulse of the moment by checking where the piece was made and what materials it's made from. If I'm shopping online, I wish list an item and try to return to it a week or two later to see how it feels. I am still reconciling my relationship with the high street, and below are the pieces I'm having a harder time quitting. Keep scrolling to see which pieces are the hardest to let go of and how I am hoping to change these habits.
My £7 gold hoops from H&M have been my go-to season after season. I've probably bought five or six pairs of them, having worn them until they turn green. Spending £100 on a proper pair (that won't infect my ears) has always felt like a bit much, but if I do the math, I've nearly spent as much on repeat buying the cheaper versions. I'm thinking about saving up for these Laura Lombardi hoops, which are made exclusively in raw or recycled metals.
Finding jeans that fit and felt good on me took so long there was a period of time when I just gave up on denim altogether. I finally found out that COS denim was my favourite thing on the planet, so it's become difficult to part with them. They are thinner than Levi's (the popular vintage denim choice) and fit my wide hips and small bum really nicely. As a result, I try to buy one pair a year, and it is my goal to spend time finding vintage or sustainable jeans that fit like these.
Every so often, I have a Carrie Bradshaw moment and think that a new pair of fabulous shoes will solve my problems. Without a Manolo budget, these episodes result in a new pair of heels from the high street that I wear once. My goal is to try curving that habit and investing in classic pairs (from sustainable or smaller designer brands where possible) to wear on repeat. If I am having a wacky shoe impulse, I'll try to buy vintage designer pairs so I can truly fulfill my Carrie Bradshaw moment.
Finding the best basics, like jeans, was a long journey for me and definitely the hardest to find secondhand for consistency and hygiene reasons. From underwear to basic tees, it's Marks & Spencer I love the most. In looking for sustainable options, Muji is the most sustainable on the high street, while brands like Fruity Booty and Base Range are sustainable brands we love for basics, though they are a bit more of an investment.
So much of being more sustainable in my shopping habits is about shifting my perspective, and the best way of achieving that has been keeping the conversation going. As fashion and shopping lovers, we're learning together that less really is more. If you have questions about what shopping more sustainably, be sure to join our Facebook community.


text:
AC/DC top rock earning chart with $67.5m
By Martin Kielty
last updated 20 September 2022
AC/DC top Forbes' annual rock earning chart after making $67.5 in the past year – ahead of Rolling Stones, Bruce Springsteen, Paul McCartney, U2 and Muse
Axl Rose fronts AC\/DC with Angus Young (Image credit: Getty)
AC/DC have topped business magazine Forbes' annual earning list for rock acts, after making an estimated $67.5 million between June 2015 and June 2016.
The Aussie giants racked up the equivalent of $185,000 every day in music, ticket and merchandise sales – despite enduring the losses of mainman Malcolm Young, drummer Phil Rudd and vocalist Brian Johnson, along with the impeding retirement of bassist Cliff Williams.
Their total is greater than the Rolling Stones, Bruce Springsteen, Paul McCartney, U2, Muse, Foo Fighters and the Dave Matthews Band's individual incomes, although all of them brought in more than $30m over the 12-month period.
TeamRock News In Brief July 13, 2016
Buyer's Guide: How to buy the best of AC/DC
Doug Aldrich 'would love to' work with David Coverdale again
Joe Perry collapse: Aerosmith guitarist 'better than we feared'
Forbes say: "The nearly half-century-old Scottish-Australian band hit a bump in the road when lead singer Brian Johnson had to drop out of their world tour due to a medical condition. But AC/DC found an incredible replacement – Guns N' Roses frontman Axl Rose, and so far, fan demand is undeterred.
"It's a long way to the top, but the group is right up there once again."
However, their total only put them in 17th position in the Forbes Global Celebrity 100 list, which has pop singer Taylor Swift at the top with $170m. The 100 best earners made a combined total of $5.1bn.
Forbes' calculations include information taken from a wide range of sources, but no private ones, and do not include deductions such as management and agent fees, production costs and other expenditure.
Forbes Magazine's top earners, June 2015-June 2016 – rock acts
AC/DC (17th overall) $67.5m
Rolling Stones (18th) $66.5m
Bruce Springsteen (24th) $60.5m
Paul McCartney (25th) $56.5m
U2 (30th) $55m
Muse (44th) $49m
Foo Fighters (46th) $48.5m
Dave Matthews Band (86th) $33m
AC/DC Rock Or Bust US dates 2016
Aug 27: Greensboro Coliseum, NC
Aug 30: Ft Lauderdale BB&T Center, FL
Sep 01: Atlanta Phillips Arena, GA
Sep 04: Columbus Nationwide Arena, OH
Sep 06: Cleveland Quicken Loans Arena, OH
Sep 09: Detroit The Palace, MI
Sep 11: Buffalo First Niagara Center, NY
Sep 14: New York Madison Square Garden, NY
Sep 17: Washington Verizon Center, DC
Sep 20: Philadelphia Wells Fargo Center, PA
The A-Z Of AC/DC
Freelance Online News Contributor
Not only is one-time online news editor Martin an established rock journalist and drummer, but he's also penned several books on music history, including SAHB Story: The Tale of the Sensational Alex Harvey Band (opens in new tab), a band he once managed, and the best-selling Apollo Memories (opens in new tab) about the history of the legendary and infamous Glasgow Apollo. Martin has written for Classic Rock and Prog and at one time had written more articles for Louder than anyone else (we think he's second now). He's appeared on TV and when not delving intro all things music, can be found travelling along the UK's vast canal network.
Fall Out Boy and Weezer among acts lined up for Beach Boys Grammy tribute
How Van Halen's debut album changed everything, by the guitarists it changed
Nirvana bassist Krist Novoselic once threw a TV out a hotel window in the sweetest way possible
Lemmy told us that Girlschool rocked and Lemmy was right
Steve Vai's Vai/Gash is a joyful throwback to simpler times

redpajama_set_name: RedPajamaCommonCrawl


Answer this question: Does your garage door meet the building codes for your county?
Like seatbelts in the 1960's and 1970's, it's difficult to get people to take advantage of an inexpensive way to make their family and themselves safer. Florida set up the guidelines, following Andrew to do just that.
For many, however, confusion has come out of the new building codes and people are not sure what to do to protect themselves. For this reason, we set up a garage door hurricane inspection program.
The program allows residents in areas vulnerable to hurricanes to have their garage door inspected to make sure it meets the building code for their area. If it does not, our inspector will tell you the wind load and small missile impact resistance you need to meet the building code depending on where you live.
Contact Precision Door Service to schedule a time for your free inspection.
This program is set up as public service. Taking advantage of this program is 100% free and 100% no obligation.
80% of residential hurricane wind damage starts with wind entry through the garage door.
Please call Precision Door Service to receive your free hurricane garage door evaluation - A professional technician will visit your house, inspect your garage door and let you know whether your door is hurricane ready.
For homes that need doors to be upgraded to Hurricane Garage Doors, we would like the opportunity to give you a free estimate on the upgrade but it is not necessary. This program was designed as a public service by Precision Door and its franchises. We hope you take advantage of this offer.


text:
Latest Brexit talks end with "considerable progress" but in dribs and drabs
Source: Xinhua | 2017-09-28 20:36:25 | Editor: huaxia
British Brexit Secretary David Davis (L) and European Union's chief Brexit negotiator Michel Barnier address statements prior to the fourth round of Negotiation on Brexit talks at the EU Commission in Brussels, Belgium, Sept. 25, 2017. (Xinhua/Ye Pingfan)
BRUSSELS, Sept. 28 (Xinhua) -- The 4th round of Brexit talks failed again to bring long-expected concrete results from both sides of the English Channel though Britain's Brexit Secretary David Davis told reporters Thursday in Brussels that "considerable progress has been made in issues that matters".
"Negotiation teams have drafted principles on common travel area between Britain and Ireland and have conducted constructive talks on details of Britain's financial responsibility after Brexit," said Davis at a press conference following the fourth round of the talks.
But for his part, EU chief negotiator Michel Barnier said, "We failed to agree on the continuous rule of EU court after Brexit and we are not there yet for concrete results and more works need to be done in next weeks and months."
The talks, the fourth of its kind, came on the heels of British Prime Minister Theresa May's high-profile speech in the Italian city of Florence spelling out Britain's plans to leave the EU.
In her speech on Friday, May proposed a two-year transition period after Britain leaves the EU in March 2019.
She also pledged that Britain would pay "fair share" into the EU budget, a hint that London would budge on the touchy issue of the "divorce bill".
Commenting on May's Brexit speech in Florence, Barnier said her speech had created a "new dynamic in talks".
Barnier, however, warned, "We will need several weeks, even several months, to be able to see sufficient progress on the principles of this orderly departure."
Back to Top Close
Xinhuanet
首页 时政 国际 港澳 台湾 财经 法治 社会 纪检 体育 科技 军事 文娱 图片 视频 论坛 博客 微博
Source: Xinhua 2017-09-28 20:36:25
[Editor: huaxia ]
Copyright © 2000 - 2016 XINHUANET.com


text:
package cn.javass.chapter6.web.controller.consumesproduces;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ProducesController {

    @RequestMapping(value = "/produces", produces = "application/json")
    public void response2(HttpServletResponse response) throws IOException {
        //①表示响应的内容区数据的媒体类型为json格式,且编码为utf-8(客户端应该以utf-8解码)
        response.setContentType("application/json;charset=utf-8");
        //②写出响应体内容
        String jsonData = "{\"username\":\"zhang\", \"password\":\"123\"}";
        response.getWriter().write(jsonData);
    }

    @RequestMapping(value = "/produces", produces = "application/xml")
    public void response3(HttpServletResponse response) throws IOException {
        //①表示响应的内容区数据的媒体类型为xml格式,且编码为utf-8(客户端应该以utf-8解码)
        response.setContentType("application/xml;charset=utf-8");
        //②写出响应体内容
        String xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
        xmlData += "<user><username>zhang</username><password>123</password></user>";
        response.getWriter().write(xmlData);
    }

}

redpajama_set_name: RedPajamaGithub


text:
Billy J Miller (Billy Abbott, The Young and the Restless)
The five men nominated in the Outstanding Supporting Actor shared several things in common: among the commonalities, none had won previously in the category, and all five have turned in extraordinary work that was anything but supporting.
Billy J Miller, who submitted this year's longest Emmy reel among all nominated performers, was awarded for his work in an It's A Wonderful Life-styled episode. Miller's character is shown how Genoa City would be different if he were not around -- and ultimately learns that his reckless behavior will one day kill him.
In total, Miller's Emmy reel clocked in at over 32 minutes, about the same length as the combined total of the reels of the other four nominees in the category.
"People asked me if I was nervous about this nomination. Well, yeah -- because of what it represents," Miller explained. "It's a tangible representation that if I have any talent at all, it's because of all my friends that I have made, from AMC to Y&R. You have a piece of my heart. Your hands have been on my shoulders, you've made me your family, and like any son of any family, I just wanna make you proud to have me among you."
Backstage, Miller seemed to have a hard time wrapping his head around his Emmy win.
"I went to film school and got to touch one of these. I was a videographer or something," Miller said with a reflective glance at his Emmy. "I was surprised to win. Bradford Anderson? C'mon. These guys are great. I'm really relatively new to the soap game. I'm in my third year -- one year at AMC and two years here [at Y&R]. I got lucky."
Miller also took some time to personally thank one of his co-stars: his on-screen brother, Peter Bergman.
"I get to work with great, legendary actors. Peter has helped me personally," Miller stated, noting that Bergman had helped him secure his job on The Young and the Restless. "He said 'I'd like have this kid have the job.' He is like an older brother. He's a great man."
Photo Credit: Kat Guarino/Soap Central
OUTSTANDING SUPPORTING ACTRESS
Julie Pinson (Janet Ciccone, As the World Turns)
A long time coming. That's how Julie Pinson described her very first Emmy win. The actress, a 13-year veteran of Port Charles, The Young and the Restless, and Days of our Lives had been nominated just once previously for a Daytime Emmy.
"It's been a long time coming, let me tell you," Pinson commented as she accepted her Emmy. "I would first of all like to thank all of the other ladies in this category because we all work so hard, and I think we all deserve this. So a shout-out to you chicks out there. And [As the World Turns executive producer] Chris Goutman, wherever you are, I love you. Thank you so much for my job. I know you tell me not to say that, but it's the truth -- I am here because of you."
"It's an amazing, amazing feeling. I haven't felt anything this amazing since... well, last night," Pinson remarked suggestively in the pressroom. "I'm humbled and I'm gonna miss As the World Turns. I think that I am standing up here because Chris Goutman gave me this amazing character of Janet Ciccone two years, and Michael Park, my acting partner, who I didn't get to thank because that clock goes really flippin' fast."
Pinson also admitted that she'd barely had enough time to thank her husband, soap vet and Emmy winner Billy Warlock.
"I had this whole beautiful thing set to say about my husband. How cute he is, and how great he is, and how good in bed he is... Well, anyway. I wasn't able to say any of that. And my husband has one [Emmy] at home already, so now they get to play together. His will be lonely no more."
The Emmy for the Outstanding Supporting Actress was the first award handed out during the telecast. The category featured three first-time nominees, and none of the nominees were previous Emmy winners.
Photo Credit: Kat Guarino/Soap Central and Dan J Kroll/Soap Central
» PART THREE: YOUNGER ACTOR AND ACTRESS
SPOILERS: B&B, DAYS, GH, and Y&R previews for the week of January 20
Beloved daytime stars honored in SAG Awards In Memoriam segment
DAILY RECAPS: Catch up on B&B, DAYS, GH, and Y&R
Soap writer shares details on OLTL vampire spinoff
Remembering AMC: Star shares heartfelt post about soap's would-be 50th anniversary
THE SCOOP! Find out what's ahead this week on B&B
Read the Two Scoops commentary
B&B #TBT RECAPS: What was happening the
GH, B&B star now writes for Parenting magazine
B&B's Katrina Bowden joins "very cool" werewolf film
AMC, B&B, and GH star Jacob Young to struggling fans: "You are not alone"
B&B's Denise Richards begins new project in Europe
The Best and Worst of The Bold and the Beautiful 2019 (Part One)
YEAR IN REVIEW: The worst soap opera storylines and plots of 2019
YEAR IN REVIEW: Thomas Forrester makes the list of buzziest soap opera returns of 2019
DAYS #TBT RECAPS: What was happening the
GH #TBT RECAPS: What was happening the
Y&R #TBT RECAPS: What was happening the


text:
Account Portal
Reduce privacy & security risk. Enable compliance.
In the cloud, on-premises, or across systems—protect your data no matter where it lives.
Learn MoreREQUEST A DEMO
Our experts are on it! We'll be in touch shortly to get you set up.
Let our experts guide your education transformation.
Protect your assets and enable scalable growth, no matter how the market is trending
Support operational agility and ensure compliance with the help of AvePoint's migration, management, and protection solutions.
Drive innovation and outcomes, from the exam room to the board room
Protect sensitive health information and ensure secure collaboration with AvePoint's security and governance framework.
Deliver productivity, from the factory floor to the corporate office
Support process automation, operational agility, and seamless collaboration with AvePoint's governance and management solutions.
Managed Services Providers
Sell Secure Collaboration with AvePoint
SaaS Solutions MSPs can take to the bank
Optimize your operations and grow profitability, from the stockroom to your online store
Streamline and secure productivity and collaboration across frontline workers, back-office employees, and your supply chain with AvePoint's comprehensive suite of solutions.
US Public Sector
US Public Sector Solutions
SharePoint & Microsoft Office 365 Data Management Software & Services for your Agency
Empower your agency to transform to the cloud and modern collaboration. Our data management solutions enable governance and compliance with the latest standards and regulations, without the extra IT overhead.
Advisory & Implementation
Advisory & Implementation Services
Best-Practice Planning & Implementation Workshops
Add an expert touch. Our interactive, one-day workshops will help guide you through the pitfalls of data governance, sustainable adoption, and migration.
Microsoft Teams Surge & Advisory
Microsoft Teams Advisory Services
AvePoint's at your service
You've got Microsoft Teams—we've got the tools, workshops and best practices to ensure your journey to—and through—Teams is smooth and hassle-free.
Migration as a Service
Let us do the dirty work.
Sure, we offer industry best products for migrating your Office 365 and SharePoint content. But why do it yourself when you can have someone do it for you?
Quick Start Product Services
Accelerated implementation of AvePoint's products & training.
Get professional installation, customized optimization, and hands-on training for our enterprise-level products.
Transform and Scale Power Platform
Migrate, manage, govern, and protect critical business apps, and flows with AvePoint's Power Platform solutions.
Deliver Online Exams Seamlessly
Conduct Secure Online Exams With Our Cutting Edge Proctoring Technology
Craft, monitor, and analyse online exams with confidence. Built on the latest Microsoft Technology to keep your students on track whether they're online or in-person.
SaaS & Hybrid Management
Microsoft 365 Archiving
Optimize Cloud Storage & Manage Information Lifecycles
Reduce storage costs and improve data quality and information management in Microsoft 365
The Leader in Multi-SaaS Backup
Cloud Backup Solution for Microsoft 365, Salesforce®, Dynamics 365, Azure Active Directory & Virtual Machines and Google Workspace
The leading solution to combat ransomware attacks, user errors or permission fiascos and ensure business resiliency.
Manage Microsoft 365 Licenses with Cense
Better insights and control for your Microsoft cloud licenses
Microsoft licensing causing confusion? Not sure whether you're under- or over-assigned? Having difficulty aligning your total license costs with business units, departments, or regions? Cense can help.
Enterprise Risk, Compliance, & Data Protection
Ultimate data protection—in the cloud or on-premises
Control and monitor how your data flows with automated controls for risk management, data classification, validation, audit, and protection.
Partner Intelligence Platform
Deliver Microsoft 365, Dynamics 365, Salesforce, and Google managed services with ease
Extend and differentiate your cloud services with migration, backup, security, and management products in a single, SaaS platform.
"Although the Company's first quarter is historically our slowest quarter, the Company has achieved significant growth. We reported strong first quarter results with subscription revenue growth of 49% year over year at the mid-point of the range," said Dr. Tianyi "TJ" Jiang, CEO of AvePoint. "Over the past two quarters we have made meaningful investments in scaling our go-to-market organization to accelerate growth and capture the significant market opportunity ahead. Our first quarter results continue the growth momentum we experienced in 2020 and combined with the ongoing ramp of our salesforce, gives us confidence in our outlook for 2021."
Preliminary First Quarter 2021 Financial Results
Total Revenue in the range of $38.4 million to $38.8 million, in line with our quarterly revenue expectation
Total ARR1 in the range of $128.0 million to $129.2 million as of March 31, 2021, up 32.6% year-over-year at the mid-point
Subscription Revenue in the range of $26.7 million to $27.0 million, up 49.3% year-over-year at the mid-point
GAAP operating loss in the range of $(11.9) million to $(4.1) million, representing GAAP operating margins of (31.0)% and (10.6)%, respectively
Non-GAAP operating loss in the range of $(1.9) million to $(1.5) million, representing non-GAAP operating margins of (4.9)% and (3.9)%, respectively
Cash, Cash Equivalents and Short-Term Investments of approximately $65.8 million as of March 31, 2021; Company remains debt-free
Based upon the Company's strong first quarter results, the Company is raising its revenue guidance for Fiscal Year 2021 to $194.0 million.
In addition, today AvePoint announced that the Board of Directors has authorized a share purchase program pursuant to which the Company may purchase up to $20.0 million of Apex Technology Acquisition Corporation (NASDAQ: APXT, "Apex") common stock until the date on which the SEC declares Apex's S-4 Registration Statement effective. The closing of the business combination remains subject to customary closing conditions, including SEC review and the approval of the shareholders of Apex and AvePoint. In light of the recent SEC statement regarding accounting and reporting considerations for warrants issued by Special Purpose Acquisition Companies, or SPACs, Apex, together with its advisors, is reviewing the terms of its warrants in order to determine the proper accounting treatment.
"This share purchase program demonstrates the Board's confidence in our future and our commitment to deliver value to our shareholders," said Dr. Jiang. "Our strong cash flow and balance sheet enable us to create value for our existing shareholders by reducing dilution associated with the proposed business combination at what we believe to be an attractive valuation."
Any purchases of Apex common stock pursuant to the share purchase program will be made in the open market or in privately negotiated transactions. The purchases will be conducted in compliance with the SEC's Rule 10b-18 and applicable legal requirements and will be subject to market conditions and other factors. AvePoint is not obligated to acquire any particular amount of Apex common stock and such purchases may be suspended at any time, at AvePoint's discretion.
About AvePoint
AvePoint enables customers to collaborate with confidence. Our data management solutions help our diverse, global customer base overcome complex transformation, governance, and compliance challenges in the Microsoft cloud. A five-time winner of the Global Microsoft Partner of the Year award, AvePoint offers the only full suite of SaaS solutions to migrate, manage and protect data in Microsoft 365. More than 7 million cloud users, including a quarter of the Fortune 500, rely on our solutions. Our SaaS solutions are also available to managed service providers, so they can better support and manage their small and mid-sized business customers. Our multi-tenant solutions are available from over a dozen distributors in more than 100 cloud marketplaces worldwide. For more information about AvePoint, visit https://www.avepoint.com.
About Apex Technology Acquisition Corporation
Apex is a special purpose acquisition corporation led by co-CEOs Jeff Epstein, the former CFO of Oracle, and Brad Koenig, the former head of Goldman Sachs' global technology investment banking team. For more information about Apex, visit https://apexacquisitioncorp.com.
Non-GAAP Financial Measures
To supplement AvePoint's consolidated financial statements presented in accordance with GAAP, the company uses non-GAAP measures of certain components of financial performance. These non-GAAP measures include non-GAAP operating income (loss) and non-GAAP operating margin. In order for AvePoint's investors to be better able to compare its current results with those of previous periods, the company has included a reconciliation of GAAP to non-GAAP financial measures at the end of this press release. These reconciliations adjust the related GAAP financial measures to exclude stock-based compensation expense. AvePoint believes the presentation of its non-GAAP financial measures enhances the user's overall understanding of its historical financial performance. The presentation of AvePoint's non-GAAP financial measures is not meant to be considered in isolation or as a substitute for its financial results prepared in accordance with GAAP, and AvePoint's non-GAAP measures may be different from non-GAAP measures used by other companies.
This press release contains certain forward-looking statements within the meaning of the federal securities laws including statements regarding AvePoint's preliminary financial results for the first quarter ending March 31, 2021, AvePoint's plan to purchase up to $20 million shares of Apex common stock pursuant to the Apex share purchase program, AvePoint's products and markets and expected future performance and market opportunities of AvePoint. These forward-looking statements generally are identified by the words "believe," "project," "expect," "anticipate," "estimate," "intend," "strategy," "future," "opportunity," "plan," "may," "should," "will," "would," "will be," "will continue," "will likely result," and similar expressions. Forward-looking statements are predictions, projections and other statements about future events that are based on current expectations and assumptions and, as a result, are subject to risks and uncertainties. Many factors could cause actual future events to differ materially from the forward-looking statements in this press release, including but not limited to: changes in the competitive and regulated industries in which AvePoint operates, variations in operating performance across competitors, changes in laws and regulations affecting AvePoint's business and changes in AvePoint's ability to implement business plans, forecasts, and to identify and realize additional opportunities, and the risk of downturns in the market and the technology industry. You should carefully consider the foregoing factors and the other risks and uncertainties described in the "Risk Factors" section of the registration statement on Form S-4 discussed below and other documents filed by Apex from time to time with the SEC. These filings identify and address other important risks and uncertainties that could cause actual events and results to differ materially from those contained in the forward-looking statements. Forward-looking statements speak only as of the date they are made. Readers are cautioned not to put undue reliance on forward-looking statements, and AvePoint and Apex assume no obligation and do not intend to update or revise these forward-looking statements, whether as a result of new information, future events, or otherwise. Neither AvePoint nor Apex gives any assurance that either AvePoint or Apex, or the combined company, will achieve its expectations.
No Offer or Solicitation
This press release shall not constitute a solicitation of a proxy, consent or authorization with respect to any securities or in respect of the business combination discussed herein. This press release also shall not constitute an offer to sell or the solicitation of an offer to buy any securities, nor shall there be any sale of securities in any states or jurisdictions in which such offer, solicitation or sale would be unlawful prior to registration or qualification under the securities laws of any such jurisdiction. No offering of securities shall be made except by means of a prospectus meeting the requirements of the Securities Act of 1933, as amended, or an exemption therefrom.
Important Information for Investors and Stockholders
This press release relates to a proposed transaction between AvePoint and Apex. In connection with the proposed transaction, Apex has filed a registration statement on Form S-4 with the SEC, also includes a document that serves as a prospectus and proxy statement of Apex, referred to as a proxy statement/prospectus. A proxy statement/prospectus will be sent to all Apex shareholders. Apex will file other documents regarding the proposed transaction with the SEC. Before making any voting decision, investors and security holders of Apex are urged to read the registration statement, the proxy statement/prospectus and all other relevant documents filed or that will be filed with the SEC in connection with the proposed transaction as they become available because they will contain important information about the proposed transaction.
Investors and security holders are able to obtain free copies of the registration statement, the proxy statement/prospectus and all other relevant documents filed or that will be filed with the SEC by Apex through the website maintained by the SEC at www.sec.gov. The information contained on, or that may be accessed through, the websites referenced in this press release is not incorporated by reference into, and is not a part of, this press release.
Participants in the Solicitation
Apex and its directors and officers may be deemed participants in the solicitation of proxies of Apex's stockholders in connection with the proposed transaction. Apex's stockholders and other interested persons may obtain, without charge, more detailed information regarding the directors and officers of Apex in the registration statement containing the proxy statement/prospectus which has been filed with the SEC.
AvePoint, Inc.
Erica Mannion, Sapphire Investor Relations, LLC.
ir@avepoint.com
1 AvePoint calculates annual recurring revenue ("ARR") at the end of a particular period as the annualized sum of: (1) contractually obligated Annual Contract Value from subscription and maintenance revenue sources from all customers with a contract duration exceeding three months, and (2) the product of the current month's monthly recurring revenue ("MRR") multiplied by twelve (to prospectively annualize subscription revenue). MRR is attributable to AvePoint's Channel business and includes contracts that may or may not be extended or renewed by AvePoint's customers. ARR also includes some recurring professional services revenue, such as recurring technical account management services.
2 AvePoint defines non-GAAP operating margin as non-GAAP operating income (loss) divided by revenue. AvePoint estimates GAAP operating margin for the three months ended March 31, 2021 in the range of (31.0)% to (10.6)% and (0.3)% for the three months ended March 31, 2020.
SOURCE AvePoint, Inc.
All product and company names herein may be trademarks of their registered owners.
Collaborate with Confidence. AvePoint provides the most advanced platform for SaaS and data management to optimize SaaS operations and secure collaboration. More than 9 million cloud users rely on our full suite of solutions to make them more productive, compliant and secure.
Cloud Products
Hybrid Products
Operational Governance
Thanks - We've received your submission.


Just before the end of November, tobacco companies finally started putting out their corrective statements. Senior US District Court of D.C. Judge Gladys Kessler ruled that the corporate tobacco companies Altria, R.J. Reynolds Tobacco, Lorillard, and Philip Morris USA were to start publishing accurate statements on the dangers of smoking cigarettes as well as the harmful effects nicotine has on the brain back in 2006. After more than 11 years of intentional stalling, a federal judge signed an order requiring the companies to start publishing these statements. Although the ads are just a boring black text on top of a white background with a fairly non-compelling voice over, the ads are to run on 3 major networks (NBC, CBS, and ABC) for the next year and will be costing the companies an estimated $30mil according to the Associated Press.
Uploaded by American Lung Association on 2017-11-30.
A Federal Court has ordered Altria, R.J. Reynolds Tobacco, Lorillard, and Philip Morris USA to make this statement about designing cigarettes to enhance the delivery of nicotine.
Second hand smoke kills over 38,000 Americans each year.
This comes after St. Paul city council voted 6-1 on the first of last month to restrict the sale of menthol cigarettes and all flavored tobacco to adult specific tobacco stores (following the Minneapolis ban in August) and 4-3 in liquor stores. This undoubtedly has been a very successful year in terms of forcing these crooked companies to be held accountable for their undeniably gross actions. Although there's definitely is more work that needs to be done, it is safe to say that we've come a long way in caring for the health of our marginalized loved ones.


Preparation Time: Preparation can take several hours, so that one ice cream layer can freeze before another is added.
1. To prepare the almond layer beat egg whites until stiff peaks form, gradually beating in the icing sugar, a spoon full at a time. Lightly beat the egg yolks and fold in the whites. Whip the cream with the almond essence until soft peaks form and fold into the egg mixture. Lightly oil a 20cm / 8 inch round cake pan. Pour in the almond layer mixture and smooth over the top. Cover with cling film and freeze until firm.
2.	To prepare the chocolate layer, beat the egg whites until stiff but not dry and gradually beat in the icing sugar. Whip the cream until soft and fold into the egg white mixture. Put the chocolate in the top of a double boiler over simmering water. Remove it from the heat and stir in the egg yolks. Combine cocoa and water and add to the chocolate mixture. Allow to cool and then fold into the egg white mixture. Spoon the chocolate layer over the almond layer and return, covered, to the freezer.
3.	To make the fruit layer, whip the cream until soft peaks form. Whip the egg white until about the same consistency as cream. Gradually add the icing sugar, beating well after each addition. Combine the two mixtures fold in the fruit and nuts. Spread this mixture on top of the chocolate layer cover and freeze until firm.
4.	To serve, loosen the cassata from around the edges of the pan with a small knife. Place a hot cloth around the pan for a few seconds to help loosen. Turn out onto a serving plate and cut into wedges to serve.
Preparation: Whisk the cream softly; over-whisking will cause it to separate. Whisk the egg whites in between each addition of sugar. If sugar is added too quickly, egg whites will not stiffen sufficiently.
Serving Ideas: Sprinkle the top layer of the cassata with more chopped pistachios and chocolate curls. Decorate with rosettes of whipped cream, if desired. Can be served with a fruit or chocolate sauce.


For use with Champagne Floor Corker to cap bottles.
Multi-function unit that is able to cork both champagne and straight corks, as well as cap a metal crown cap with optional crown cap adapter. Release lever must be against jaw housing when corking.
Deluxe, adjustable. 8 x 1 3/4 first quality corks recommended.
With this unit, thumb you will never need to buy another corker. Its all-metal construction will stand up to more than a lifetime of use. Fully adjustable, and it fits Bellissima bottles.
This corker makes corking bottles a pleasure! It automatically adjusts to the size of the wine bottle, and you can adjust the cork depth with a simple twist of the depth screw. Please not that it does not fit Bellissima bottles.


text:
Access Bank To Reward Customers With N12m In 4 Months
Access Bank Plc has said it will be rewarding its customers with millions of naira, smartphones and other amazing prizes in the AccessMore mega reward scheme.
This, it stressed, was part of its strategy to drive easy, effective and rewarding banking using its AccessMore mobile app.
According to the bank, N10 million to N12 million will be doled out to its customers between now and December 2022. The bank disclosed this to media during its first phase of the AccessMore Mega prize presentation which was held in Lagos.
Speaking at the presentation, head, Marketing and Communications, Access Bank, Chioma Afe, said the app was launched in 2020 as a way to encourage customers to use the app to make transactions due to the lockdown.
Afe noted that the bank saw increased patronage of the app and decided reward its customers by introducing the reward initiative in 2022.
"We kept it simple. We kept it in the app and we said, if you make N100 on the rewards, you can just quickly redeem it or we keep reminding you because it is available for you for a period of time. You can use it to offset bills such as light bills, Cable bills and so we saw customers do it consistently from 2020.
"So, in 2022, we decided to do something to reward our customers so that more people can tap into the rewards and see the benefits for them, especially to refer other customers and to give them something more.
"We pegged some money down and I think in total we will be giving out about N10 million to N12 million including the trip between now and December. Hence, we have cash prizes, gadgets, Iphones and other amazing prizes for our customers," she said.
Corroborating her, senior banking adviser, Retail Banking at Access Bank, Rob Giles, said that the first phase involved the bank rewarding about five customers with N100,000 and N1 million while adding that the grand prize winners will go to Dubai at the end of the year for a five days trip.
Giles explained, "The steps to take to enjoy rewards on the app are quite easy. Simply download the AccessMore app, register (signup) and opt into Access Rewards & Referrals on the app to get 100 points. Each complete referral you make earns you additional 100 points. Once you onboard 20 to 30 new people onto the AccessMore app, you get 2000 to 3000 points, respectively and this qualifies you for a chance to win cash prizes of up to N1 million.
"Customers can also stand a chance to win iPhone 13 phones, and other cash prizes of N100,000 and N50,000 and other amazing rewards. The great thing is, the more you transact, the more points you earn."
Tags: Access Bank To Reward Customers With N12m In 4 Months
UBA IS WELL POSITIONED TO MEET THE GROWING DEMAND OF ITS CUSTOMERS ACROSS AFRICA AND BEYOND – CEO
Drama As Herbalists Pour Blood On Kwara United Players Ahead Of Confederation Cup Match In Niger Republic ( VIDEO)


A local nonprofit that provides a home for neglected, abused and abandoned children in southern Nevada received help from a local company.
Findlay Toyota in Henderson presented a new 2014 Toyota Sienna van to St. Jude's Ranch for Children in Boulder City. It was all part of Toyota's 100 Cars for Good program.
The automaker gave away 100 cars to 100 non-profits over the course of 50 days. Winners were selected each day through voting on Facebook.
"We are a children's charity and so donations matter, not only in terms of cash donations, but in-kind donations such as this, is just priceless for us because we have 60 children that are on the move and this will really help us get them where they need to get to safely," Christine J. Spadafor St. Jude's Ranch for Children said.
St. Jude's Ranch for Children transforms the lives of abused, abandoned and homeless children and provides them with the tools they need for a brighter future.
St. Jude's Ranch for Children will be hosting its annual Community Easter Egg Hunt this weekend.
From 10 a.m. to 1 p.m. Saturday, the ranch will open its doors to families from around the community to enjoy a number of activities, including egg hunts, visits from the Easter bunny and games.
There will also be food and beverages available for purchase. Wristbands that allow access to all activities are just $10.
Besides the activities for kids, there will be a silent auction for several different prizes. The car museum, gift shop and chapel will also be open.
The money raised during the event will benefit the ranch which provides a home for abandoned, neglected and abused children from around southern Nevada.
As the holiday decorations come down a lot of people are probably trying to figure out what to do with Christmas and other holiday cards.
The St. Jude's Ranch for Children in Boulder City is accepting those cards for its recycling program.
The ranch takes in all kinds of cards, recycles them and packages them for resale. The money raised helps fund the ranch, which provides a home to neglected, abused and abandoned children in southern Nevada.
The program also helps kids in the ranch's care to learn entrepreneurial and life skills. According to organizers, the program has received nearly 1 million cards from around the world.
To see which kind of cards can be accepted, or to get the address for donation, go to stjudesranch.org.
St. Jude's Ranch for Children will host its sixth annual Night of Lights holiday event Saturday.
The holiday celebration is from 5 to 9 p.m. at the ranch, 100 St. Jude's Road in Boulder City. Admission is $25 for an all-access wristband, which includes food from the owners of Campione D'Italia Restaurant. Children under 3 are admitted for free.
Families will enjoy the lighted grounds of the ranch, carolers, arts and crafts activities, a s'mores dessert station and a silent auction.
Santa will be escorted to the event by the U.S. Secret Service. He set to arrive at 5:30 p.m. Children will get a chance to get a photo with Santa.
After Santa's arrival, Bay Area hip-hop artist Alonzao "Turf' Jones will take the stage for an amazing dance and music performance. Jones was a contestant on "America's Got Talent."
The Boulder City Elks Lodge will host the annual Gingerbread House Competition and Christmas Faire this weekend.
The event starts at noon on Saturday. Gingerbread houses will be for sale through a silent auction with proceeds benefitting Gingerbread House Miracle, Inc., which provides help to kids with medical and dental needs.
Unique Christmas items will be for sale. Children can enjoy story time. Cash prizes will be given out to the best gingerbread house.
The event will be open until 8 p.m. Saturday and then from 10 a.m. to 5 p.m. Sunday at the Elks Lodge, 1217 Nevada Highway.
For more information, go bcgingerbreadhouse.com.


"I THOUGHT THESE MIGHT FIT,' SHE STARTED, THEN BROKE OFF STARING AT HER NAKED BODY. HER PALE FACE, HER SKIN LIKE CREAM UNDER EVEY'S GAZE, FLUSHED SCARLET."
Mary was running away from a lifetime of abuse, looking only for a safe place to raise her children. Eveline had been rejected by her family, and was trying to start her life over. When chance threw them together, it was only a matter of time before the sparks of desire caught fire. But will their mutual attraction be enough? Only time will tell, as Mary attempts to embrace her...Innocent Passion.


If you are regular reader, you may notice that another recent post showed someone similarly posed. That post was about signaling strength during job interviews. So it pictured a young boy flexing his muscles. This post is about your accomplishment statement. And it's some pretty good career advice.
Today's photo shows someone who has just accomplished something great. In her case, the completion of her 365 day self portrait project that she shared on flickr.
I used this picture because writing a great accomplishment statement is just the beginning of the conversation about you. It is the result of a story you should be telling in your marketing documents. Stories that illustrate your impact in the world.
Writing a great accomplishment statement is a key step in the new job search strategy software (Helps you find the right job faster). Have you seen the intro video?
So there's a bigger story. And there's an element of passion. An energy about your great works in prior companies. And the better you do this, the better a hiring manager can envision you doing similar things for their department or company.
And the accomplishment statements you write are your way to engage the reader. So that you will be granted an interview. An audience to tell your stories and share your energy.
So they have to be good. Well written. They also have to be relevant and measurable.
Remember not to mix them up with your responsibilities. I shared this and other tips as part of the tutorial introducing my favorite resume and CV template.
1. Action: There's a great list of action verbs at Quint Careers. You can use a few of those or think up your own. But make sure that your leading words suggest movement, ownership and leadership.
2. Relevant Topic: What does your target company care about? What do you know about the role this person will play? With a solid knowledge of your likely audience, you can focus on the right topics.
3. Impact: You need a word here that clearly states what happened. In this case, something got reduced. And that is a good thing. Make sure the positive impact you had is clearly stated.
4. Key Metric: What was impacted? Make sure that metric is also relevant and measurable in the way your industry defines it. In an economy where budgets are heavily scrutinized, your ability to measure and report will be important. No matter what your role is in the company.
5. Benefit: An accomplishment statement needs numbers. Something tangible like a % increase/decrease, $ revenue up or $ cost down. And you can strengthen the benefit by adding a second short sentence to answer the "so what" question. In this case, you could add: "BENEFIT: Delivered new revenues 6 months sooner than expected." That's a nice surprise.
So, what if you charted out your key accomplishments like this? Sound like a lot of work? I'll bet if you do it for a few, you'll get the idea. And have this structure in your mind as you write or re-write the rest.
What are your favorite action words?
Or better yet, share (via a comment below) your best accomplishment statement and I'll give it a review.


text:
Home >> Assessment: Library Research & Statistics
Assessment: Library Research & Statistics
FSU Libraries use data to drive its decision making to improve access, services, and collections for the FSU population.
The following figures include library turnstile information pertaining to all entering students, faculty, staff, and visitors:
Strozier and Dirac were busiest during the month of October, with over 200,000 total visits throughout the month.
October was also the busiest month of the semester in terms of unique visitors, meaning that 38,159 separate individuals entered Strozier and Dirac.
During the Fall 2017 academic semester, Strozier and Dirac had an average number of 7,516 visits on Mondays and 7,526 visits on Tuesdays, the two busiest days of the week.
*The main library (Strozier) typically closes at 6pm on Fridays and reopens from 10am-6pm on Saturdays. It then opens again at 12pm on Sunday and continues to be open 24/7 until Friday. The science library (Dirac) is typically open from 8am-1am Monday through Thursday, closing at 5pm on Fridays. It reopens from 10am to 6pm on Saturdays and then once again at 1pm to 9pm on Sundays.
The busiest time of day for Strozier was between 12-1pm, when the library received an average of 310 people entering its doors. Dirac's busiest time of day was from 1-2pm, with an average of 205 visitors having entered.
Three of Strozier's and Dirac's busiest days were during the week before finals, noted by dates marked with an asterisk (*). The days in September were immediately following FSU's closure for Hurricane Irma.
Assessment Librarian
Assessment at Florida State University Libraries:
Assessment is primarily concerned with developing, administering, measuring, analyzing and disseminating qualitative and quantitative data on library use and services. These data contribute to a collective knowledge-base for understanding our customers, helping us make informed decisions about services, spaces and collections at FSU Libraries and demonstrate the impact and contributions to faculty and student success outcomes. Assessment is a collaborative and cross
departmental effort within the library, on campus, and beyond. It coordinates, collects, stores and disseminates data to local and national organizations, such as the Association of Research Libraries, the Association of College and Research Libraries, and National Center for Educational Statistics. The department exists to proactively consult and equip library staff with the knowledge, tools, and support needed throughout the research process and to be vigilant of new and innovative methods for data collection, analysis, and documentation.
A great university requires a great library.
Assessment Navigation
Assessment Home
ARL Statistics
2012-2013 ARL Statistics
LibQual
2012 LibQUAL+
Library Usage
Summary Statistics
User Studies
Past Annual Reports


Many individuals who be after the photo of baby pic in hd.
You are enable to download without charge by clicking the DOWNLOAD button under the photograph. It will be connected to a new page. Do right click on the photograph, then take save picture as… After that you are allowed to adjust the file name and the folder where you want to keep the file. Then click the save button.
Here are the other pictures interconnected to baby pic in hd, hope you like it.


text:
/* global describe, it */
/*eslint-disable no-unused-expressions*/
//noinspection BadExpressionStatementJS
'use strict';

var FtpWorker = require('../src/ftp-worker.es6.js');
var helpers = require('./helpers');
var sinon = require('sinon');
var chai = require('chai');
var expect = chai.expect;
var sinonChai = require('sinon-chai');
chai.use(sinonChai);
/*eslint-disable no-undef*/
var Promise = require('bluebird');
/*eslint-enable no-undef*/
var path = require('path');

describe('Worker', function () {
    describe('#constructor', function () {
        it('should explicitely set maxAge to null', function () {
            var worker = new FtpWorker({host: 'alala'});
            expect(worker.maxAge).to.equal(null);
        });

        it('should throw an error if connection.host is not provided', function () {
            function initializeWorkerWithoutHost () {
                return new FtpWorker({port: 21});
            }

            expect(initializeWorkerWithoutHost).to.throw(/No ftp host found at params/);
        });

        it('should store connection as inner property', function () {
            var connection = {
                host: 'example.org',
                path: '/path/to/my/dir',
                port: 80
            };

            var worker = new FtpWorker(connection);

            expect(worker.connection).to.deep.equal(worker.connection);
        });

        it('should instantiate inner ftp-client', function () {
            var FtpClient = require('ftp');
            var worker = new FtpWorker({host: '1'});

            expect(worker.client).to.be.an.instanceof(FtpClient);
        });
    });

    describe('#maxAge', function () {
        var worker;

        beforeEach(function () {
            worker = new FtpWorker({host: 1});
        });

        it('should be null by default', function () {
            expect(worker.maxAge).to.equal(null);
        });

        it('should allow to change with assignment operand', function () {
            worker.maxAge = 10;
            expect(worker.maxAge).to.equal(10);
        });
    });

    describe('#__judge()', function () {
        var worker;

        beforeEach(function () {
            worker = new FtpWorker({host: 1});
        });

        it('should always return false, if maxAge wasn\'t set', function () {
            var files = helpers.createSetOfDummyFiles(3);

            files.forEach(function (file) {
                expect(worker.__judge(file)).to.equal(false);
            });
        });

        it('should return true, if file date property is too old', function () {
            var file = {
                date: new Date('2012-05-19T00:00')
            };

            worker.maxAge = 10;

            expect(worker.__judge(file)).to.equal(true);
        });

        it('should return false, if file date is not too old', function () {
            var file = {
                date: new Date()
            };

            worker.maxAge = 3000;

            expect(worker.__judge(file)).to.equal(false);
        });
    });

    describe('#run()', function () {
        it('should return thenable object', function () {
            var worker = new FtpWorker({host: 1});
            sinon.stub(worker.client, 'connect');

            expect(worker.run()).to.respondTo('then');
        });

        it('should install listeners on FtpClient instance events', function (done) {
            var worker = new FtpWorker({host: 'ftp.mozilla.org'});
            var connectStub = sinon.stub(worker.client, 'connect');
            var onStub = sinon.stub(worker.client, 'on');

            worker.run(); // no need for asynchronous check

            expect(connectStub).to.have.callCount(1);

            expect(onStub).to.have.callCount(3);
            expect(onStub).to.have.calledWith('ready');
            expect(onStub).to.have.calledWith('error');
            expect(onStub).to.have.calledWith('end');

            connectStub.restore();
            onStub.restore();
            done();
        });

        it('should call ftp#connect() method', function (done) {
            var worker = new FtpWorker({host: 'ftp.mozilla.org'});
            var connectStub = sinon.stub(worker.client, 'connect', function () {worker.client.emit('end');});

            worker.run().then(function (result) {
                expect(result).to.equal(true);
                expect(connectStub).to.have.callCount(1);

                connectStub.restore();
                done();
            }).catch(done);
        });
    });

    describe('#__reapDirectory()', function () {
        var worker;

        beforeEach(function () {
            worker = new FtpWorker({host: 1});
        });

        it('should call __listDirectory once', function (done) {
            var listDirectoryStub = sinon.stub(worker, '__listDirectory');
            listDirectoryStub.returns([]);

            worker.__reapDirectory('/').then(function () {
                expect(listDirectoryStub).to.have.callCount(1);
                expect(listDirectoryStub).to.have.calledWith('/');

                listDirectoryStub.restore();
                done();
            }).catch(done);
        });

        it('should return thenable object', function () {
            expect(worker.run()).to.respondTo('then');
        });

        it('should call __processFile on every file that __listDirectory returned', function (done) {
            var files = helpers.createSetOfDummyFiles(5);

            var processFileStub = sinon.stub(worker, '__processFile', function () {return false;});
            var listDirectoryStub = sinon.stub(worker, '__listDirectory', function () {
                return files;
            });

            worker.__reapDirectory('/').then(function () {
                expect(listDirectoryStub).to.have.calledOnce.calledWith('/');
                expect(processFileStub).to.have.callCount(5).calledWith(sinon.match.object, '/');

                listDirectoryStub.restore();
                processFileStub.restore();
                done();
            }).catch(done);
        });

        it('should call itself recursively on child directories', function (done) {
            var entries = helpers.createSetOfDummyFiles(1);
            var dummyFolder = helpers.createDummyFolder();
            dummyFolder.name = 'tmp';
            entries = entries.concat([dummyFolder]);

            var listDirectoryStub = sinon.stub(worker, '__listDirectory');
            listDirectoryStub.withArgs('/').returns(entries);
            listDirectoryStub.withArgs('/tmp').returns([]);
            var reapDirectorySpy = sinon.spy(worker, '__reapDirectory');

            worker.__reapDirectory('/').then(function () {
                expect(listDirectoryStub).to.have.callCount(2);
                expect(listDirectoryStub).to.have.calledWith('/');
                expect(listDirectoryStub).to.have.calledWith('/tmp');

                expect(reapDirectorySpy).to.have.callCount(2);
                expect(reapDirectorySpy).to.have.calledWith('/');
                expect(reapDirectorySpy).to.have.calledWith('/tmp');

                listDirectoryStub.restore();
                reapDirectorySpy.restore();
                done();
            }).catch(done);
        });

        it('should return array of file processing results', function (done) {
            var entries = helpers.createSetOfDummyFiles(5);
            var dummyFolder = helpers.createDummyFolder();
            dummyFolder.name = 'tmp';
            entries = entries.concat([dummyFolder]);
            entries[0].date = new Date();
            var subFolderEntries = helpers.createSetOfDummyFiles(3);
            subFolderEntries[0].date = new Date();
            worker.maxAge = 500;

            var listDirectoryStub = sinon.stub(worker, '__listDirectory');
            listDirectoryStub.withArgs('/').returns(entries);
            listDirectoryStub.withArgs('/tmp').returns(subFolderEntries);
            var reapDirectorySpy = sinon.spy(worker, '__reapDirectory');

            var deleteFileStub = sinon.stub(worker, '__deleteFile', function () {
                return true;
            });

            worker.__reapDirectory('/').then(function (result) {
                expect(listDirectoryStub).to.have.callCount(2);
                expect(listDirectoryStub).to.have.calledWith('/');
                expect(listDirectoryStub).to.have.calledWith('/tmp');

                expect(reapDirectorySpy).to.have.callCount(2);
                expect(reapDirectorySpy).to.have.calledWith('/');
                expect(reapDirectorySpy).to.have.calledWith('/tmp');
                expect(result).to.eql([false, true, true, true, true, [false, true, true]]);

                expect(deleteFileStub).to.have.callCount(6);

                listDirectoryStub.restore();
                reapDirectorySpy.restore();
                deleteFileStub.restore();
                done();
            }).catch(done);
        });

        it('should pass list directory error on the level higher', function (done) {
            var listDirectoryStub = sinon.stub(worker, '__listDirectory');
            listDirectoryStub.throws(new Error('list directory error'));

            worker.__reapDirectory('/').then(function () {
                // o_O look, no error, ma!
                done(new Error('Test failed'));
            }).catch(function (err) {
                expect(err).to.not.be.an('undefined');
                expect(err.message).to.equal('list directory error');
                listDirectoryStub.restore();
                done();
            });
        });
    });

    describe('#__processFile()', function () {
        var worker;

        beforeEach(function () {
            worker = new FtpWorker({host: 1});
        });

        it('should call __reapDirectory on directory entry', function (done) {
            var reapDirectoryStub = sinon.stub(worker, '__reapDirectory');
            var dummyFolder = {
                name: 'tmp',
                type: 'd'
            };
            reapDirectoryStub.withArgs('/tmp').returns([]);

            worker.__processFile(dummyFolder, '/').then(function () {
                expect(reapDirectoryStub).to.have.callCount(1);
                expect(reapDirectoryStub).to.have.calledWith('/tmp');

                reapDirectoryStub.restore();
                done();
            });
        });

        it('should correctly generate path to child file of the folder', function (done) {
            var file = {
                type: '-',
                name: 'nyan_cat.jpg',
                date: new Date('2012-05-19T00:00')
            };
            worker.maxAge = 200;
            var deleteFileStub = sinon.stub(worker, '__deleteFile');
            deleteFileStub.returns(true);

            worker.__processFile(file, '/tmp').then(function (result) {
                expect(result).to.equal(true);
                expect(deleteFileStub).to.have.callCount(1);
                expect(deleteFileStub).to.have.calledWith('/tmp/nyan_cat.jpg');

                deleteFileStub.restore();
                done();
            }).catch(done);
        });

        it('should return false on files that are not too old', function (done) {
            var file = helpers.createSetOfDummyFiles(1)[0];
            file.date = new Date();
            worker.maxAge = 200;

            worker.__processFile(file, '/').then(function (result) {
                expect(result).to.equal(false);
                done();
            });
        });

        it('should call __deleteFile() on outdated files', function (done) {
            var files = helpers.createSetOfDummyFiles(10);
            var deleteFileStub = sinon.stub(worker, '__deleteFile');
            deleteFileStub.returns(true);
            worker.maxAge = 200;

            Promise.all(files.map(function (file) {
                return worker.__processFile(file, '/');
            })).then(function () {
                expect(deleteFileStub).to.have.callCount(10);
                files.forEach(function (file) {
                    expect(deleteFileStub).to.have.calledWith(path.join('/', file.name));
                });
                deleteFileStub.restore();
                done();
            });
        });
    });

    describe('#deleteFile()', function () {
        it('should not swallow file delete error', function (done) {
            var worker = new FtpWorker({host: 1});
            var deleteFileStub = sinon.stub(worker, '__deleteFile');
            deleteFileStub.throws(new Error('delete file error'));

            var file = {
                name: 'aaa',
                date: new Date('2012-05-19T00:00'),
                type: '-'
            };
            worker.maxAge = 1000;

            worker.__processFile(file, '/')
                .then(function () {
                    // o_O we shouldn't get here
                    done(new Error('Test error'));
                })
                .catch(function (err) {
                    expect(err).to.not.be.an('undefined');
                    expect(err.message).to.equal('delete file error');

                    deleteFileStub.restore();
                    done();
                });
        });
    });
});


text:
Exchange Team
Mission Group
Missio Mondays
Send Institute
World Evangelical Alliance
Global Network of Evangelists
SEND Podcast
Ed Stetzer Live
New Churches Podcast
Living in the Land of Oz
Wheaton College Billy Graham Center
Lausanne North America
January 19Ed Stetzer
Can You Be Both a Micro Church and a Large Church at the Same Time?
Celebrating Dr. Martin Luther King, Jr: Letters from a Birmingham Jail
January 16York Moore
Redeeming the Godly Work of Proselytization
January 15Ed Stetzer and Andrew MacDonald
Three Ways You Can Engage Your Neighbors
When Will Churches Be Back? Vital Information for Churches and Christian Leaders
September 24, 2017Culture
Kaepernick, Speech, and a Job: The Cleat May Soon be on the Other Foot
Free speech is important, but is it always helpful, and how does it relate to employment?
Image: Copyright Ostill via shutterstock.com
Be sure to read responses to this article from John Richards, Charlie Dates, Michael Lee, and Stacy Hilliard, as well as a follow up from me.
Free speech can be quite controversial.
But this shouldn't be surprising. If we all agreed on everything, we wouldn't need the First Amendment. Unpopular speech is why we have the First Amendment. And, let me be clear, Colin Kaepernick was exercising his First Amendment right when he kneeled during the national anthem.
Yesterday, President Trump exercised his right to speak out when he called on NFL owners to release players who took a knee during the anthem. And when the president called on fans to boycott NFL football, that was still about citizens exercising a right.
So, none of these things are illegal. But the question is, Are they helpful?
To be honest, I don't know much about football. Google only recently told me that Kaepernick is a quarterback. He has been protesting what he sees as racial injustice in America by kneeling during the national anthem.
Protests and Patriotism
Now, let me say, I'm not a big fan of "totalizing" protests—the national anthem is a symbol of many things and so much of that is good. Furthermore, the flag and the anthem represent the sacrifice of many who have fought and died for freedoms, including the freedom of speech we are discussing today. As such, I do find such protests disrespectful.
However, I do not have to be a fan of the protest to reflect on the president's comments and how Christians might react. So here are a few ways we might respond to what is now a national conversation surrounding Kaepernick and President Trump.
How Might We Respond?
First, the response of many African Americans (including fellow Christians) should give us pause to reflect on their response.
Sure, I get it. Like me, many of you are offended by people who dishonor the flag and the anthem. Patriotism is important to me, and we even read the Declaration of Independence at our house on July 4. And we stand for the anthem because we are thankful for this country.
Yet, if you saw the news earlier today, you saw many African American players kneeling, joining Kaepernick in what many see as an un-patriotic moment. This protest was initially only a few players, but in the wake of President Trump's comments, we have seen a growing number of African Americans speaking out on social media and on the football field in defense of those who took to their knees.
Leading athletes who typically avoid controversy have spoken passionately in support of peaceful protest. Benjamin Watson, a well-known evangelical player with his own author page at the Gospel Coalition, tweeted:
At this time engagement is paramount. Divisions are restored by listening and acting. Divisions are widened by name calling and dismissing.
I've published literally tens of thousands of words about the concerns Kaepernick raises, so I encourage you to take a moment to get beyond the protest and consider the issues.
For many white evangelicals, our first reaction to these protests might be confusion or, worse, anger. But when a community speaks as quickly and in unison about their pain, frustration, and fear, we are obligated—by our love for the Body of Christ and by our mission to bring the love of Christ to all—to stop first and tweet later.
In light of this calling, our first action before reaching for Twitter or switching the channel is to reflect in prayer on the causes behind these reactions. Then, we should ask how we can act.
Second, we should ask if the responses here are helpful.
Yes, everyone here has the right to speak. This includes Kaepernick and the president. But we need to ask, Are their words and actions helping?
Fundamental to patriotism is the belief in free speech—it's part of why soldiers have fought and died in defense of this American experiment. And before the leader of the free world became involved, it was just that—a protest of racial injustice. For what it's worth, I thought it an unhelpful protest, but it is one that has happened before and the republic has survived.
Regrettably and unnecessarily, President Trump's comments have further divided the country, since this is not simply a protest about football, but about race. Kaepernick was an unsigned quarterback yesterday. This simply did not need a response from the president.
Yesterday, Marc Short indicated that the "The president believes it is his role to improve race relations." Whether you agree or disagree with the president's comments, this did not help that cause.
Third, yes, this is unpopular speech, but it is worth remembering that Christians have some unpopular speech as well.
This might be a time to "do unto others as we want done unto us."
Perhaps an evangelical-focused hypohetical might help. Consider if Hillary Clinton were president and she called out professors for having a discriminatory (what evangelicals call "biblical") view of marriage, encouraging universities to fire people who hold such beliefs, and to boycott schools that hold such doctrines.
I am not saying this would have happened. However, looking at current cultural trajectory, and how dissenters are being treated (see examples below), it would not be hard for some to imagine such a scenario—which may help illustrate the point to my fellow evangelicals.
And, might I add, if she were to do this, President Hillary Clinton would have been exercising her free speech.
So, everyone here has a right to do what they are doing. But again, let's ask, Is it helpful?
Simply put, do we really want to force people to lose their jobs because we disagree with them?
If current trends continue, Christians will be penalized for their speech soon enough. Actually, some already have been. This is one of the great issues of religious liberty right now. Most of these realities, however, have to do with employment or businesses—so don't miss this.
The president of Mozilla lost his job, British politicians have been forced to resign, and bakers and florists have lost their livelihood.
Why? Well, they didn't kneel to the prevailing views of the day.
So, ultimately, the question is, Can we hold an unpopular opinion and keep our jobs?
If you don't think that's an issue, you have not been paying attention to the recent religious test debates.
A Better Way
I think we all want to live in a country where presidents and politicians are not going after certain groups of people and targeting their employment due to the unpopularity of their beliefs.
I understand (and actually agree) that Kaepernick's approach was not helpful. There is a time and a place for peaceful protest in civil society. However, his selection of time and space during the singing of the national anthem—moments set aside to honor the sacrifice of countless patriots—was an unwise choice. (And, thankfully, you can have a different opinion.) However, it appears that almost all other players agreed—until the president started calling for people to be fired.
As a patriot, I defend the right of people to peacefully protest by simply taking a knee.
So, before you disagree, NFL fans can do what they want. And the president can say what he wants.
But before you cheer on his words while tearing down the words of others, keep in mind that speech is free even when it's unpopular. And that, depending on the circumstances, unpopular speech is sometimes your speech and related to your job.
In other words, the cleat may soon be on the other foot.
John Richards, who works with me at the Billy Graham Center, took exception to my post.
Charlie Dates, a friend and local pastor, said I missed an important reality.
Michael Lee, who also works with me, explained the symbols involved.
Stacy Hilliard is a friend, retired marine, former police officer, and pastor.
I wrote a follow up article to explain why disagreement is important.
Ed Stetzer holds the Billy Graham Distinguished Chair of Church, Mission, and Evangelism at Wheaton College, is executive director of the Billy Graham Center, and publishes church leadership resources through Mission Group.
The Exchange with Ed Stetzer (Weekly)The Exchange newsletter is a weekly digest of coverage, research, and perspective from Ed Stetzer.
CT Books (Weekly)Each issue contains up-to-date, insightful information about today2019s culture, plus analysis of books important to the evangelical thinker.
Get weekly updates from The Exchange delivered to your inbox.
The Exchange is a part of CT's Blog Forum. Support the work of CT. Subscribe and get one year free.
The views of the blogger do not necessarily reflect those of Christianity Today.
More from The Exchange
January 13, 2021Interviews
A brief overview of Ed Stetzer's interview with Dr. Francis Collins, Director of the National Institutes of Health
November 6, 2019Culture, Humor, Leadership
John Crist, Failure, and Warnings to Heed for Christian Leaders
Heed the warning. Run toward holiness. Rest in Christ.
Ed Stetzer and Laurie Nichols
March 2, 2019Culture, Humor
More Church Signs!
We are getting back into the groove of posting some good church signs.
January 19, 2021Revitalization
Rethinking the downward structure of church in a global pandemic.
Kaepernick, Speech, and a Job: The Cleat May Soon ...
The Exchange:
EdStetzer.com
Sign Up For Our Newsletter The Exchange newsletter is a weekly digest of coverage, research, and perspective from Ed Stetzer.


Annemarie Selinko's last novel: Desiree has become my top favourite 18th c HF read- without a doubt. The story of Eugenie Desiree Clary, Napoleon Bonaparte's first love is in my opinion one of the best novels ever written pertaining to the Revolution era- in terms of history, romance, historical characters, and impeccable writing style. This book kept me captivated from beginning to end. And- the funny thing is that I read this intermittently due to other priorities, so I naturally thought I'd for sure lose momentum and interest. This never happened and when I finally finished the book, I almost felt the parting sadness when losing a dear friend.
The story begins with Desiree writing the story of her life through a journal given to her by her father, prior to his death. The daughter of a fabric merchant, Desiree, was unpretentious, straight forward and incredibly brave and loyal in love, honour, friendship and family. Her strength of character (even when she didn't feel quite up to it...) was incredible. From the very beginning we can see her determination when it came to saving the raggedy young Napoleon at the beginning of his career. I loved reading about their romance and meager beginnings...all the short way upto his unfaithfulness and hurtful betrayal to leave Desiree for Josephine. This though, would not be the end of their encounters.
Throughout their lives, Desiree would always play an important role in Napoleon's life-not amorously, but with extended family and politically. Her attachment to the Bonaparte family, by the marriage of Napoleon's brother to Desiree's sister- and politically through her husband's (Bernardotte) importance (he first fought along Bonaparte's side and then became the King of Sweden). The history is impeccable and the story told with the perfect blend of simplicity and grandiose royal style (yes, it's possible).
I loved that Desiree's life entertwined Josephine's and her family- along with all the Bonaparte's and other significant historical characters (Fouche, for one). The novel takes us through their lives as well, giving a different perspective- and not just passing glimpses. But, most definitely, what I loved the most was the way Desiree always stood up to Napoleon. We encounter moments of truthful courage where Desiree speaks her opinion frankly and keeps her head high- even though she is terrified inside...others would have surely perished at the hands of Bonaparte for this behaviour- but not Desiree. This too showed us a side of Napoleon that remained loyal and respectful of the bond and young love they once shared. The book is filled with precious moments.
And what more of this brave girl...Desiree becomes part of Royalty herself; so for those who don't really know that part of history, I won't spoil it for you. I could go on forever about this book: Desire's regular-girl-achieving-great-things personality, her love for her husband, the King of Sweden, Bonaparte's wins and defeats, Josephine's other side, the Bonaparte family, Desiree's business and Royal side, the losses, the pain, the trials and triumphs and some of the funniest moments as well...It's all just too good.
Desiree is a spectacular book, and I HIGHLY recommend it.
WINNERS of my French Historicals Oh-La-La! Challenge!!!
I'm beginning the week with the Announcement of my French Hisoricals Oh-La-La! Challenge WINNERS!
To begin with I'd like to say Thank You to everyone who joined:) I loved reading all your reviews and thanks for bringing light to some fascinating new reads for me as well.
If you'd like to see the list of all the participants and the number of books they've read- please see here.
AND NOW...WITHOUT FURTHER ADO... Here are the names and results of the participants who have attained the levels required for my Challenge Giveaway!!
EMAIL Me your address please!!
This incredible lady has read way over the 9 Books required for this level.
Amber from Treasure for Your Pleasure; A Marie Antoinette Blog has read ...Are you ready for this????
Heloise and Abelard, by George Moore -----1925. It is in mint condition (there's also an antique looking signature at the front) and I am offering it to you because I absolutely know it will go to a true lover of French history. I LOVE This book and I know it will be appreciated and treasured in its new home. Email me with your contact info.
CONGRATULATIONS TO ALL!!! Again, THANK YOU so much for participating!!!


text:
Taking the Heat: How Climate Change Is Affecting Your Mind, Body, and Spirit and What You Can Do About It (Paperback)
By Bonnie Schneider
Temporarily Out Of Stock - Can Be Ordered For You, Takes Extra Time.
From meteorologist and Peabody Award–winning journalist Bonnie Schneider, an innovative look at how climate change is already threatening our mental and physical health and practical tips for you to tackle these challenges head on.
The impacts of climate change have become dire. Rising temperatures, volatile weather, and poor air quality affect our physical and mental health in dangerous new ways. From increasing the risk of infectious disease to amplifying emotional stress and anxiety—even the healthiest among us are at risk. Bonnie Schneider has tracked environmentally-linked physiological impacts throughout her career as a TV journalist, meteorologist, and the founder of Weather & Wellness©—a platform that explores the connection between weather, climate change, and health. In Taking the Heat, Schneider provides crucial advice from science experts and medical professionals to help you:
-Cope with the mental anguish of "eco-anxiety" and other climate change fears for our planet's future, particularly expressed by millennials and Gen-Z
-Identify health hazards caused by extreme heat and air pollution that disproportionally affect low-income and minority communities
-Uncover the science behind longer and stronger allergy seasons and learn new ways to reduce your risk of adverse allergic reactions
-Detect the increased threat of dangerous pathogens lurking in unexpected places and why we may face future pandemics
-Understand how seasonal fluctuations of sunlight, heat, and humidity can not only factor into feelings of depression and anxiety but also can trigger flare-ups for certain auto-immune diseases
-Discover how meditation and mindfulness practices can ease the psychological stress that often occurs in the aftermath of devastating natural disasters
-Explore how the Earth's rising temperatures may rob you of restorative sleep and impair mental sharpness
-Learn why increased levels of CO2 in the atmosphere may reduce the availability of what you choose to eat; learn sustainable solutions—from food to fitness
Anchored in the latest scientific research and filled with relatable first-person stories, this book is the one guide you need to navigate the future of your own health—mind, body, and spirit, in a rapidly changing environment.
Bonnie Schneider is a national television meteorologist based in New York City, appearing on MSNBC/NBC News and Yahoo! Finance. She created the platform Weather & Wellness©, successfully launching its original video content focusing on climate change and health for New York-based Newsday's digital site. Bonnie connects with her fans and answers their weather questions through Facebook, Twitter, and Instagram. Bonnie has provided on-camera insight and expertise on everything from hurricanes to snowstorms for CNN, HLN, Bloomberg TV, and The Weather Channel.
"For those interested in staying well while the planet changes, this is a must-read." -Publisher's Weekly
"Bonnie Schneider has crafted a powerful playbook for the toll of the climate crisis on human well-being. Her focus on the correlation between human and planetary resiliency is refreshing and practical. She explores how meditation, for example, cultivates the necessary skills to cope with, thrive in the face of, and even combat the harrowing challenges of our times. Without presence of mind, how can we become better stewards of our bodies and planet? Taking the Heat offers immediate solutions to these urgent questions." —Amy Reyer, PhD, author of the blog The Art of Living Slowly
"Bonnie Schneider's Taking the Heat details how climate change impacts the things we care about—our health, our children—and provides resources to help us build a more just, sustainable world." —Gaurab Basu, MD, MPH, codirector of the Center for Health Equity Education and Advocacy and instructor at Harvard Medical School
Publisher: S&S/Simon Element
Health & Fitness / Healthy Living & Personal Hygiene
Science / Global Warming & Climate Change
Kobo eBook (January 24th, 2022): $13.99
Compact Disc (January 25th, 2022): $34.99