text:
Q: java.io.IOException: BufferedInputStream is closed when calling soap webservice and the resulting json is too long i am creating an app on Android 4.4.2 and uses ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar that calls a soap web service and recieves json in response. The app works fine if the json is in small size but whenever the json in larger in size, the code gives java.io.IOException: BufferedInputStream is closed. plese help.
here is my code for web service
public class SoapWebservice {
private static final String NAMESPACE   = "http://schemas.xmlsoap.org/soap/encoding/";
 private static final String URL = "http://staging.utzcertified.org/webservice.php?wsdl";
 private static final String SOAP_ACTION = "AddServicePortType";

 private static String return_string = "No response";

    /**
     * This method return Producer List from barcode & details in JSON string format.
     * Scanner class invoke this method
     * */

    public static String returnProducersFromBarCode(DotNetWebService activity, int id,String barcode,String device,String language){
        Log.i("Function Name","returnProducersFromBarCode");
        Log.i("Parameters","Member ID:"+id+",Barcode:"+barcode+",Device:"+device+",Language:"+language);

        String METHOD_NAME = "returnProducersFromBarCode";
        SoapObject soapRequest = new SoapObject(NAMESPACE,"returnProducersFromBarCode");

        soapRequest.addProperty("a", id);
        soapRequest.addProperty("b", barcode);
        soapRequest.addProperty("c", device);
        soapRequest.addProperty("d", language);

        SoapSerializationEnvelope soap_envelope  = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soap_envelope.setOutputSoapObject(soapRequest);
        soap_envelope.encodingStyle = SoapEnvelope.ENC;

        //HttpTransportSE androidHttpTransport = new HttpTransportSE(URL, 2000000000);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.debug  = true;
        SoapPrimitive   soapResponse  = null;
        try {
            System.setProperty("http.keepAlive", "false");
            soap_envelope.setAddAdornments(false);
            androidHttpTransport.call(SOAP_ACTION,soap_envelope);
            Log.i("SoapWebServier-soap_envelope:",""+soap_envelope.getResponse());

            soapResponse =  (SoapPrimitive) soap_envelope.getResponse();

            Log.i("SoapWebServier-soap_response:",""+soapResponse.toString());

        }catch (XmlPullParserException e){

            e.printStackTrace();
            return null;
        }catch (IOException e){

            e.printStackTrace();
            return null;
        }
        if(soapResponse != null){
            return_string =  soapResponse.toString();
            }
        return return_string;
    }

}
i am calling its method in my activity in async task
 private class AsyncCallWS extends AsyncTask<Void, Void, Void> {
        @Override
        protected Void doInBackground(Void... params) {
            Log.i(TAG, "doInBackground");
            int id = 106;
            String barcode = "3456789012340";
            String device = "Mobile";
            String language = "en";
            //Call Webservice class method and pass values and get response
            String aResponse = SoapWebservice.returnProducersFromBarCode(DotNetWebService.this , id, barcode, device, language);
            Log.i("AndroidExampleOutput", "----"+aResponse);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            Log.i(TAG, "onPostExecute");
        }

        @Override
        protected void onPreExecute() {
            Log.i(TAG, "onPreExecute");
        }

        @Override
        protected void onProgressUpdate(Void... values) {
            Log.i(TAG, "onProgressUpdate");
        }

    }

EDIT: LOGCAT
03-28 01:23:42.170: W/System.err(1237): java.io.IOException: BufferedInputStream is closed
03-28 01:23:42.180: W/System.err(1237):at    java.io.BufferedInputStream.streamClosed(BufferedInputStream.java:118)
03-28 01:23:42.190: W/System.err(1237):     at      java.io.BufferedInputStream.read(BufferedInputStream.java:258)
03-28 01:23:42.190: W/System.err(1237):     at  java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:200)
03-28 01:23:42.200: W/System.err(1237):     at java.util.zip.GZIPInputStream.<init> (GZIPInputStream.java:98)
03-28 01:23:42.200: W/System.err(1237):     at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
03-28 01:23:42.210: W/System.err(1237):     at     org.ksoap2.transport.HttpTransportSE.getUnZippedInputStream(HttpTransportSE.java:328)
03-28 01:23:42.210: W/System.err(1237):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:250)
03-28 01:23:42.220: W/System.err(1237):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
03-28 01:23:42.230: W/System.err(1237):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113)
03-28 01:23:42.230: W/System.err(1237):     at com.classes.SoapWebservice.returnProducersFromBarCode(SoapWebservice.java:71)
03-28 01:23:42.240: W/System.err(1237):     at com.example.soapattemptone.DotNetWebService$AsyncCallWS.doInBackground(DotNetWebService.java:60)
03-28 01:23:42.240: W/System.err(1237):     at com.example.soapattemptone.DotNetWebService$AsyncCallWS.doInBackground(DotNetWebService.java:1)
03-28 01:23:42.250: W/System.err(1237):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
03-28 01:23:42.260: W/System.err(1237):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
03-28 01:23:42.270: W/System.err(1237):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
03-28 01:23:42.270: W/System.err(1237):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
03-28 01:23:42.270: W/System.err(1237):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
03-28 01:23:42.280: W/System.err(1237):     at java.lang.Thread.run(Thread.java:841)

A: In my case, removing gzip encoding resolved the problem.
It seems gzip causes soap parsing error.
How to request a gzipped / compressed SOAP response?


The delta® pump from ProMinent uses a controllable solenoid drive. It has the ability to adapt and monitor suction and pressure strokes completely for each application. The product offers a wide range of drive options, and has a Profibus® or CANbus connection to the main control. Furthermore, the delta® pump functions as a control center that uses the option "Process Timer" when programmable logic controllers are necessary.


Today we spent pretty much the entire day at Niagara Falls. We left Toronto around 8.30am and arrived after a short and easy drive at Niagara Falls at 10.00am. Early enough. We took a lot of awesome pictures! Of course we participated–as well as every other tourist–in the major attraction: the Maid of the Mist tour. Afterwards we enjoyed dinner at the Hard Rock Café. A first for me! You know me: I had to close this day with an Americano from Starbucks.


text:
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}

module Sproxy.Application
  ( sproxy
  , redirect
  ) where

import Blaze.ByteString.Builder (toByteString)
import Blaze.ByteString.Builder.ByteString (fromByteString)
import Control.Exception
       (Exception, Handler(..), SomeException, catches, displayException)
import qualified Data.Aeson as JSON
import Data.ByteString (ByteString)
import Data.ByteString as BS (break, intercalate)
import Data.ByteString.Char8 (pack, unpack)
import Data.ByteString.Lazy (fromStrict)
import Data.Conduit (Flush(Chunk), mapOutput)
import Data.HashMap.Strict as HM (HashMap, foldrWithKey, lookup)
import Data.List (find, partition)
import Data.Map as Map
       (delete, fromListWith, insert, insertWith, toList)
import Data.Maybe (fromJust, fromMaybe)
import Data.Monoid ((<>))
import Data.Text (Text)
import Data.Text.Encoding (decodeUtf8, encodeUtf8)
import Data.Time.Clock.POSIX (posixSecondsToUTCTime)
import Data.Word (Word16)
import Data.Word8 (_colon)
import Foreign.C.Types (CTime(..))
import qualified Network.HTTP.Client as BE
import Network.HTTP.Client.Conduit (bodyReaderSource)
import Network.HTTP.Conduit
       (requestBodySourceChunkedIO, requestBodySourceIO)
import Network.HTTP.Types
       (RequestHeaders, ResponseHeaders, methodGet, methodPost)
import Network.HTTP.Types.Header
       (hConnection, hContentLength, hContentType, hCookie, hLocation,
        hTransferEncoding)
import Network.HTTP.Types.Status
       (Status(..), badGateway502, badRequest400, forbidden403, found302,
        internalServerError500, methodNotAllowed405, movedPermanently301,
        networkAuthenticationRequired511, notFound404, ok200, seeOther303,
        temporaryRedirect307)
import Network.Socket (NameInfoFlag(NI_NUMERICHOST), getNameInfo)
import qualified Network.Wai as W
import Network.Wai.Conduit (responseSource, sourceRequestBody)
import System.FilePath.Glob (Pattern, match)
import System.Posix.Time (epochTime)
import Text.InterpolatedString.Perl6 (qc)
import Web.Cookie (Cookies, parseCookies, renderCookies)
import qualified Web.Cookie as WC

import Sproxy.Application.Cookie
       (AuthCookie(..), AuthUser, cookieDecode, cookieEncode, getEmail,
        getEmailUtf8, getFamilyNameUtf8, getGivenNameUtf8)
import Sproxy.Application.OAuth2.Common (OAuth2Client(..))
import qualified Sproxy.Application.State as State
import Sproxy.Config (BackendConf(..))
import qualified Sproxy.Logging as Log
import Sproxy.Server.DB
       (Database, userAccess, userExists, userGroups)

redirect :: Word16 -> W.Application
redirect p req resp =
  case requestDomain req of
    Nothing -> badRequest "missing host" req resp
    Just domain -> do
      Log.info $ "redirecting to " ++ show location ++ ": " ++ showReq req
      resp $ W.responseBuilder status [(hLocation, location)] mempty
      where status =
              if W.requestMethod req == methodGet
                then movedPermanently301
                else temporaryRedirect307
            newhost =
              if p == 443
                then domain
                else domain <> ":" <> pack (show p)
            location =
              "https://" <> newhost <> W.rawPathInfo req <> W.rawQueryString req

sproxy ::
     ByteString
  -> Database
  -> HashMap Text OAuth2Client
  -> [(Pattern, BackendConf, BE.Manager)]
  -> W.Application
sproxy key db oa2 backends =
  logException $ \req resp -> do
    Log.debug $ "sproxy <<< " ++ showReq req
    case requestDomain req of
      Nothing -> badRequest "missing host" req resp
      Just domain ->
        case find (\(p, _, _) -> match p (unpack domain)) backends of
          Nothing -> notFound "backend" req resp
          Just (_, be, mgr) -> do
            let cookieName = pack $ beCookieName be
                cookieDomain = pack <$> beCookieDomain be
            case W.pathInfo req of
              ["robots.txt"] -> get robots req resp
              (".sproxy":proxy) ->
                case proxy of
                  ["logout"] ->
                    get (logout key cookieName cookieDomain) req resp
                  ["oauth2", provider] ->
                    case HM.lookup provider oa2 of
                      Nothing -> notFound "OAuth2 provider" req resp
                      Just oa2c ->
                        get (oauth2callback key db (provider, oa2c) be) req resp
                  ["access"] -> do
                    now <- Just <$> epochTime
                    case extractCookie key now cookieName req of
                      Nothing -> authenticationRequired key oa2 req resp
                      Just (authCookie, _) ->
                        post (checkAccess db authCookie) req resp
                  _ -> notFound "proxy" req resp
              _ -> do
                now <- Just <$> epochTime
                case extractCookie key now cookieName req of
                  Nothing -> authenticationRequired key oa2 req resp
                  Just cs@(authCookie, _) ->
                    authorize db cs req >>= \case
                      Nothing -> forbidden authCookie req resp
                      Just req' -> forward mgr req' resp

robots :: W.Application
robots _ resp =
  resp $
  W.responseLBS
    ok200
    [(hContentType, "text/plain; charset=utf-8")]
    "User-agent: *\nDisallow: /"

oauth2callback ::
     ByteString
  -> Database
  -> (Text, OAuth2Client)
  -> BackendConf
  -> W.Application
oauth2callback key db (provider, oa2c) be req resp =
  case param "code" of
    Nothing -> badRequest "missing auth code" req resp
    Just code ->
      case param "state" of
        Nothing -> badRequest "missing auth state" req resp
        Just state ->
          case State.decode key state of
            Left msg -> badRequest ("invalid state: " ++ msg) req resp
            Right url -> do
              au <- oauth2Authenticate oa2c code (redirectURL req provider)
              let email = getEmail au
              Log.info $ "login " ++ show email ++ " by " ++ show provider
              exists <- userExists db email
              if exists
                then authenticate key be au url req resp
                else userNotFound au req resp
  where
    param p = do
      (_, v) <- find ((==) p . fst) $ W.queryString req
      v

-- XXX: RFC6265: the user agent MUST NOT attach more than one Cookie header field
extractCookie ::
     ByteString
  -> Maybe CTime
  -> ByteString
  -> W.Request
  -> Maybe (AuthCookie, Cookies)
extractCookie key now name req = do
  (_, cookies) <- find ((==) hCookie . fst) $ W.requestHeaders req
  (auth, others) <- discriminate cookies
  case cookieDecode key auth of
    Left _ -> Nothing
    Right cookie ->
      if maybe True (acExpiry cookie >) now
        then Just (cookie, others)
        else Nothing
  where
    discriminate cs =
      case partition ((==) name . fst) $ parseCookies cs of
        ((_, x):_, xs) -> Just (x, xs)
        _ -> Nothing

authenticate ::
     ByteString -> BackendConf -> AuthUser -> ByteString -> W.Application
authenticate key be user url _req resp = do
  now <- epochTime
  let domain = pack <$> beCookieDomain be
      expiry = now + CTime (beCookieMaxAge be)
      authCookie = AuthCookie {acUser = user, acExpiry = expiry}
      cookie =
        WC.def
        { WC.setCookieName = pack $ beCookieName be
        , WC.setCookieHttpOnly = True
        , WC.setCookiePath = Just "/"
        , WC.setCookieSameSite = Nothing
        , WC.setCookieSecure = True
        , WC.setCookieValue = cookieEncode key authCookie
        , WC.setCookieDomain = domain
        , WC.setCookieExpires =
            Just . posixSecondsToUTCTime . realToFrac $ expiry
        }
  resp $
    W.responseLBS
      seeOther303
      [ (hLocation, url)
      , ("Set-Cookie", toByteString $ WC.renderSetCookie cookie)
      ]
      ""

authorize ::
     Database -> (AuthCookie, Cookies) -> W.Request -> IO (Maybe W.Request)
authorize db (authCookie, otherCookies) req = do
  let user = acUser authCookie
      domain = decodeUtf8 . fromJust $ requestDomain req
      email = getEmail user
      emailUtf8 = getEmailUtf8 user
      familyUtf8 = getFamilyNameUtf8 user
      givenUtf8 = getGivenNameUtf8 user
      method = decodeUtf8 $ W.requestMethod req
      path = decodeUtf8 $ W.rawPathInfo req
  grps <- userGroups db email domain path method
  if null grps
    then return Nothing
    else do
      ip <-
        pack . fromJust . fst <$>
        getNameInfo [NI_NUMERICHOST] True False (W.remoteHost req)
      return . Just $
        req
        { W.requestHeaders =
            toList $
            insert "From" emailUtf8 $
            insert "X-Groups" (BS.intercalate "," $ encodeUtf8 <$> grps) $
            insert "X-Given-Name" givenUtf8 $
            insert "X-Family-Name" familyUtf8 $
            insert "X-Forwarded-Proto" "https" $
            insertWith (flip combine) "X-Forwarded-For" ip $
            setCookies otherCookies $
            fromListWith combine $ W.requestHeaders req
        }
  where
    combine a b = a <> "," <> b
    setCookies [] = delete hCookie
    setCookies cs = insert hCookie (toByteString . renderCookies $ cs)

checkAccess :: Database -> AuthCookie -> W.Application
checkAccess db authCookie req resp = do
  let email = getEmail . acUser $ authCookie
      domain = decodeUtf8 . fromJust $ requestDomain req
  body <- W.strictRequestBody req
  case JSON.eitherDecode' body of
    Left err -> badRequest err req resp
    Right inq -> do
      Log.debug $ "access <<< " ++ show inq
      tags <- userAccess db email domain inq
      Log.debug $ "access >>> " ++ show tags
      resp $
        W.responseLBS
          ok200
          [(hContentType, "application/json")]
          (JSON.encode tags)

-- XXX If something seems strange, think about HTTP/1.1 <-> HTTP/1.0.
-- FIXME For HTTP/1.0 backends we might need an option
-- FIXME in config file. HTTP Client does HTTP/1.1 by default.
forward :: BE.Manager -> W.Application
forward mgr req resp = do
  let beReq =
        BE.defaultRequest
        { BE.method = W.requestMethod req
        , BE.path = W.rawPathInfo req
        , BE.queryString = W.rawQueryString req
        , BE.requestHeaders = modifyRequestHeaders $ W.requestHeaders req
        , BE.redirectCount = 0
        , BE.decompress = const False
        , BE.requestBody =
            case W.requestBodyLength req of
              W.ChunkedBody ->
                requestBodySourceChunkedIO (sourceRequestBody req)
              W.KnownLength l ->
                requestBodySourceIO (fromIntegral l) (sourceRequestBody req)
        }
      msg =
        unpack (BE.method beReq <> " " <> BE.path beReq <> BE.queryString beReq)
  Log.debug $ "BACKEND <<< " ++ msg ++ " " ++ show (BE.requestHeaders beReq)
  BE.withResponse beReq mgr $ \res -> do
    let status = BE.responseStatus res
        headers = BE.responseHeaders res
        body =
          mapOutput (Chunk . fromByteString) . bodyReaderSource $
          BE.responseBody res
        logging =
          if statusCode status `elem` [400, 500]
            then Log.warn
            else Log.debug
    logging $
      "BACKEND >>> " ++
      show (statusCode status) ++ " on " ++ msg ++ " " ++ show headers ++ "\n"
    resp $ responseSource status (modifyResponseHeaders headers) body

modifyRequestHeaders :: RequestHeaders -> RequestHeaders
modifyRequestHeaders = filter (\(n, _) -> n `notElem` ban)
  where
    ban =
      [ hConnection
      , hContentLength -- XXX This is set automtically before sending request to backend
      , hTransferEncoding -- XXX Likewise
      ]

modifyResponseHeaders :: ResponseHeaders -> ResponseHeaders
modifyResponseHeaders = filter (\(n, _) -> n `notElem` ban)
  where
    ban =
      [ hConnection
      -- XXX WAI docs say we MUST NOT add (keep) Content-Length, Content-Range, and Transfer-Encoding,
      -- XXX but we use streaming body, which may add Transfer-Encoding only.
      -- XXX Thus we keep Content-* headers.
      , hTransferEncoding
      ]

authenticationRequired ::
     ByteString -> HashMap Text OAuth2Client -> W.Application
authenticationRequired key oa2 req resp = do
  Log.info $ "511 Unauthenticated: " ++ showReq req
  resp $
    W.responseLBS
      networkAuthenticationRequired511
      [(hContentType, "text/html; charset=utf-8")]
      page
  where
    path =
      if W.requestMethod req == methodGet
        then W.rawPathInfo req <> W.rawQueryString req
        else "/"
    state =
      State.encode key $
      "https://" <> fromJust (W.requestHeaderHost req) <> path
    authLink :: Text -> OAuth2Client -> ByteString -> ByteString
    authLink provider oa2c html =
      let u = oauth2AuthorizeURL oa2c state (redirectURL req provider)
          d = pack $ oauth2Description oa2c
      in [qc|{html}
Authenticate with {d}
|]
    authHtml = foldrWithKey authLink "" oa2
    page =
      fromStrict
        [qc|
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>Authentication required</title>

Authentication required

  {authHtml}

|]

forbidden :: AuthCookie -> W.Application
forbidden ac req resp = do
  Log.info $ "403 Forbidden: " ++ show email ++ ": " ++ showReq req
  resp $
    W.responseLBS forbidden403 [(hContentType, "text/html; charset=utf-8")] page
  where
    email = getEmailUtf8 . acUser $ ac
    page =
      fromStrict
        [qc|
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>Access Denied</title>

Access Denied

You are currently logged in as {email}

Logout

|]

userNotFound :: AuthUser -> W.Application
userNotFound au _ resp = do
  Log.info $ "404 User not found: " ++ show email
  resp $
    W.responseLBS notFound404 [(hContentType, "text/html; charset=utf-8")] page
  where
    email = getEmailUtf8 au
    page =
      fromStrict
        [qc|
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>Access Denied</title>

Access Denied

You are not allowed to login as {email}

Main page

|]

logout :: ByteString -> ByteString -> Maybe ByteString -> W.Application
logout key cookieName cookieDomain req resp = do
  let host = fromJust $ W.requestHeaderHost req
  case extractCookie key Nothing cookieName req of
    Nothing ->
      resp $ W.responseLBS found302 [(hLocation, "https://" <> host)] ""
    Just _ -> do
      let cookie =
            WC.def
            { WC.setCookieName = cookieName
            , WC.setCookieHttpOnly = True
            , WC.setCookiePath = Just "/"
            , WC.setCookieSameSite = Just WC.sameSiteStrict
            , WC.setCookieSecure = True
            , WC.setCookieValue = "goodbye"
            , WC.setCookieDomain = cookieDomain
            , WC.setCookieExpires =
                Just . posixSecondsToUTCTime . realToFrac $ CTime 0
            }
      resp $
        W.responseLBS
          found302
          [ (hLocation, "https://" <> host)
          , ("Set-Cookie", toByteString $ WC.renderSetCookie cookie)
          ]
          ""

badRequest :: String -> W.Application
badRequest msg req resp = do
  Log.warn $ "400 Bad Request (" ++ msg ++ "): " ++ showReq req
  resp $ W.responseLBS badRequest400 [] "Bad Request"

notFound :: String -> W.Application
notFound msg req resp = do
  Log.warn $ "404 Not Found (" ++ msg ++ "): " ++ showReq req
  resp $ W.responseLBS notFound404 [] "Not Found"

logException :: W.Middleware
logException app req resp =
  catches (app req resp) [Handler badGateway, Handler internalError]
  where
    internalError :: SomeException -> IO W.ResponseReceived
    internalError = response internalServerError500
    badGateway :: BE.HttpException -> IO W.ResponseReceived
    badGateway = response badGateway502
    response :: Exception e => Status -> e -> IO W.ResponseReceived
    response st e = do
      Log.error $
        show (statusCode st) ++
        " " ++
        unpack (statusMessage st) ++
        ": " ++ displayException e ++ " on " ++ showReq req
      resp $
        W.responseLBS
          st
          [(hContentType, "text/plain")]
          (fromStrict $ statusMessage st)

get :: W.Middleware
get app req resp
  | W.requestMethod req == methodGet = app req resp
  | otherwise = do
    Log.warn $ "405 Method Not Allowed: " ++ showReq req
    resp $
      W.responseLBS methodNotAllowed405 [("Allow", "GET")] "Method Not Allowed"

post :: W.Middleware
post app req resp
  | W.requestMethod req == methodPost = app req resp
  | otherwise = do
    Log.warn $ "405 Method Not Allowed: " ++ showReq req
    resp $
      W.responseLBS methodNotAllowed405 [("Allow", "POST")] "Method Not Allowed"

redirectURL :: W.Request -> Text -> ByteString
redirectURL req provider =
  "https://" <> fromJust (W.requestHeaderHost req) <> "/.sproxy/oauth2/" <>
  encodeUtf8 provider

requestDomain :: W.Request -> Maybe ByteString
requestDomain req = do
  h <- W.requestHeaderHost req
  return . fst . BS.break (== _colon) $ h

-- XXX: make sure not to reveal the cookie, which can be valid (!)
showReq :: W.Request -> String
showReq req =
  unpack
    (W.requestMethod req <> " " <>
     fromMaybe "<no host>" (W.requestHeaderHost req) <>
     W.rawPathInfo req <>
     W.rawQueryString req <>
     " ") ++
  show (W.httpVersion req) ++
  " " ++
  show (fromMaybe "-" $ W.requestHeaderReferer req) ++
  " " ++
  show (fromMaybe "-" $ W.requestHeaderUserAgent req) ++
  " from " ++ show (W.remoteHost req)

redpajama_set_name: RedPajamaGithub


text:
4 Administrative / Clerical jobs - Canada
Browse for Administrative / Clerical Jobs in Canada. Find the job of your dreams on CareerCast Disability Network today!
Workplace Discrimination & Harassment...
Do you have a passion for advancing human rights and achieving equity for a...
Emergent BioSolutions Inc.
Winnipeg, MB CA
Those who join Emergent BioSolutions feel a sense of ownership about their future. You will excel in an environment characterized by respect, innovation and growth opportunities. Here, you will join passionate professionals who advance their scientific, technical and professional skills to develop p...
Those who join Emergent BioSolutions feel a sense of ownership about their future. You will excel in an environment characterized by respect,...
Sr Administrative Assistant
Mississauga, ON CA
Workplace Discrimination & Harassment Prevention Advisor
Do you have a passion for advancing human rights and achieving equity for all? Do you believe equity, diversity and inclusion create the ideal conditions for people and organizations to thrive? Do you have a strong commitment to client service excellence and partnership building? Do you have an apti...
Do you have a passion for advancing human rights and achieving equity for all? Do you believe equity, diversity and inclusion create the ideal...
Technician, Building Maintenance
Building Technician

redpajama_set_name: RedPajamaCommonCrawl


New Public School, Thorold, Ont.
East Side School, Port Colborne, Ont.
A photograph of students and teachers posing for this picture in front of the Jordan Station Public School. Jordan Station, Ontario. c1894.


text:
Peshtigo es un pueblo ubicado en el condado de Marinette en el estado estadounidense de Wisconsin. En el Censo de 2010 tenía una población de 4.057 habitantes y una densidad poblacional de 8,7 personas por km².

Geografía
Peshtigo se encuentra ubicado en las coordenadas . Según la Oficina del Censo de los Estados Unidos, Peshtigo tiene una superficie total de 466.48 km², de la cual 152.48 km² corresponden a tierra firme y (67.31%) 314 km² es agua.

Demografía
Según el censo de 2010, había 4.057 personas residiendo en Peshtigo. La densidad de población era de 8,7 hab./km². De los 4.057 habitantes, Peshtigo estaba compuesto por el 97.61% blancos, el 0.05% eran afroamericanos, el 0.35% eran amerindios, el 0.94% eran asiáticos, el 0% eran isleños del Pacífico, el 0.3% eran de otras razas y el 0.76% pertenecían a dos o más razas. Del total de la población el 0.67% eran hispanos o latinos de cualquier raza.

Referencias

Enlaces externos

Pueblos de Wisconsin
Localidades del condado de Marinette

redpajama_set_name: RedPajamaWikipedia


The Romanoffs is an anthology of eight stand alone story episodes, all linked around the fact that the people involved believe themselves to be descendants of the infamous Russian royal family who ruled until overthrown by the Bolsheviks in 1917. The series was shot on location in three continents and seven countries, with each story taking place in a new location with a new cast. Matthew Weiner created, wrote, directed and executive produced the series, which will debut on October 12th on Amazon Prime.
The teaser trailer below doesn't include any film footage but instead it features the names of some of the stars who will appear in the series, and what a list to get excited about, including Aaron Eckhart, Christina Hendricks, Noah Wyle, Jack Huston, Diane Lane, Paul Reiser, Isabelle Huppert and many more.


Cyrus Farivar | Laser Pointer Safety - News of aviation-related incidents, arrests, etc.
The following is an analysis by LaserPointerSafety.com of the 14-year prison sentence given to Sergio Patrick Rodriguez on March 10 2014, for interfering with a police helicopter by hitting it with a laser beam about seven times.
Prior to this, the longest sentence anywhere in the world for a laser/aircraft incident was four years, handed down in January 2010 to Jamie Allen Downie. For more information, see the page Sentences for laser offenses and click the tags on the left side to find jail terms of 0-6 months, 7-12 months, 13-24 months, 25-36 months, 37-48 months, and over 4 years.
UPDATED June 24 2015: Rodriguez's 14-year sentence for reckless endangerment was overturned by an appeals court, saying there was no evidence that he had harmful intent as required by the law.
Based on the government's sentencing recommendation, 8 years of Rodriguez's sentence were imposed for the laser violation, and an additional 6 years were due to Rodriguez's prior criminal history of gang affiliation and numerous probation violations.
The government stated at one point that Rodriguez should receive 20 years to life imprisonment based on its analysis, but they would be satisfied with 14 years.
Rodriguez's lawyer countered that the guidelines had been misapplied and the sentence should be only 57 months (4 3/4 years). The lawyer contended that Rodriguez was in his backyard, playing with the laser to see how far it could go and he had no knowledge of laser/aircraft hazards.
Sergio Patrick Rodriguez of Clovis, California, was sentenced March 10 2014 to 14 years in prison for interfering with an aircraft, plus 5 years in prison for aiming an $8.00 green laser pointer at an aircraft. The two sentences will be served concurrently; e.g. a maximum of 14 years. According to Rodriguez's lawyer, he would serve a minimum of 12 years, factoring in a 15 percent sentence reduction for good behavior and a one-year credit for time served.
The 14-year sentence is the longest ever imposed for lasing an aircraft, anywhere in the world. Rodriguez's lawyer unsuccessfully argued that a term of 57 months (4 3/4 years) would be "harsh, but ... is arguably a just punishment." The previous longest sentence was 4 years for Jamie Allen Downie, sentenced in January 2010.
Federal sentencing guidelines take into account the crime itself as well as the defendant's criminal history. U.S. District Judge Lawrence J. O'Neill said at sentencing that Rodriguez was "a walking crime spree." Based on the government's sentencing recommendation, 8 years of the sentence were imposed for the laser violation, and an additional 6 years were due to Rodriguez's prior criminal history of gang affiliation and numerous probation violations.
A more detailed analysis of the 14-year sentence is here.
The Rodriguez case began August 25 2012 when a helicopter from the Children's Hospital of Central California was illuminated by a green laser. Fresno Police Department's Air 1 was sent to investigate.
It was repeatedly and deliberately struck by the light. The beam was traced back to Rodriguez, now 26, and his girlfriend, Jennifer Lorraine Coleman, 23. Pilots from both helicopters said the laser strikes caused significant visual interference.
The laser's power was later measured as 65 milliwatts. This is 13 times the 5 mW limit for lasers marketed as "pointers" in the U.S. This 13x power increase leads to a 3.6 times increase in the distance at which Rodriguez's laser was a hazard (see Note 1).


text:
Interview: Kip Moore on Good Music and Good Women
Billy Dukes Published: February 27, 2020
Kip Moore doesn't have a "type," in the traditional sense. The "She's Mine" singer recently visited with Taste of Country Nights radio show and opened up about what he looks for both in life and love.
The full interview will premiere on Thursday night (Feb. 27) at 9PM ET. Click the reminder button to make sure you don't miss him sharing secrets about his new music video, plus that one time someone confused him for Keith Urban and Moore scorched them ...
"She's Mine" is Moore's newest single, from his upcoming fourth studio album. It's a love song with a very playful music video, and while it was written nearly a decade ago, he says the song still speaks to him today.
"There's not like a type, like a redhead," Moore says when asked what kind of girl he'd like to call "Mine." "I like kindness. I like humor ... you gotta have a good brain. I gotta be challenged."
The Georgia-raised 39-year-old is known as being one of country music's most thoughtful writers and performers. He's a guy who speaks his mind with fully formed opinions, but cares enough to listen and appreciate challenges. Women who can't keep up? They're out, and it doesn't take him long to see it.
"I just wanna know that there's something going on upstairs," he says.
We Think Kip Moore Fans Will Like This New Cadillac Three Performance:
The full interview finds Moore revealing — and singing — his guilty pleasure song and admitting that a well-known college basketball coach once confused him for Urban. Was it the hair color? Their height?
It doesn't matter — Moore's response is on brand and hilarious.
Taste of Country Nights Live is a regular interview series that finds hosts Evan Paul and Amber asking important questions about an artist's music, life and career. Recent guests include Luke Combs, Miranda Lambert, Jason Aldean and Carly Pearce. Subscribe to Taste of Country's YouTube channel so you don't miss the next one.
Kip Moore and 9 More Country Singers Who Aren't As Scary As They Seem:
Source: Interview: Kip Moore on Good Music and Good Women
Filed Under: Kip Moore
Top 10 Country Songs About Beer
Kip Moore Announces 2022 Fire on Wheels Tour
Kip Moore Has 'Fire on Wheels' on Rocking New Song [Listen]
Kip Moore Soars in Freshened Recording of 'Crazy One More Time' [Listen]
Kip Moore Teases Collaboration With Ashley McBryde [Picture]
Kip Moore Captains a Carefree, Colorful Party Bus in His Quirky 'Good Life' Video [Watch]
Kip Moore's 'Good Life' Introduces a New Country-Grunge Style [Listen]
Kip Moore Celebrates the Drug That Is Love in New Song 'How High' [Listen]
Kip Moore Recorded a New Album and Picked Up a New Hobby in Quarantine


Basically almost back to where I was with my previous Nokia, so now its time to try and make progress.
I have found club sonyericsson, a community site so lets see if they can help. The have a specific thread about the V600i, which states that it is a badge engineered K600.
I posted a question to Civic Type-R owners about hands free in the car. I discovered that voice controled dialing with bluetooth requires the correct earpiece or it doesn't work.
I have logged into this, but can't see how to browse my community. I rang Vodafone who claim to know nothing. This is why I have found the club sonyericsson site. Lets see if they can help.
I spoke to Olaf Schnapauff, who said he reckoned it was a closed community and that you'd need a gateway to have it participate in my multi-protocol community. He recommended looking at Yamigo and Shape. The first offers the software for free (I think) and the second doesn't.
Luis Camino at club sonyericsson started a thread re MSN Messenger Client.
I have just tuned the radio function on the phone into BBC Radio 1,2,3,4, 86.4 the Eagle aka Radio Guildford and Classic FM. I need to discover if and how to tune into Radio 5 & 7, on non-FM channels. Can this be done?
Another thing that ought to work, but seems not to. Flickr needs mail, not MMS and the phone's mail client doesn't seem to have a attach function. Bother!


text:
Duniya
Action / Drama
Mohan Kumar's diligence and honesty lands him in trouble with Balwant Singh Kalra, Jugal Kishore Ahuja, and Mr. Bhandari. Together the trio frame and imprison Mohan and make him watch ...
Ramesh Talwar
Amrish Puri as Balwant Singh Kalra
Om Puri as Vasudev
Reviewed by coolzain_me 10 / 10 / 10
Good !!!!
yesterday i watched this movie and i really liked it because it had a good story line ,plot,it was well shot and everyone gave natural performances ex.(DILIP KUMAR),(RISHI KAPOOOR) acted really well and it was well directed i think this kind of stuff should be made these days so people know the meaning of relationship and i really loved the movie and as it was a YASH JOHAR (DHARMA PRODUCTION) and this movie proved that YASH JOHAR did good work on the film all the people in the movie acted well.The villains were really good (AMRESH PURI,PRAN,PREM CHOPRA) and if i would give points to this movie i would give it 10/10 and if i would give it stars i would give it *****/***** and it was better than those movies like ARPAN and NIKAAH and i really appreciate this kind of stuff
Reviewed by alokc 3 / 10 / 10
Execellent
The great Dilip Kumar used to act in a number of movies in the 1980s and these movies had him as the central character. This character overshadowed all other characters and stood tall, larger than life. The audience used to lap it up with applause and cheers. Duniya released in 1984 is one such movie, which has Dilip Kumar taking on Pran, Prem Chopra and Amrish Puri for spoiling his life. He is ably supported by Saira Banu and Rishi Kapoor. The movie has excellent music by R D Burman and is a must watch. The movie might not have done as well as it should have but is a must watch. One must see the movie to realize what a great actor Dilip kumar is.
Reviewed by SumanShakya 3 / 10 / 10
A Star Studded '80s Blockbuster with the Regular Formula.....
Dramas blended with crimes, smuggling, revenge, lost children, and reuniting have been an instant recipe of most of the Hindi Movies from '60s. By the time this film came, the story has been seen so many times that there remains nothing new to be explored. The story is familiar, the villains are well known, the characters are buyest, music and songs if not mediocre are still not very memorable. A sequence if I'm not mistaken is taken straight from the Oscar Winning "The Sting" in which Rishi Kapoor steals cash. If something is good in this movie, it's an impressive performance from Thespian Dilip Kumar and a cameo by Saira Banoo. Dilip Kumar made yet an another remarkable performance in "Mashal" in the same year. Today the film if remains watchable is only for the due respect to him. Lastly, with this review, I would like to pay a homage to Late Sulabha Despande, who appears in a brief role in the film. Sadly I got the news of her demise while I was watching the movie. She should be remembered for her modest roles in social dramas like Pet Pyar Aur Paap, Bahu Ki Awaaz, Kamla, and many more. Rating: 1 star out of 4


This Article analyzes the use of after-acquired evidence to defeat a discrimination victim's claim against her employer. The use of the Mount Healthy and Price Waterhouse mixed motives analysis in after-acquired evidence cases is misplaced because it is impossible for the permissible motive—resume fraud—to have been a factor in the adverse employment decision. Furthermore, after the enactment of the Civil Rights Act of 1991, it would be an improper judicial intrusion upon the power of the legislature for courts to apply mixed motives analysis to these cases. Besides the constitutional limitation on the judiciary's power created by the Civil Rights Act of 1991, public policy dictates that defendants be held liable for intentionally and illegally discriminating against their employees.
In order for the Civil Rights Acts of 1964 and 1991 to work effectively to eliminate unlawful discrimination in the workplace, defendants must have no means or incentive to escape liability for their wrongful acts. If after-acquired evidence is subject to the mixed motives analysis, a defendant who discriminated illegally against its employee would have every incentive to search for information in the employee's background which could be used to question her truthfulness on her employment application. This search would take place whether or not the employee had misrepresented material facts on the application. It would lead to more costly, prolonged discovery in an age where the courts are attempting to trim pretrial proceedings. Moreover, knowledge that the employer may search the employee's background if the employee files suit against the employer may have a chilling effect on civil rights claims, deterring deserving plaintiffs from bringing discrimination claims. This article sets forth a proposal for dealing with after-acquired evidence in Title VII cases that accounts for employers' legitimate interests as well as those of employees and the public in eliminating discrimination in the workplace.
26 Conn. L. Rev. 145 (1993).
McGinley, Ann C., "Reinventing Reality: The Impermissible Intrusion of After-Acquired Evidence in Title VII Litigation" (1993). Scholarly Works. 157.


text:
Dawn.COM
DAWNNEWS URDU
CityFM89
Teeli
Pakistani women are getting their faces tattooed with permanent make-up. Here's why
Published 21 Oct, 2018 10:08am
Maliha Diwan
Images Contributor
"It's convenient for working girls — you wake up and you're ready," says a certified permanent make-up professional
For eyebrows there's an additional option called microblading — where a hand-held tool is used to make small strokes.
Five years ago, when Zehra Kachelo was visiting her daughter in Hanoi, Vietnam, she noticed that a lot of women looked effortlessly dolled up: their eyebrows were the perfect shape and colour; their lips were just the right tint.
The secret to their put-together looks turned out to be permanent make-up: the tattooing of pigments into the skin to enhance the lips, eyebrows, eyelids or cheeks. "I said 'Wow your eyebrows look so nice' and they said 'We wake up like this'. I thought this is so great! I want to wake up like this," she says.
Eventually, Kachelo decided to have her eyebrows, lips and eyelids tattooed (the inked eyelids give the appearance of having put on eyeliner). For Kachelo, as for many busy Pakistani women, permanent make-up (which is also known by the names micropigmentation and cosmetic tattooing) is all about convenience.
As she points out: "Basically my laziness got the better of me. I got hair bonding done so my hair could be nice and straight all the time. So why not the same with make-up? I got my face done and I was ready all the time. I loved it!"
Kachelo is not alone; many Pakistani women are turning to the technique because it saves them time. According to Samina Bilgrami, a certified permanent make-up professional based in Islamabad and Karachi and the founder of Brow Factor, women are increasingly opting for the technique because it's so convenient.
"It's becoming more and more popular and people of all ages are using this procedure. Most of them have a busy lifestyle and you don't have to make an effort," she says. "It's convenient for a lot of working girls — you wake up and you're ready. It makes you look very nice and fresh. You don't look washed out."
Eyebrow microblading. Photo: Shinoayderm.com
Roohi Sayeed, a certified permanent make-up professional and the owner of Amethyst Spa, agrees, pointing out that she has seen cosmetic tattooing become more popular in the last two years. "We see a lot of clientele in their 40s and 50s. We also see a lot of women from the northern areas of Pakistan who come to Karachi to get permanent make-up done," adds Sayeed.
Permanent make-up may conjure up images of artificial-looking brows veering on the cartoonish — a legacy of the cosmetic tattoo fad that emerged in the '90s and 2000s. The most recent iteration of the technique which is becoming popular, however, is far more sophisticated. Carbon-based pigments are no longer used; instead cosmetic professionals now use temporary pigments that are made especially for the face.
These pigments also come in a broader range of shades so permanent make-up artists can easily make the tint of colour the client is looking for. "You have a lot more shades now. When I got my training done 20 years ago, there weren't many companies that made such pigments but now there are far more options," says Sayeed.
Permanent eye-liner. Photo: Nadia Afanaseva
The pigment is tattooed in using a needle and tattoo machine; for eyebrows there's an additional option called microblading — where a hand-held tool is used to make small strokes. Unlike the ink used for traditional tattoos, the newer pigments simply fade in a few years. In fact, the term 'permanent' is misleading; semi-permanent would be more accurate.
"Permanent make up — doesn't mean permanent, it lasts three to four years. There's another technique [aside from tattooing] called microblading. They have it a lot in Europe — that lasts about a maximum of two to three years," emphasises Kachelo.
The technique is also ideal for those whose eyebrows or lips have faded due to old age, alopecia or illness (such as cancer patients undergoing chemotherapy) and are looking for something more realistic looking and longer lasting. "The most popular is the eyebrows and the lips. It's very anti-aging," Bilgrami points out. "For example, for some people who have experienced hair loss, the inking defines their eyebrows and improves their looks. You wake up and you're ready." Sayeed adds that the technique can also help hide scars or skin damage: "We get very few clients who need help with that but we have filled in some scars, etc."
While it may seems like a new technique, permanent make-up has been around at least since the 1920s. Inking in colour to enhance the cheeks or the lips emerged as the new fashion rage at the same time tattoo parlours became popular in the US and London. These salons offered services that gave women 'permanent' rosy cheeks and pink lips alongside the regular fare of inking in tattoo designs on the arms, shoulders or the back.
A Washington Post article from January 25, 1920, for example gushes about "a new method of beautifying by electricity. By an electric tattooing machine vari-coloured pigments are pricked into the skin and, behold! you have pink cheeks which will not rub off, nor wash out, nor fade."
Lip colour tattoo. Photo: The Ink Room Cosmetic Tattooing/ permanent makeup/Facebook
Almost a century later, permanent make-up is once again popular. Not surprising — given the new techniques are far more sophisticated and the demand on women to look pretty and presentable at all times on both the professional and personal front. Inking your lips so that they are a rosier tint or so that your eyebrows are darker, however, isn't cheap.
According to Bilgrami the tattooing of eyebrows can cost between Rs45,000 to 65,000, while inking your lips will set you back around Rs60,000 to 65,000. The make-up also has to be 'retouched' every three to four years. For many women, however, it's worth it: the proof is in the colour.
What you need to know before opting for permanent make-up
The process itself is simple enough. In consultation with you, the permanent make-up artist chooses a colour that would be suitable — the colour of the eyebrows, for example, should closely match that of your hair. The skin is anesthetised and the pigment is then inked in using a needle.
There are two sittings. Once you're done with the first sitting, you'll be asked to come again after four to six weeks. The permanent make-up artist will fill in any areas that have healed unevenly and touch up the colour where needed. So if you're not completely happy about what you see in the mirror after the first sitting, don't worry.
The pigment is tattooed in using a needle and tattoo machine; for eyebrows there's an additional option called microblading — where a hand-held tool is used to make small strokes.
While numbing cream or anaesthesia is applied to the skin before the procedure is carried out, it's bound to hurt; after all it is a needle or blade pricking your skin.
Do your homework before you opt for the procedure: is the cosmetic professional certified? Is the clinic/work station sterile and clean? "I don't recommend it done at a salon unless it's a sterile environment. That's why I prefer working in a clinic," says Bilgrami.
No matter how low, there is always a risk of an infection or an allergic reaction. Make sure there are no ingredients in the dye that you're allergic to. And keep the tattooed area clean.
Make sure you and the permanent make-up artist are on the same page. Are you happy with the shape of the brows? Is the colour of the lips the tint you want? Yes, it's semi-permanent but that's the look you'll have for the next couple of years so make sure it's the one you want.
After the procedure, whatever you chose to get tattooed will be sore for a few days. The top layer of the skin flakes off. For two to three days, you can't let water touch your face or get sweaty. It takes about a week for everything to be normal so don't plan any big outings or parties for the day after the procedure!
Originally published in Dawn, EOS, October 21st, 2018
Desk Mrec Top
What is Dirilis Ertugrul and why does Imran Khan want Pakistanis to watch it?
Your favourite local restaurants may not survive the Covid pandemic
Even during a pandemic, female doctors are facing harassment
The most interesting thing about PISA was what went down behind the scenes
Making butterbeer at home is the magical activity you need in non-magical times
Anum Rehman Chagani
Yusra Habib
Senior Subeditor
Maliha Rehman
Senior Fashion Writer
Munnazzah Raza
Health & Fitness Writer
Irfan Ul Haq
Celebrity Correspondent
Shaheer Khan is a Pakistani man who loves makeup. This is his story
Nadia Hussain says authentic beauty is more important than 'perfect' beauty standards
7 Pakistani beauty products that are surprisingly awesome
Closed (13 comments)
Not bad. Good going but keep in mind that natural beauty is most attractive.
Atif
Makeup is getting more and more expensive in Pakistan. Soon it may not be affordable. This is a good idea.
Amer Rao
Hello Ladies, please dont go far from the natural beauty. Cosmetic surgeons are making money, nothing else. And many times these surgical process went wrong.
M. Amir
Bad idea. Don't do it.
Syed Shah
Shameless promotion without detailing the side effects and risks appropriately.
Rizwan Khan
What about the risk of acquiring blood borne viruses including hepatitis B/ C with use of contaminated equipment. Another source of infection
I m suffering from alopecia nd have no eyebrows. Plz someone suggest me best cosmetic surgeon in islmabad
You have to re-do it in a year. Initially it looks very dark (still good if you are watching from a distance) but with time it looks natural. It's usually for women with light, damaged or no eyebrows. So many men hating it in comments but would fall for women who do makeup. Please let us be. Eyebrows, hairstyles and lips speak their own unique language. And it's good to be in control of the image it gives.
Amjad Wyne
Make up, hair, clothes, fashion...anyone for education and learning?
Please don't go for this! As tomorrow's fashion will change and you will have no choice but to stick to this permanent mark which will be expired in the future!
@Amer Rao No dear doctors dont do it,these are beauticians,tattoing not done by doctors.
Why trends change, plus, it's hurt!
Sisters you are pretty why do you need this at all?
Jameela Jamil wants influencers to stop promoting the keto diet
'WhatsAppLeaks' trends as Arnab Goswami finds himself in hot waters after Balakot revelations
This delicious Teriyaki chicken recipe will be a hit at your intimate gathering this week
Kangana Ranaut lashes out following reports of film critic Rajeev Masand becoming COO Dharma Productions
It's official: Sajal will star in Jemima Goldsmith's What's Love Got To Do With It
How to spot a true friend
Ertugrul's Celal Al pens heartfelt note as he bids goodbye to Pakistan
Students are not taking kindly to government's decision to reopen schools
DawnNews


Motorized Window Treatments in Vaughan – Are They Worth it?
Motorized Window Treatments – Are They Worth it?
You are here: Home \ motorized blinds \ window treatments \ Motorized Window Treatments – Are They Worth it?
Motorized window treatments – are they worth it? It's a common question amongst shoppers before taking the plunge. If you're looking for answers, try asking yourself some questions to gauge whether they will be worth it to you, your home, and your lifestyle. Chances are, there may be a couple of factors you haven't considered before.
How do you use window treatments in your home or business?
Depending how you use your space will help decide whether motorized treatments will be worth the cost for you. If you have a vaulted ceiling with many high placed windows, or skylights without window coverings, then electric window treatments are really the only feasible solution, and would definitely be worth it.
Home owners who invest a lot into their outdoor living areas or enjoy hosting get togethers throughout the year will find that outdoor retractable screens add a lot. Shade, pest control, and UV protection are just a few of the benefits that make outdoor electric screens worth it.
Business owners who want to provide natural lighting to their work spaces may fine electric shades to be the perfect solution. Buildings with a ton of windows (especially out-of-reach windows) while need a convenient, less time consuming way of opening and closing them. They'll also dramatically improve the appearance of your office.
Motorized window treatments could certainly be worth the cost if you're looking for ways of making your home more marketable. Research shows that home shoppers almost always go back to their first impressions and emotional response when making a buying decision. Automatic window coverings will give your home the "wow" factor that'll help it stand out from other homes on the market.
Could your home or office use better temperature control?
Ever notice how your thermostat could show an indoor temperature of 71, yet you still feel chilly? Drafts make a big difference, and are often the culprit when rooms never seem to feel cozy unless the heater is running. Many motorized shades add a perfect layer for controlling drafts and keeping homes better insulated.
But can't you get the same effect with manual blinds? You could, but heavier material offers the best insulation and draft protection, but can be a hassle to open and close. Electric window treatments make it easy to layer window treatments, as they have the ability to function both horizontally and vertically. The motor is also powerful enough to move heavy panels and drapes.
How important is home security to you?
Having a method of remotely turning lights on and off in the home is one way homeowners make their homes look occupied even while they're away. With automatic window treatments, you can set your blinds on a timer to open and close even while you're away, or use an app to control them remotely. This is another way homeowners can get peace of mind while away from their house.
How much do you value a good night's rest?
You may have heard about the benefits of blackout curtains and how they can give you a better night's sleep. Babies and small children nap and fall asleep far better in a dark room, which can be difficult to achieve in the middle of the day or before the sun sets during summer. For those who work odd shifts and need to sleep during the day, blackout curtains are a must.
The drawback to blackout curtains is that they can cause you to oversleep if left closed. Electric curtains have the unique ability to be set on a timer, so you can gradually wake up to natural sunlight if you choose. They can also be operated from your bed or elsewhere using a remote control, perfect for when you need to close or open blinds without disturbing sleeping children.
So, if you're wondering if motorized window treatments are really worth it, consider these perks add up, and what they might add to your home life or office environment. If you're interested in finding out the cost of adding electric blinds to your home, contact us and we'll discuss your needs and give you a estimate.


DETROIT (Bloomberg) -- General Motors Co. is preparing for an initial public offering that would sell 20 percent of the Treasury's stake in the automaker and reduce the U.S. to a minority owner, said two people familiar with the plan.
The aim is to sell a fifth of the government's 304 million shares, said the people, who asked not to be identified revealing private discussions. That would reduce the Treasury Department's stake to less than 50 percent from 61 percent now. Final decisions on which owners will sell how many shares haven't been made and may change, the people said.
A registration statement may be filed in August, aiming for a November stock sale, said four people familiar with the plan. The sale will probably raise $10 billion to $15 billion, depending on the company's performance, the strength of the economy and the health of the IPO market, the people said.
An August filing means GM could have the IPO ready around the time of the Nov. 2 congressional elections, said the people. If Treasury can sell enough shares, President Barack Obama could help other Democrats running for office by arguing that his administration's restructuring of GM is paying off, said Joe Phillippi, president of AutoTrends Consulting.
The automaker may also issue new shares to raise cash and sell shares owned by Canada and a union-led retiree health-care trust, one of the people said.
Selim Bingol, a GM spokesman, declined in an e-mail to comment on the matter.
GM has invited analysts, potential investors and representatives of its current shareholders to Detroit for a review of the business on June 29, said a spokeswoman, Renee Rashid-Merem. GM will also give the members of the financial community a look at current and future models, she said.
The IPO will be managed by JPMorgan Chase & Co. and Morgan Stanley, people familiar with the matter have said. They will collect fees of 0.75 percent of the sale, said a person briefed on the matter. Such fees would be a quarter of the usual rate for large stock sales.
JPMorgan had offered to accept payment in equity instead of cash, though that idea was rejected by GM and Treasury, two people said.
The U.S. will probably sell its GM stock over "a few years," CFO Chris Liddell said in a May 17 Bloomberg Television interview.


text:
Safety measures tightened for WTT Middle East Hub and Olympic Qualifications
The International Table Tennis Federation together with World Table Tennis met today with Dr Abdul Wahab Al Musleh, Advisor Consultant to the Minister of Public Health of Qatar, to discuss the upcoming WTT Middle East Hub and the Olympic Qualification events in Doha, Qatar that are planned between 28 February - 20 March 2021.
The Lusail Sports Arena in Doha will be hosting the WTT Middle East Hub.
The main purpose of discussions was to ensure that the health and safety of the participants at the event and that the Bio Bubble system, which Qatar has used successfully for several other events, would be strictly adhered to for the upcoming events to ensure everyone's safety.
Despite some cancellations of other sports in recent days, the WTT Middle East Hub has been approved and will be subject to strict regulations in place from the Qatar government. Since table tennis is an indoor sport, spectators will not be allowed. The local authorities are also ensuring thorough compliance to regulations and strict penalties will be put in place for anyone who breaks those regulations.
In order to ensure an even greater level of protection, the ITTF has introduced a rule asking for participants to test twice prior to departing their home country: the first time seven days prior to departure and a second time 72 hours prior to departure. Compliance officers from WTT, the ITTF and the LOC will be assigned to ensure all safety measures are duly followed.
"First and foremost, we are simply excited and happy to be able to have events again and after today's call we felt even more confident that the events in Qatar will be a success and maximum effort will be made to ensure the full health and safety of the participants. It's not an easy time also for the athletes as we have seen in other sports around the world in recent weeks, but getting international events back up and running is our number one priority." – ITTF CEO, Steve Dainton
General News WTT Middle East Hub Doha Qatar
2022 Hopes season concludes at the Hennebont Ping Center
Featured in ITTF Magazine: 2022 World Youth Championships
27 Jan 2023 General News
Join the Movement: Celebrate World Table Tennis Day on 23rd April, with a Focus on Sustainability
Intense Day of Action Closes Curtain on World Veteran Championships Muscat 2023
22 Jan 2023 2023 World Veteran Championships


text:
Researchers Use NASA Imaging to Help Chimpanzees
by Admin | Feb 1, 2017 | Conservation
Although many people immediately think of space travel when they hear about NASA, the organization has done a lot of excellent research that has been used by others to explore climate change and other ecological changes. Take, for example, the agency's ability to visualize climate zones, plant cover, and habitats from its satellites in the atmosphere.
This information has been used to study chimpanzee habitats, which have been shrinking over the last 45 years to a startling degree. In fact, while there were about two million chimpanzees a century ago, there are only about 345,000 today. While poaching has had a big impact on humanity's closest cousins, land use has been the real culprit.
This is easily seen when comparing satellite images provided by NASA and the U.S. Geological Survey Landsat. From space, it's easy to see that changing land use has devastated chimpanzee habitats. Chimpanzees needs forested land in which to live, forage, and nest. They are also pretty territorial creatures, which makes it hard for them to move when the forest where they live starts getting chopped down.
Agricultural use is one of the main culprits, as acre after acre of forest is cut down to grow crops or raise livestock. But logging and the charcoal industry have done a lot of damage as well. The result is that, outside of Gombe National Park along Lake Tanganyika, the lack of forests is notable and dramatic, leaving chimps with an ever-smaller range. Scientists from the Jane Goodall Institute are now using these images to work with local people to try and get them to plan land use that better preserves chimp habitats.
Landsat images compare the forest cover change between 1972 and 1999 in the region around Gombe National Park. Credits: NASA/Goddard Scientific Visualiztion Studio/Cindy Starr
And the satellite images have been a game changer.
"It was really exciting to see the impact of these images on the villagers," said renowned chimp researcher Jane Goodall. The villagers could identify landmarks and sacred places in the satellite photos. "It was like a piece of reality dropped magically from the sky," she added.
But keeping more of the forest around wouldn't just benefit chimpanzees.
Cutting down forests changes climates, leaving areas warmer and more susceptible to flash floods, which can turn into dangerous mudslides on sloping ground. There are also numerous resources that, once the forest is gone, are no longer available, such as honey, game to hunt, and valuable tree species.
The satellite imagery makes it easier to show how much things have changed, which will hopefully make a big difference, and help conservationists better plan to help chimpanzee populations turn around.


text:
Vetting a Supplier
Effective sourcing must dig deep into supplier attributes and reputations to succeed in today's competitive, data-driven business environment.
Dan Cser
The ability to find and keep exceptional suppliers has always been fundamental to the success of a business, no matter the industry. But there was a time when companies thought it was enough to evaluate their supply partners based simply on price, location, product selection and capacity.
While those qualities remain essential, effective sourcing must look much further than a four-point checklist in today's competitive, data-driven business environment.
When vetting a potential supplier partner, adding attributes such as shared standards for quality, safety records, integrity, employee satisfaction and customer care to the selection criteria will help ensure a reliable, long-lasting supplier relationship.
Remember: When a new supplier joins your team, they represent you when you cannot conveniently represent yourself. You want strong supplier partners you trust and whose business practices are transparent.
That kind of supplier/client relationship can only be established through careful vetting, thoughtful communication, training and trust.
Your customers may be thousands of miles away, or just down the road, but the need to establish a reliable supplier team is the same either way, for a small or mid-size company or a large one. And though resources for vetting and managing risk may be fewer in smaller firms, customers care about results when they evaluate how they are being serviced.
How to begin establishing a new and prosperous relationship? Start networking with your current supplier and client network – companies and individuals you rely on as partners and advocates who represent you well in markets around the world. Ask for feedback about firms they have dealt with. But that's just a start.
Search engines that seek to pair companies with potential suppliers may be another initial step, but Internet searches can be as superficial as dating services. On the surface, a candidate may look spectacular, but you're going to require a lot of time together before a permanent relationship is proposed.
Engaging a new supplier simply on a "good feeling" or the recommendation of a friend or business partner isn't enough. The following steps will help you determine a good fit that will serve you and your clients:
Due Diligence: Check credit reports, online reviews and news reports. Does the supplier have a clean reputation, a strong balance sheet and ample cash flow?
Structure, Size and Management Team: Are you looking for a large supplier who does it all, or a smaller supplier who will provide custom service? The experience and philosophy of the management team—often stated on the company's website—and the company's structure may begin to define how you will interact.
Safety & Integrity: Ask to see the company's safety record. Are there procedures in place that reflect a management team concerned for the safety of their workforce and the approach they will take in handling your products? Are there written policies that reflect the integrity they expect from employees and management?
Quality: Does the potential supplier keep quality and reliability metrics that they will share and discuss?
Employee Satisfaction: Ask about employee turnover and the average length of service of employees. Is regular training available? Is the staff keeping pace with innovations in the industry?
Ability to Communicate: Is this a team that shares information freely—and will keep you in the loop no matter what? You can only determine so much by telephone or video conference. The next step is critical.
A Face-to-Face Meeting: If the relationship is important enough, a face-to-face meeting at the candidate's facility will provide the best information and is essential for helping to answer the important questions that remain. Is the company well organized or chaotic? Is the facility convenient to transportation? Is the facility clean and well organized? Is the team transparent about its strengths and weaknesses? Do employees seem competent, cooperative and proud of the products or services they provide? Do you share the management team's philosophy on customer service, safety and fairness?
A thorough sourcing process is time consuming, but can save costs, delays and protect the reputation of your organization. You only need one major mismatch or bad choice to prove that a careful vetting is worth the effort.
Dan Cser is the agency owner of ICAT Logistics DTW, a freight-forwarding firm based in metro Detroit that specializes in the customized shipments of oversized industrial equipment anywhere in the world on challenging deadlines. He has spent 35 years in the cargo shipping business, with more than 20 years at the helm of ICAT Logistics DTW.
Sears' Supplier Relationships Fragile Amidst Financial Woes
Latest in Sourcing/Procurement
Walmart Creates New Fintech Startup
Research Discovers Global Retail Buying Decisions
Go Paperless with Electronic Invoicing
Prompting a Digital Workforce with Electronic Purchase-to-Pay Solutions
L.I.N.K. Live | SDCE Editors Talk Fashion and Reverse Logistics
Marina, Brielle and Mackenna sit down and discuss the fashion supply chain and how reverse logistics plays a role.
Brielle Jaekel
Marina Mayer
Mackenna Moralez
COVID-19's Role in the Future of Succession Planning
The Coronavirus pandemic is impacting the way that companies hire from within their organizations.
L.I.N.K. | Sourced Craft Cocktails CEO Flips Business Model Amidst Lockdown
Associate editor Brielle Jaekel asks Sourced Craft Cocktails CEO about what it was like to switch the company's business model in the middle of quarantine and the technology provider that made it happen.
Middle Market Companies Will Pivot to New Potential in 2021
While financial forecasts vary, industries like technology, life sciences and healthcare that helped to power business continuity and advance COVID-19 care are particularly optimistic for growth in 2021.
BDO LLP
Top 10 Supply Chain Trends in 2021
Whether it's spoilage, delivery timetables, quality control or cyberattacks, successful supply chains can only support patients and customers if they are resilient.
Association for Supply Chain Management (ASCM)
4 Key Drivers of 2021
While the biggest issue for 2021 remains the rollout of a viable vaccine, the manufacturing industry is looking to re-invent itself in preparation for the remainder of the twenties.
Fictiv
2021: The Year of the Healthcare Supply Chain's Digital Transformation
Here are five predictions for how the healthcare supply chain will continue to modernize and drive the industry's digital transformation.
Global Healthcare Exchange (GHX)
Companies Still Struggle to Digitize Invoice Processing
Survey results indicate that companies are slow to change when it comes to digitally transforming invoice processing and other financial documents.
L.I.N.K. Live | SDCE Editors Give Their 2021 Predictions
Marina, Brielle and Mackenna reunite for the first episode of L.I.N.K. Live in 2021 and give their new year predictions.
Protos Security Acquires Mulligan Security
By continuing to invest in its management team, technology and service capabilities, Protos is more aggressively positioned in the security marketplace.
Protos Security
How On-Demand Manufacturing Can Limit Supply Chain Disruptions
On-demand manufacturing makes it possible to manufacture goods only when needed and in the quantities required.
Brian Rainey
3 Key Trends for OEMs in COVID-19 and the Holidays
Here are three things to help navigate the holiday season and strike the perfect balance between appealing to consumers and long-term financial security.
Syncron Inc.
A Long-Term View on the Post-Pandemic Supply Chain
The critical precursor to tackling all the challenges facing supply chain managers will involve managing key tradeoffs, including striking a balance between security and costs so that your supply chain can withstand more frequent disruptions.
5 Transformative E-Commerce Trends for 2021
Facing an uncertain market, every seller should be in a state of digital transformation and creating multiple contingency plans, informed by the lessons learnt this year.
PingPong Payments
Why Vaccine Delivery May Need to Lean Heavily on Technology
Modern digital solutions will not only help to reduce the impact of the "unexpected," but also will lay the groundwork for more seamless distribution and delivery vaccines.
Bringg
Procurement's Next Evolution: The One We've All Been Waiting For
Procurement and supply chain professionals are in a prime position to leverage technology and automation to increase agility, think bigger and act even more strategically to guide their organizations through whatever comes next.
JAGGAER
How Contracts Help Build Resiliency in the Face of Unexpected Supply Chain Interruptions
By carefully analyzing force majeure clauses, building resiliency in other parts of contracts and streamlining the overall contracts process, companies can better navigate the remainder of the pandemic.
Parker Poe Adams & Bernstein LLP
Procurement Predictions for 2021 and Beyond
We need to be nimble change managers who are calm under pressure and ready to help lead our companies to mitigate the risks of a progressively uncertain world.
Fairmarkit
Consider Environmental Factors in Sourcing Decisions
To survive and thrive, leading companies are thinking more broadly by considering strategic factors in sourcing decisions and continuing to invest in deeper supplier relationships.
APQC
COVID-19 Exposes the Need to Bridge T&E with Other Business Spend Management Practices
To effectively control overall corporate spend and achieve tighter control over the supply chain, travel procurement needs to be unified with a company's overall business spend.
COVID-19 Vaccines, an Urgent Global Need and a Supply Chain Challenge
Urgent and worldwide demand for vaccination creates an immense logistics challenge. Distributors and healthcare providers will need to navigate the vaccine cold chain.
L.I.N.K. | SDCE Editors Talk Sourcing, Procurement & Offshoring Amid a Pandemic
Marina, Brielle and Mackenna interview with John Scannapieco, chair of Baker Donelson's global business team, to discuss how corporations have been rethinking their supply chains since the start of the trade war.
Resilience is Key to Surviving Increased Online Demand this Peak Season
Increased online demand generated through large-scale promotions can be daunting at the best of times, but without careful planning, this surge towards e-commerce can and will present a logistical nightmare for brands.
PFSweb, Inc.
The Rise of the External Manufacturer
Delegating manufacturing to an outside source allows companies to hedge their bets on innovative new products by shifting their spend on marketing rather than hard assets.
The Future of Green Procurement and its Role in Sustainability Initiatives
Green procurement plays an essential role in driving sustainability, and is often the missing link between stakeholders, suppliers and commercial teams.
Proxima Group
Michigan State University, Maine Pointe Study Says Pandemic Illuminated Weaknesses in Aviation, Aerospace and Defense Supply Chain
According to the white paper, pressure seen in both the commercial and defense aviation sectors is the result of a long-standing cost-down model, with the pandemic bringing out weaknesses that have been present for decades.
Electrocomponents plc Acquires Synovos for $145M
The agreement with Synovos will give the newly combined organization an even stronger position with global clients in a range of industries, including life sciences, consumer health, chemicals and more.
Synovos


When our body gets sick, our natural immune system responds. Sometimes, however, a disease disables this system and spreads. So it would be good, if our immune system could be re-started in an individually targeted manner. Researchers at Bremen's Jacobs University have developed a method that standardizes the necessary preliminary analyses for personal drugs and can thus accelerate their production to an unexpected degree. Two pharmaceutical companies are now using the method for the first time as a test.
When a cell gets sick, a sophisticated disease reporting process is triggered: In the cell, a protein component that is characteristic for the respective disease binds to a carrier molecule, a so-called MHC-Class-I protein. It takes the protein "piggyback" and carries it out of the cell and onto its surface. There, based on the protein freight, the T-cells of the body's immune system detect that the cell is diseased – and destroy it. In cancerous tumors or viral infections, however, various mechanisms spring into action to disable this protective system. Some tumors, for instance, excrete certain hormones that distract the T-cells from their task: They "forget" to destroy diseased cells. One idea to reverse this process is so-called immunotherapy. It uses drugs to achieve a targeted re-invigoration of the patient's personal immune response.
For such custom-tailored pharmacology, it is first necessary to examine exactly how the defending immune cells of a particular patient react to the status information "cancer" or "virus": To do so, it is necessary to reproduce the natural disease reporting process artificially in a test tube. A research group under the biochemist and cell biologist Sebastian Springer of Jacobs University in Bremen has developed a method to do just that.
Springer describes the basic questions of his research as follows: To ensure that everything in the lab works the way it does in our body – messenger protein, carrier molecule, detection and containment of the disease – "it is important to know when and under what conditions which component is where on the cell and how the transport from inside to out takes place." For instance, his team discovered that the MHC-Class-I molecule goes through a number of temporary precursor forms before reaching a stable form. Only then is it possible for the messenger protein to dock. In this stable form, another chemical component occupies the position at which a messenger protein otherwise docks. It is precisely this MHC-Class-I molecule with a placeholder for any given messenger protein that the Bremen group can create artificially. So far, their leader, Springer, holds the only patent in the world for it. A great leap forward for medicinal research, because it can be used to study the immune response of individual patients to any conceivable disease.
Currently, about 10,000 MHC-Class-I carrier molecules are known. Some occur only rarely. But some are active in up to 30 per cent of all people. Clinical research will start with them. "In our lab, we cannot invent any revolutionary therapy. But we can create the prerequisites, so that the right people can succeed in doing so," says Springer.
Two pharmaceutical companies are now using his patent for the first time. In addition, one company has purchased ten micrograms of the finished MHC-Class-I precursor forms. That is less than the weight of a human egg cell. Nevertheless, it currently takes about six weeks and costs about 15,000 Euro to produce this small amount. However, many methods that were once enormously timeconsuming and expensive are now routine medical practices. So there are opportunities: Artificial insulin for diabetics, for example, is a standard today – tomorrow personal medications may be as well.


The Quay is situated approximately 3/4 miles south west of Southampton City Centre within Ocean Village, a mixed-use marina comprising offices, residential apartments and waterfront bars and restaurants. The Quay is a purpose built, newly-refurbished four storey office building situated in the sought-after waterfront location of Ocean Village. The building, which is of traditional construction, was built in the late 1990's and has been fully refurbished to provide high quality accommodation. Each floor benefits from both male and female WCs, with disabled facilities on alternate floors. The Quay benefits from its own private parking area, with occupiers also being able to make use of the abundance of parking that Ocean Village provides. The parking ratio is circa 1:210 sq ft. The newly refurbished reception and entrance doors provide dual access from both the public and private parking areas, ensuring a great client experience from car park arrival through to office suites via the impressive newly refurbished reception area and refreshed lift and stair access.