text:
module Interpreter (
  evalBlock, evalDecls, evalExpr, evalAtom,
  liftInterpM, InterpM, Interp, unsafeLiftInterpMCatch,
  indices, indicesLimit, matchUPat,
  applyIntBinOp, applyIntCmpOp,
  applyFloatBinOp, applyFloatUnOp) where

import Control.Monad
import Control.Monad.IO.Class
import qualified Data.List.NonEmpty as NE
import Data.Maybe (fromJust)
import Data.List (elemIndex)
import Data.Foldable (toList)
import Data.Functor
import Data.Word
import Foreign.Ptr
import Foreign.Marshal.Alloc
import System.IO.Unsafe

import CUDA
import Runtime
import Err
import LabeledItems
import Types.Core

import Name
import Syntax
import QueryType
import PPrint ()
import Util ((...), iota, onSndM, restructure)
import Builder
import CheapReduction (cheapNormalize)

newtype InterpM (r::IR) (i::S) (o::S) (a:: *) =
  InterpM { runInterpM' :: SubstReaderT (AtomSubstVal r) (EnvReaderT IO) i o a }
  deriving ( Functor, Applicative, Monad
           , MonadIO, ScopeReader, EnvReader, MonadFail, Fallible
           , SubstReader (AtomSubstVal r))

class ( SubstReader (AtomSubstVal r) m, EnvReader2 m
      , Monad2 m, MonadIO2 m)
      => Interp r m | m -> r

instance Interp r (InterpM r)

liftInterpM :: (EnvReader m, MonadIO1 m) => InterpM r n n a -> m n a
liftInterpM cont = do
  resultIO <- liftEnvReaderT $ runSubstReaderT idSubst $ runInterpM' cont
  liftIO resultIO
{-# INLINE liftInterpM #-}

-- Variant of liftInterpM meant for internal interpretation.
-- Discharges the IO unsafely, and catches errors.
-- TODO Can we implement a FakeIOT monad transformer that provides
-- MonadIO but with liftIO = fail ?  Then we could call the interpreter
-- while guaranteeing that no real IO actually happens.
unsafeLiftInterpMCatch :: (EnvReader m) => InterpM r n n a -> m n (Except a)
unsafeLiftInterpMCatch cont = do
  env <- unsafeGetEnv
  Distinct <- getDistinct
  return $ unsafePerformIO $ catchIOExcept $ runInterpM env cont
{-# INLINE unsafeLiftInterpMCatch #-}

evalBlock :: Interp r m => Block r i -> m i o (Atom r o)
evalBlock (Block _ decls result) = evalDecls decls $ evalAtom result

evalDecls :: Interp r m => Nest (Decl r) i i' -> m i' o a -> m i o a
evalDecls Empty cont = cont
evalDecls (Nest (Let b (DeclBinding _ _ rhs)) rest) cont = do
  result <- evalExpr rhs
  extendSubst (b @> SubstVal result) $ evalDecls rest cont
{-# SCC evalDecls #-}

-- XXX: this doesn't go under lambda or pi binders
traverseSurfaceAtomNames
  :: (SubstReader (AtomSubstVal r) m, EnvReader2 m)
  => Atom r i
  -> (AtomName r i -> m i o (Atom r o))
  -> m i o (Atom r o)
traverseSurfaceAtomNames atom doWithName = case atom of
  Var v -> doWithName v
  Lam _    -> substM atom
  TabLam _ -> substM atom
  Pi  _    -> substM atom
  TabPi  _ -> substM atom
  DepPair l r ty -> DepPair <$> rec l <*> rec r <*> substM ty
  DepPairTy _ -> substM atom
  Con con -> Con <$> mapM rec con
  TC  tc  -> TC  <$> mapM rec tc
  DictCon _ -> substM atom
  DictTy  _ -> substM atom
  Eff _ -> substM atom
  TypeCon sn defName (DataDefParams params) -> do
    defName' <- substM defName
    TypeCon sn defName' <$> (DataDefParams <$> mapM (onSndM rec) params)
  RecordTy _ -> substM atom
  VariantTy _      -> substM atom
  LabeledRow _     -> substM atom
  ACase scrut alts resultTy ->
    ACase <$> rec scrut <*> mapM substM alts <*> rec resultTy
  -- TODO: we can get rid of these cases. We just need to make the interpreter
  -- monomorphic, or at least restrict `r` to not allow `SimpToImpIR`.
  BoxedRef _       -> error "Should only occur in Imp lowering"
  DepPairRef _ _ _ -> error "Should only occur in Imp lowering"
  AtomicIVar _ _   -> error "Should only occur in Imp lowering"
  ProjectElt idxs v -> getProjection (toList idxs) <$> rec (Var v)
  where
    rec x = traverseSurfaceAtomNames x doWithName

evalAtom :: forall i o r m. Interp r m => Atom r i -> m i o (Atom r o)
evalAtom atom = traverseSurfaceAtomNames atom \v -> do
  env <- getSubst
  case env ! v of
    SubstVal x -> return x
    Rename v' -> do
      lookupAtomName v' >>= \case
        LetBound (DeclBinding _ _ (Atom x)) -> dropSubst $ evalAtom $ unsafeCoerceIRE @r x
        TopFunBound _ _ -> return $ Var v'
        PtrLitBound _ ptrName -> do
          ~(PtrBinding ptr) <- lookupEnv ptrName
          return $ Con $ Lit $ PtrLit ptr
        bindingInfo -> error $ "shouldn't have irreducible atom names left. Got " ++ pprint bindingInfo
{-# SCC evalAtom #-}

evalExpr :: Interp r m => Expr r i -> m i o (Atom r o)
evalExpr expr = case expr of
  App f xs -> do
    f' <- evalAtom f
    xs' <- mapM evalAtom xs
    case fromNaryLam (length xs) f' of
      Just (bsCount, NaryLamExpr bs _ body) -> do
        let (xsPref, xsRest) = NE.splitAt bsCount xs'
        ans <- dropSubst $ extendSubst (bs@@>(SubstVal <$> xsPref)) $ evalBlock body
        case nonEmpty xsRest of
          Nothing    -> return ans
          Just rest' -> dropSubst $ evalExpr $ App ans rest'
      Nothing -> error $ "Failed to reduce application!" ++ pprint expr
  -- TODO: de-dup with App
  TabApp f xs -> do
    f' <- evalAtom f
    xs' <- mapM evalAtom xs
    case fromNaryTabLam (length xs) f' of
      Just (bsCount, NaryLamExpr bs _ body) -> do
        let (xsPref, xsRest) = NE.splitAt bsCount xs'
        ans <- dropSubst $ extendSubst (bs@@>(SubstVal <$> xsPref)) $ evalBlock body
        case nonEmpty xsRest of
          Nothing    -> return ans
          Just rest' -> dropSubst $ evalExpr $ TabApp ans rest'
      Nothing -> error "Failed to reduce application!"
  Atom atom -> evalAtom atom
  Op op     -> evalOp op
  Case e alts _ _ -> do
    e' <- evalAtom e
    case trySelectBranch e' of
      Nothing -> error "branch should be chosen at this point"
      Just (con, arg) -> do
        Abs b body <- return $ alts !! con
        extendSubst (b @> SubstVal arg) $ evalBlock body
  Hof hof -> case hof of
    RunIO (Lam (LamExpr b body)) ->
      extendSubst (b @> SubstVal UnitTy) $
        evalBlock body
    _ -> error $ "Not implemented: " ++ pprint expr
  -- TODO(alex): implement
  Handle _ _ _ -> error $ "Not implemented: " ++ pprint expr
{-# SCC evalExpr #-}

evalOp :: Interp r m => Op r i -> m i o (Atom r o)
evalOp expr = mapM evalAtom expr >>= \case
  BinOp op x y -> return $ case op of
    IAdd -> applyIntBinOp   (+) x y
    ISub -> applyIntBinOp   (-) x y
    IMul -> applyIntBinOp   (*) x y
    IDiv -> applyIntBinOp   div x y
    IRem -> applyIntBinOp   rem x y
    FAdd -> applyFloatBinOp (+) x y
    FSub -> applyFloatBinOp (-) x y
    FMul -> applyFloatBinOp (*) x y
    FDiv -> applyFloatBinOp (/) x y
    ICmp cmp -> case cmp of
      Less         -> applyIntCmpOp (<)  x y
      Greater      -> applyIntCmpOp (>)  x y
      Equal        -> applyIntCmpOp (==) x y
      LessEqual    -> applyIntCmpOp (<=) x y
      GreaterEqual -> applyIntCmpOp (>=) x y
    _ -> error $ "Not implemented: " ++ pprint expr
  UnOp op x -> return $ case op of
    FNeg -> applyFloatUnOp (0-) x
    _ -> error $ "Not implemented: " ++ pprint expr
  PtrOffset (Con (Lit (PtrLit (PtrLitVal (a, t) p)))) (IdxRepVal i) ->
    return $ Con $ Lit $ PtrLit (PtrLitVal (a, t) $ p `plusPtr` (sizeOf t * fromIntegral i))
  PtrLoad (Con (Lit (PtrLit (PtrLitVal (Heap CPU, t) p)))) ->
    Con . Lit <$> liftIO (loadLitVal p t)
  PtrLoad (Con (Lit (PtrLit (PtrLitVal (Heap GPU, t) p)))) ->
    liftIO $ allocaBytes (sizeOf t) $ \hostPtr -> do
      loadCUDAArray hostPtr p (sizeOf t)
      Con . Lit <$> loadLitVal hostPtr t
  PtrLoad (Con (Lit (PtrLit (PtrLitVal (Stack, _) _)))) ->
    error $ "Unexpected stack pointer in interpreter"
  CastOp destTy x -> do
    sourceTy <- getType x
    let failedCast = error $ "Cast not implemented: " ++ pprint sourceTy ++
                             " -> " ++ pprint destTy
    case (sourceTy, destTy) of
      (BaseTy (Scalar sb), BaseTy (Scalar db)) -> case (sb, db) of
        (Int64Type, Int32Type) -> do
          let Con (Lit (Int64Lit v)) = x
          return $ Con $ Lit $ Int32Lit $ fromIntegral v
        (Word64Type, Word32Type) -> do
          let Con (Lit (Word64Lit v)) = x
          return $ Con $ Lit $ Word32Lit $ fromIntegral v
        _ -> failedCast
      _ -> failedCast
  Select cond t f -> case cond of
    Con (Lit (Word8Lit 0)) -> return f
    Con (Lit (Word8Lit 1)) -> return t
    _ -> error $ "Invalid select condition: " ++ pprint cond
  ToEnum ty@(TypeCon _ defName _) i -> do
      DataDef _ _ cons <- lookupDataDef defName
      return $ Con $ Newtype ty $ Con $
        SumAsProd (cons <&> const UnitTy) i (cons <&> const UnitVal)
  ProjMethod dict i -> evalProjectDictMethod dict i
  VariantMake ty@(VariantTy (NoExt tys)) label i v -> do
    let ix = fromJust $ elemIndex (label, i) $ toList $ reflectLabels tys
    return $ Con $ Newtype ty $ SumVal (toList tys) ix v
  _ -> error $ "Not implemented: " ++ pprint expr

evalProjectDictMethod :: Interp r m => Atom r o -> Int -> m i o (Atom r o)
evalProjectDictMethod d i = cheapNormalize d >>= \case
  DictCon (InstanceDict instanceName args) -> dropSubst do
    args' <- mapM evalAtom args
    InstanceDef _ bs _ body <- lookupInstanceDef instanceName
    let InstanceBody _ methods = body
    let method = methods !! i
    extendSubst (bs@@>(SubstVal <$> args')) $
      evalBlock $ unsafeCoerceIRE method
  Con (ExplicitDict _ method) -> do
    case i of
      0 -> return method
      _ -> error "ExplicitDict only supports single-method classes"
  DictCon (IxFin n) -> projectIxFinMethod (toEnum i) n
  Con (Newtype (DictTy (DictType _ clsName _)) (ProdVal mts)) -> do
    ClassDef _ _ _ _ mTys <- lookupClassDef clsName
    let (m, MethodType _ mTy) = (mts !! i, mTys !! i)
    case mTy of
      Pi _ -> return m
      _    -> dropSubst $ evalExpr $ App (head mts) (UnitVal NE.:| [])
  _ -> error $ "Not a simplified dict: " ++ pprint d

matchUPat :: Interp r m => UPat i i' -> Atom r o -> m i o (SubstFrag (AtomSubstVal r) i i' o)
matchUPat (WithSrcB _ pat) x = do
  x' <- dropSubst $ evalAtom x
  case (pat, x') of
    (UPatBinder b, _) -> return $ b @> SubstVal x'
    (UPatCon _ ps, Con (Newtype (TypeCon _ dataDefName _) _)) -> do
      DataDef _ _ cons <- lookupDataDef dataDefName
      case cons of
        [DataConDef _ _ idxs] -> matchUPats ps [getProjection ix x' | ix <- idxs]
        _ -> error "Expected a single ADt constructor"
    (UPatPair (PairB p1 p2), PairVal x1 x2) -> do
      matchUPat p1 x1 >>= (`followedByFrag` matchUPat p2 x2)
    (UPatDepPair (PairB p1 p2), PairVal x1 x2) -> do
      matchUPat p1 x1 >>= (`followedByFrag` matchUPat p2 x2)
    (UPatUnit UnitB, UnitVal) -> return emptyInFrag
    (UPatRecord pats, Record initTys initXs) -> go initTys (restructure initXs initTys) pats
      where
        go :: Interp r m
           => LabeledItems (Type r o) -> LabeledItems (Atom r o)
           -> UFieldRowPat i i' -> m i o (SubstFrag (AtomSubstVal r) i i' o)
        go tys xs = \case
          UEmptyRowPat    -> return emptyInFrag
          URemFieldsPat b -> return $ b @> SubstVal (Record tys $ toList xs)
          UDynFieldsPat ~(InternalName _ (UAtomVar v)) b rest ->
            evalAtom (Var v) >>= \case
              LabeledRow f | [StaticFields fields] <- fromFieldRowElems f -> do
                let (items, remItems) = splitLabeledItems fields xs
                let (itemTys, remTys) = splitLabeledItems fields tys
                frag <- matchUPat b (Record itemTys $ toList items)
                frag `followedByFrag` go remTys remItems rest
              _ -> error "Unevaluated fields?"
          UDynFieldPat ~(InternalName _ (UAtomVar v)) b rest ->
            evalAtom (Var v) >>= \case
              Con (LabelCon l) -> go tys xs $ UStaticFieldPat l b rest
              _ -> error "Unevaluated label?"
          UStaticFieldPat l b rest -> case popLabeledItems l xs of
            Just (val, xsTail) -> do
              let Just (_, tysTail) = popLabeledItems l tys
              headFrag <- matchUPat b val
              headFrag `followedByFrag` go tysTail xsTail rest
            Nothing -> error "Field missing in record"
    (UPatVariant _ _ _  , _) -> error "can't have top-level may-fail pattern"
    (UPatVariantLift _ _, _) -> error "can't have top-level may-fail pattern"
    (UPatTable bs, tab) -> do
      getType tab >>= \case
        TabTy b _ -> do
          xs <- dropSubst do
            idxs <- indices (binderAnn b)
            forM idxs \i -> evalExpr $ TabApp tab (i:|[])
          matchUPats bs xs
        _ -> error $ "not a table: " ++ pprint tab
    _ -> error "bad pattern match"
  where followedByFrag f m = extendSubst f $ fmap (f <.>) m

matchUPats :: Interp r m => Nest UPat i i' -> [Atom r o] -> m i o (SubstFrag (AtomSubstVal r) i i' o)
matchUPats Empty [] = return emptyInFrag
matchUPats (Nest b bs) (x:xs) = do
  s <- matchUPat b x
  extendSubst s do
    ss <- matchUPats bs xs
    return $ s <.> ss
matchUPats _ _ = error "mismatched lengths"

-- XXX: It is a bit shady to unsafePerformIO here since this runs during typechecking.
-- We could have a partial version of the interpreter that fails when any IO is to happen.
liftBuilderInterp ::
  (forall l. (Emits l, DExt n l) => BuilderM r l (Atom r l))
  -> InterpM r n n (Atom r n)
liftBuilderInterp cont = do
  Abs decls result <- liftBuilder $ buildScoped cont
  evalDecls decls $ evalAtom result
{-# SCC liftBuilderInterp #-}

runInterpM :: Distinct n => Env n -> InterpM r n n a -> IO a
runInterpM bindings cont =
  runEnvReaderT bindings $ runSubstReaderT idSubst $ runInterpM' cont
{-# SCC runInterpM #-}

unsafeLiftInterpM :: (EnvReader m) => InterpM r n n a -> m n a
unsafeLiftInterpM cont = do
  env <- unsafeGetEnv
  Distinct <- getDistinct
  return $ unsafePerformIO $ runInterpM env cont
{-# INLINE unsafeLiftInterpM #-}

indices :: EnvReader m => IxType r n -> m n [Atom r n]
indices ixTy = unsafeLiftInterpM $ do
  ~(IdxRepVal size) <- interpIndexSetSize ixTy
  forM (iota size) \i -> interpUnsafeFromOrdinal ixTy $ IdxRepVal i
{-# SCC indices #-}

interpIndexSetSize :: IxType r n -> InterpM r n n (Atom r n)
interpIndexSetSize ixTy = liftBuilderInterp $ indexSetSize $ sink ixTy

interpUnsafeFromOrdinal :: IxType r n -> Atom r n -> InterpM r n n (Atom r n)
interpUnsafeFromOrdinal ixTy i = liftBuilderInterp $ unsafeFromOrdinal (sink ixTy) (sink i)

-- A variant of `indices` that accepts an expected number of them and
-- only tries to construct the set if the expected number matches the
-- given index set's size.
indicesLimit :: EnvReader m => Int -> IxType r n -> m n (Either Word32 [Atom r n])
indicesLimit sizeReq ixTy = unsafeLiftInterpM $ do
  ~(IdxRepVal size) <- interpIndexSetSize ixTy
  if size == fromIntegral sizeReq then
    Right <$> forM [0..size-1] \i -> interpUnsafeFromOrdinal ixTy $ IdxRepVal i
  else
    return $ Left size
{-# SCC indicesLimit #-}

-- === Helpers for function evaluation over fixed-width types ===

applyIntBinOp' :: (forall a. (Eq a, Ord a, Num a, Integral a)
               => (a -> Atom r n) -> a -> a -> Atom r n) -> Atom r n -> Atom r n -> Atom r n
applyIntBinOp' f x y = case (x, y) of
  (Con (Lit (Int64Lit xv)), Con (Lit (Int64Lit yv))) -> f (Con . Lit . Int64Lit) xv yv
  (Con (Lit (Int32Lit xv)), Con (Lit (Int32Lit yv))) -> f (Con . Lit . Int32Lit) xv yv
  (Con (Lit (Word8Lit xv)), Con (Lit (Word8Lit yv))) -> f (Con . Lit . Word8Lit) xv yv
  (Con (Lit (Word32Lit xv)), Con (Lit (Word32Lit yv))) -> f (Con . Lit . Word32Lit) xv yv
  (Con (Lit (Word64Lit xv)), Con (Lit (Word64Lit yv))) -> f (Con . Lit . Word64Lit) xv yv
  _ -> error "Expected integer atoms"

applyIntBinOp :: (forall a. (Num a, Integral a) => a -> a -> a) -> Atom r n -> Atom r n -> Atom r n
applyIntBinOp f x y = applyIntBinOp' (\w -> w ... f) x y

applyIntCmpOp :: (forall a. (Eq a, Ord a) => a -> a -> Bool) -> Atom r n -> Atom r n -> Atom r n
applyIntCmpOp f x y = applyIntBinOp' (\_ -> (Con . Lit . Word8Lit . fromIntegral . fromEnum) ... f) x y

applyFloatBinOp :: (forall a. (Num a, Fractional a) => a -> a -> a) -> Atom r n -> Atom r n -> Atom r n
applyFloatBinOp f x y = case (x, y) of
  (Con (Lit (Float64Lit xv)), Con (Lit (Float64Lit yv))) -> Con $ Lit $ Float64Lit $ f xv yv
  (Con (Lit (Float32Lit xv)), Con (Lit (Float32Lit yv))) -> Con $ Lit $ Float32Lit $ f xv yv
  _ -> error "Expected float atoms"

applyFloatUnOp :: (forall a. (Num a, Fractional a) => a -> a) -> Atom r n -> Atom r n
applyFloatUnOp f x = applyFloatBinOp (\_ -> f) undefined x


text:
Gov. Whitmer Announces Economic Development Grants Supporting 304 New Jobs in St. Clair County, 44 New Jobs in Marquette County
LANSING, Mich. -- Governor Gretchen Whitmer today announced economic development grants for Superior Extrusion, Inc (SEI) to support the company's expansion and creation of 44 new jobs at its location at Sawyer International Airport in Forsyth Township (Marquette County) and a Transportation Economic Development (TEDF) grant that will support 304 new jobs announced earlier this year at Magna Electric Vehicle Structures - Michigan's (MEVSM) new manufacturing facility in the St. Clair Industrial Park in St. Clair County.
"As we put Michigan back to work, these grants demonstrate the collaborative efforts around economic development and infrastructure we are taking here in the state," said Governor Whitmer. "We continue to move forward with creating good jobs for Michiganders while ensuring safe roads for drivers, which will help our state emerge from the pandemic stronger than before. Let's get it done."
Superior Extrusion, Inc. expansion in Marquette County
SEI is a national leader in extruded aluminum products, producing and shipping more than 3,200 custom and standard profiles from its location in the Upper Peninsula. The company uses multiple hydraulic presses to create the aluminum shapes needed to make vehicle parts, docks, trailers, boats, and many other products. In 2020, SEI shipped more than 35 million pounds of extruded aluminum to customers across the county and currently has 160 employees on the site. The company's increased business demands require them to expand their facilities; however, the only option is to the south on land currently occupied by 11th Street, the main route into the airport.
"Superior Extrusion, Inc. has grown tremendously over the past 23 years and expects continued growth in the future due to increasing demands of current customers as well as the addition of new customers and the production of electric vehicles," said SEI Chairman of the Board George LaBlonde III. "We sincerely appreciate our partnership with our local partners, the State of Michigan and the Federal Aviation Administration for their ongoing support as our company continues to grow at Sawyer International Airport and the increased safety and efficient traffic flow that will result in the current expansion."
The Michigan Department of Transportation (MDOT) has awarded a state TEDF grant in the amount of $660,000 to help fund infrastructure improvements associated with the expansion pending all relevant federal approvals. This TEDF grant will help support work performed by the Marquette County Road Commission (MCRC), including relocating 11th Street, building a new roundabout and road from the existing 11th Street south to 10th Street, resurfacing and adding turn lanes on Kelly Johnson Memorial Drive and 10th Street, and other associated road improvements. MCRC is contributing $482,811 to the project.
"The road commission is pleased and excited that we were able work with MDOT and SEI to secure a Category A grant that will help SEI in their expansion efforts," said James M. Iwanicki, P.E., MCRC engineer manager. "The relocation of 11th Street along with the improvements to Kelly Johnson Memorial Drive and 10th Street will greatly improve the road system for the traveling public."
The Michigan Strategic Fund has also authorized an amendment increasing the company's existing Michigan Business Development Program (MBDP) grant to $422,000 to help secure an additional $20.4 million in investment by SEI in Michigan over competing sites in Iowa and Ohio. The company originally received a $150,000 MBDP grant in 2017 for the creation of 30 jobs. Prior to this amendment, SEI had met the first jobs and investment milestones required.
"It has been exciting to see Superior Extrusion's growth over the years. Their new expansion is not only providing investment to the Sawyer area but also additional family sustaining jobs," said Lake Superior Community Partnership Director of Business Development Mary Myers. "We're very fortunate to have them in Marquette County."
The project will provide competitive wages that align with a strategic focus of the Michigan Economic Development Corp. in supporting manufacturing industry growth in the state. The project will represent one of the largest manufacturing expansions in the U.P. in years.
Magna Electric Vehicle Structures - Michigan, Inc. in St. Clair County
MDOT has also awarded a state TEDF grant that will support infrastructure improvements related to Magna's Magna Electric Vehicle Structures - Michigan's (MEVSM) division, a new manufacturing facility in the St. Clair Industrial Park. That project, and the 304 new jobs in St. Clair County it will support, was announced by Gov. Whitmer in February following approval of a $1.5 million MBDP grant approved by the Michigan Strategic Fund.
"Improving the surrounding transportation infrastructure is key to the long-term success of our new manufacturing operation in St. Clair," said Chris Hinman, general manager of MEVSM. "We appreciate all of the work done by the City of St. Clair and MDOT to make this project happen."
The expansion will support Magna's contract with General Motors (GM) to provide battery enclosures for the soon-to-be manufactured EV Hummer at GM's Factory Zero, located on the site of the former Detroit/Hamtramck Assembly Plant, also a TEDF grant recipient earlier this year.
A key route connecting the site to I-94, Carney Drive is in poor condition and its continued decline would impact the company's ability to ship their finished products. The City of St. Clair committed to rebuild Carney Drive and improve its intersections at Vine Street and Clinton Avenue, which gave the company confidence to move forward with their proposed development at the industrial park. This TEDF Category A grant combined with additional City of St. Clair funds will be used to complete the road improvements. The total project cost is $1,306,150, including $864,218 in Category A funds and $441,932 from the City of St. Clair.
"Through the partnership and joint investment of MDOT and Magna, the City of St. Clair will improve our main trucking route," said Warren Rothe, city superintendent for the City of St. Clair. "MDOT's TEDF program has been instrumental in supporting the enhancement of our transportation infrastructure. The city welcomes these public-private partnerships that drive economic development throughout our city and state as a whole."
About TEDF
Enacted in 1987 and reauthorized in 1993, the TEDF helps finance highway, road and street projects that are critical to the movement of people and products, and getting workers to their jobs, materials to growers and manufacturers, and finished goods to consumers.
TEDF "Category A" or "Targeted Industries Program" grants provide state funding for public roadway improvements that allow road agencies to respond quickly to the transportation needs of expanding companies and eliminate inadequate roadways as an obstacle to private investment and job creation. Eligible road agencies include MDOT, county road commissions, cities and villages. More information about the program is available online at www.Michigan.gov/TEDF.

redpajama_set_name: RedPajamaCommonCrawl


text:
"My Love Is Pink"  é uma canção do girl group britânico Sugababes, como segundo single do quinto álbum de estúdio do grupo Change (2007). Foi escrito pelas integrantes da banda Keisha Buchanan e Heidi Range em colaboração com a equipe de composição e produção Xenomania, que produziu a música. "My Love Is Pink" é uma música pop dance e electro uptempo, que lembra as canções gravadas pelo grupo feminino britânico, Girls Aloud. A música foi lançada em 10 de dezembro de 2007 no Reino Unido e na Irlanda como o segundo single do álbum. Recebeu críticas mistas dos críticos, que elogiaram a composição e o som, mas criticaram seu conteúdo lírico. A música alcançou o número cinco no gráfico do Commercial Pop Club do Reino Unido e no número 51 no Slovakian Singles Chart. As Sugababes cantaram "My Love Is Pink" no Oxegen Festival 2008.

Composição
"My Love Is Pink" foi escrito pelas integrantes dos Sugababes, Keisha Buchanan e Heidi Range, em colaboração com a equipe britânica de composição e produção Xenomania, composta por Miranda Cooper, Brian Higgins, Tim Powell, Lisa Cowling e Nick Coler. Higgins e Xenomania produziram a música. Foi mixado por Powell e Higgins; programou-o com Cooper e Gray. "My Love Is Pink" foi enviado as lojas digitais no Reino Unido e na Irlanda em 10 de dezembro de 2007 como o segundo single do Change (2007).

A canção é uma música pop, dance e electro uptempo. A instrumentação é fornecida por teclados e guitarra. Nick Levine, da Digital Spy, a descreveu como um "hino ligeiramente desquiteado que opera no ponto do electro dos dos anos noventa". Vários críticos observaram semelhanças entre a música e as interpretadas pelo grupo feminino britânico, Girls Aloud. "My Love Is Pink" também foi considerado pelos críticos como um hino gay.

Recepção

A música recebeu críticas mistas dos críticos, que eram ambivalentes em relação à sua composição. Thomas H Green, do The Daily Telegraph, descreveu-o como "pop beligerantemente efervescente". Alexis Petridis, do The Guardian, classificou a música como "propulsor" e considerou-a como um exemplo elegante de "marca registrada inteligente, pop referencial". Victoria Segal de The Times, descreveu "My Love Is Pink" como indestrutível e escreveu que confirma o status do grupo como "uma banda biónica". Lauren Murphy da Entertainment Ireland, caracterizou-a como uma das "faixas emocionantes" do álbum, enquanto o Tom Young da BBC, elogiou a música como "uma descara faixa do Girls Aloud". De acordo com Leon McDermott do The Sunday Herald, a música "grita e se silencia com seu brio atrevido". Um crítico do The Liverpool Daily Post & Echo, o considerou um dos destaques do álbum.

No entanto, as letras da música eram um ponto focal para a crítica. Andy Gill, do The Independent, descartou-o como um "eufemismo muito longe", enquanto Keith Bruce, do Sunday Herald, chamou a música de "horrível". Gavin Martin do Daily Mirror, descreveu a faixa como um "alegre, mas um reflexo pálido do passado G.A.Y. glorioso do disco". A revista Hot Press, Pete Murphy, sentiu que a música era uma destruição e chamou-a de "forragem de pista de dança folheada com uma batida de sofisticada, urbana e afro-caribenha". Um escritor de The Scotsman, afirmou que considerava a música como "outro daqueles toques anônimos, produzidos em massa cantados por uma vocalista sem rosto". Após o lançamento do single, "My Love Is Pink" atingiu o pico de número cinco no gráfico do Commercial Pop Club do Reino Unido e no número 51 no Slovakian Singles Chart.

Performances ao vivo
"My Love Is Pink" foi incluído na set list para a Change Tour de 2008 das Sugababes, no qual usavam vestidos de prata e plástico. O trio cantou a música no festival Oxegen 2008 como parte do set-list, que incluiu os singles número um "Freak Like Me", "Round Round", "Hole in the Head", "Push the Button" e "About You Now".

Faixas
Digital single
 My Love Is Pink (versão do rádio) – 3:44

Posição nas paradas

Histórico de lançamento

Ligações externas

Singles de 2007
Canções de 2007
Canções de música pop
Canções de Sugababes

redpajama_set_name: RedPajamaWikipedia


text:
Paramimiculus pterolophioides är en skalbaggsart som beskrevs av Stefan von Breuning 1964. Paramimiculus pterolophioides ingår i släktet Paramimiculus och familjen långhorningar.

Artens utbredningsområde är Moçambique. Inga underarter finns listade i Catalogue of Life.

Källor

Långhorningar
pterolophioides


Czech, P. About Journal. Scientific Journal of Silesian University of Technology. Series Transport. 1983, 1, 1-10. ISSN: 0209-3324. DOI: https://doi.org/10.20858/sjsutst.1983.1.1.
"Scientific Journal of Silesian University of Technology. Series Transport" (SJSUT.ST) is a quarterly published by the Faculty of Transport of Silesian University of Technology. Silesian University of Technology is one of the world, for largest public technical university in Poland which operate from 70 years.
The journal was published continuously since 1983.
Fig. 1. Cover of the first issue of Scientific Journal of Silesian University of Technology. Series Transport.
In the journal there are published only original works, which have never been published before and there are not published in any proceedings.
The thematic scope of the published articles concerns a wide range of transport problems, in particular, the issues of the technical means of transport (construction and technical exploitation), telematics solutions for supporting transport processes' realization, traffic engineering, transport infrastructure, planning transport systems, transport management and economics, environmental protection, health and ergonomic problems, safety in transport, quality and effectiveness of transport, education in transport industry, and transport law.
The journal is published as open access. This means that the results of research are freely available to a wide range of interested readers and allows for a global exchange of knowledge.
Fig. 2. Open Access System logotype.
The journal has attained the Directory of Open Access Journals (DOAJ) seal. The seal is a mark of certification for open access journals awarded by the DOAJ, which is one of the biggest community-curated online directories that indexes and provides access to high-quality, open-access and peer-reviewed journals. Journals that adhere to an exceptionally high-level of publishing standards and best practice are awarded the seal as recognition of their efforts. The seal is awarded to a journal that fulfils a set of criteria related to accessibility, openness, discoverability, reuse and author rights. It acts as a signal to readers and authors that a journal has generous use and reuse terms, recognizes author rights and adheres to the highest level of "openness".
Fig. 3. DOAJ Seal logotype.
Fig. 4. Academic Resource Index ResearchBib logotype.
Fig. 7. Cambridge University Libraries logotype.
Fig. 8. CeON Repository logotype.
Fig. 9. Chicago University Library logotype.
Fig. 10. Chinese University of Hong Kong Library logotype.
Fig. 11. Columbia University Libraries logotype.
Fig. 12. CNKI SCHOLAR logotype.
Fig. 16. Directory of Research Journals Indexing logotype.
Fig. 18. Edinburgh University Library logotype.
Fig. 19. ETH Zurich Library logotype.
Fig. 20. Google Scholar logotype.
Fig. 21. HKALL Hong Kong Academic Library logotype.
Fig. 22. Hong Kong Polytechnic University logotype.
Fig. 23. Index Copernicus logotype.
Fig. 24. InfoBase Index logotype.
Fig. 27. Kyoto University Library logotype.
Fig. 28. National Academies of Sciences Engineering Medicine logotype.
Fig. 29. National Library of Poland logotype.
Fig. 30. Open Academic Journals Index logotype.
Fig. 31. Oxford University Libraries logotype.
Fig. 34. Princeton University Library logotype.
Fig. 35. Regensburg University Library logotype.
Fig. 38. Transportation Research Information Services logotype.
Fig. 39. Washington University Libraries logotype.
Fig. 40. Web of Science - Emerging Sources Citation Index logotype.
Fig. 41. Yale University Library logotype.
The quarterly journal has been indexed in the scored journals list of the Polish Ministry of Science and Higher Education (nine points).
The activity reported in the journal has been supported by the Polish Ministry of Science and Higher Education, which granted a subsidy for 2016-17 and 2018-19. The granted funds are intended for activities related to the dissemination of science within the framework of the journal's open access policy.
Fig. 42. The Polish Ministry of Science and Higher Education logotype.
Since Volume 91, all articles have been subject to a proofreading procedure by Academic Proofreading Services Ltd. in the UK.
Fig. 43. Academic Proofreading Services Ltd. (UK) logotype.


This hotel enjoys a stunning setting close to Singaraja, lying just a short boat ride from the unspoilt Menjangan Island. The city of Singaraja is located just a 50 minutes' driving distance away. This wonderful hotel lies in the small, fishing village of Pemuteran, in northern Bali. The hotel is the ideal option for guests who are eager to explore the rich culture and natural beauty of the island. This wonderful hotel welcomes guests with traditional Balinese hospitality. The guest rooms are luxuriously appointed, providing a haven of peace and serenity, in which to completely relax and unwind. Guests are invited to enjoy a host of exciting activities at this hotel. Guests can take advantage of the wide range of facilities and services that the hotel has to offer.
Located on the more secluded northwestern coast of Bali, a world renowned holiday destination, this luxurious establishment boasts a prime location close to shallow coral reefs and natural surroundings. West Bali National Park is just 37 minutes' drive from the hotel and Menjangan Island, a small peaceful retreat, is a 30-minute boat ride. Guest can also take short trips to the numerous waterfalls, lakes and therapeutic hot springs nearby. The property is composed by elegant bungalows featuring wooden Balinese interiors and typical rustic day-beds that will encourage reading a good book. All those sports lovers will feel right at home with the water activities on offer. Snorkelling and scuba-diving are just a few of all the wonderful experiences. In this quiet little corner of the Earth, this hotel brings you a wide range of home-cooked dishes using traditional recipes.
This family-friendly beach hotel is situated on the coast, nestled on the crystal clear waters of Pemuteran Bay with a backdrop of nine majestic mountain tops. Ngurah Rai International Airport is approximately 95 km from the club resort.This property was built on the foundation of community involvement, with local wisdom applied to every aspect. Facilities available to guests in this 24-villa spa complex include a lobby with 24-hour reception and check-out services, a hotel safe and currency exchange facilities, as well as a laundry service (fees apply), TV lounge, café, bar and restaurant. Guests may also take advantage of the Internet access, room service and a car park.All villas offer a private swimming pool and outdoor daybeds. Each villa features a king-size bed, an en suite bathroom with shower, bathtub and hairdryer, a kitchenette with minibar, microwave and tea and coffee making facilities and a private balcony or terrace. Other in-room amenities include a direct dial telephone, satellite TV, Internet access, safe and individually regulated air conditioning.The spa centre offers a variety of soothing massages and therapy treatments. The traditional massages utilise aromatic oils to relieve tension and improve blood circulation. An additional fee applies to all treatments. Guests may also take a dip in the indoor swimming pool with children's swimming area and poolside snack bar, or enjoy a game of tennis. The nearby beach is sandy.For guests' culinary pleasure, the beachfront restaurant serves breakfast, lunch and dinner, and offers international, continental and local Balinese cuisine. Breakfast is served as a buffet, and there is a set menu for lunch and dinner. A la carte options are also available for lunch. Guests can additionally choose from the menu and utilise the room service at their disposal.
Nestled away between the Bali Barat National Park and the Java Sea, the secluded and exclusive Matahari Beach Resort & Spa is a perfect destination for connoisseurs of luxury and relaxation. Experience Matahari's way of life. Wake up to the sound of chirping birds in the tropical garden, listen to the ocean waves during your morning yoga session, explore quaint neighbouring villages and surroundings on bike, and get pampered in the award wining spa before you indulge in a sensual gourmet dinner in a romantic pavilion.
This club resort is located in the Pemuteran region on the tranquil, unspoiled north-west coast of Bali, approximately 50 km from Lovina Beach and 15 km from Menjangan Island. Guests can reach the eco hotel in around three and a half hours from Ngurah Rai International Airport.This property blends wonderfully with nature and was built using only natural indigenous materials. It offers a relaxed setting surrounded by tranquil gardens and ponds and the surrounding mountains enhance the beauty and tranquillity of the establishment, making it the perfect place for families as well as newlyweds. The air-conditioned resort offers guests 45 rooms and a lobby, hotel safe, bar, restaurant and room and laundry services (fees apply to the latter two).All rooms are spacious, bright and designed in a Balinese style. Each room is equipped with modern amenities to ensure guests' comfort, they are surrounded by a lotus pond and lush tropical gardens and all overlook the gardens, ocean, or the mountains. In-room amenities include an en suite bathroom with shower, a double or king-size bed, direct dial telephone, TV, safe, mini fridge and individually regulated air conditioning. Guests may also relax on their private terrace.The outdoor swimming pool is the perfect place to relax and enjoy the sunset while swimming. Guests also can enjoy a spa or massage treatment (fees apply to both) or go snorkelling by the sandy beach near to the hotel (subject to an additional fee).The beachfront restaurant serves breakfast, lunch and dinner, offering international, continental and local Balinese cuisine. Set menu and à la carte options are available for lunch and dinner.
This charming hotel is located in Pemuteran. The property comprises 28 cosy guests rooms. The hotel offers Wi-Fi internet connection on-site. The reception desk is open all day long. Unfortunately, there are no bedrooms where customers can ask for a cot for the little ones. Brits Resort Lovina is not a pet-friendly establishment. Travellers arriving by car will appreciate parking available at Brits Resort Lovina.


text:
Q: Personalize a rectangle node tikz What I want to do is reproduce this example:

and my code is the following (a little bit long, sorry):
\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[scale=1]

\tikzset{
noeudA/.style={
  rectangle,
  inner sep=0pt,
  text width=25mm,
  align=center,
  draw=black,
  fill=green!30,
  minimum height = 10mm
  },
noeudB/.style={
  rectangle,
  inner sep=0pt,
  text width=25mm,
  align=center,
  draw=black,
  fill=green!20,
  minimum height = 10mm
  },
noeudC/.style={
  rectangle,
  inner sep=0pt,
  text width=20mm,
  align=center,
  draw=black,
  fill=green!10,
  minimum height = 12mm
  },
noeudD/.style={
  rectangle,
  inner sep=0pt,
  text width=20mm,
  align=center,
  draw=black,
  fill=blue!10,
  minimum height = 10mm
  },
feuille/.style={
  rectangle,
  inner sep=0pt,
  text width=20mm,
  align=center,
  draw=black,
  fill=blue!10,
  minimum height = 10mm
  },
segment/.style={
 very thick
 }
}

\def\DistanceInterFeuilles{1.3}

\def\NiveauA{0}
\def\NiveauB{-2}
\def\NiveauC{-4}
\def\NiveauD{-6}

% Noeuds (MODIFIABLES : Styles et Coefficients d'InterFeuilles)
\node[noeudA] (R) at (0,{\NiveauA}) {SCR};

\node[noeudB] (Ra) at (-4,{\NiveauB}) {Ajustement};
\node[noeudB] (Rb) at (0,{\NiveauB}) {BSCR};
\node[noeudB] (Rc) at (4,{\NiveauB}) {Opérationnel};

\node[noeudC] (Rba) at (-7.5, {\NiveauC}) {Marché};
\node[noeudC] (Rbb) at (-4.5, {\NiveauC}) {Santé};
\node[noeudC] (Rbc) at (-1.5, {\NiveauC}) {Contre-partie};
\node[noeudC] (Rbd) at (1.5, {\NiveauC}) {Vie};
\node[noeudC] (Rbe) at (4.5, {\NiveauC}) {Non-vie};
\node[noeudC] (Rbf) at (7.5, {\NiveauC}) {Actifs incorporels};

% Noeud Marché
\node[noeudD] (Rbaa) at (-8,{\NiveauD - (1)*\DistanceInterFeuilles}) {Taux d'intérêt};
\node[noeudD] (Rbab) at (-8,{\NiveauD - (2)*\DistanceInterFeuilles}) {Action};
\node[noeudD] (Rbac) at (-8,{\NiveauD - (3)*\DistanceInterFeuilles}) {Immobilier};
\node[noeudD] (Rbad) at (-8,{\NiveauD - (4)*\DistanceInterFeuilles}) {Spread};
\node[noeudD] (Rbae) at (-8,{\NiveauD - (5)*\DistanceInterFeuilles}) {Change};
\node[noeudD] (Rbaf) at (-8,{\NiveauD - (6)*\DistanceInterFeuilles}) {Concen\-tration};
\node[noeudD] (Rbag) at (-8,{\NiveauD - (7)*\DistanceInterFeuilles}) {Illiquidité};

% Noeud Santé
\node[noeudD] (Rbba) at (-5.5,{\NiveauD}) {SLT};
\node[noeudD] (Rbbaa) at (-5.5, {\NiveauD - (1)*\DistanceInterFeuilles -0.5}) {Mortalité};
\node[noeudD] (Rbbab) at (-5.5, {\NiveauD - (2)*\DistanceInterFeuilles -0.5}) {Longévité};
\node[noeudD] (Rbbac) at (-5.5, {\NiveauD - (3)*\DistanceInterFeuilles -0.5}) {Incapacité Invalidité};
\node[noeudD] (Rbbad) at (-5.5, {\NiveauD - (4)*\DistanceInterFeuilles -0.5}) {Rachat};
\node[noeudD] (Rbbae) at (-5.5,{\NiveauD - (5)*\DistanceInterFeuilles -0.5} ) {Dépenses };
\node[noeudD] (Rbbaf) at (-5.5, {\NiveauD - (6)*\DistanceInterFeuilles -0.5}) {Révision};
\node[noeudD] (Rbbb) at (-3.25,{\NiveauD}) {Catastrophe};
\node[noeudD] (Rbbc) at (-1, {\NiveauD}) {NSLT};
\node[noeudD] (Rbbca) at (-1, {\NiveauD - (1)*\DistanceInterFeuilles -0.5}) {Prime et réserve};
\node[noeudD] (Rbbcb) at (-1, {\NiveauD - (2)*\DistanceInterFeuilles -0.5}) {Rachat};

% Noeud Vie
\node[noeudD] (Rbda) at (2,{\NiveauD - (1)*\DistanceInterFeuilles}) {Mortalité};
\node[noeudD] (Rbdb) at (2,{\NiveauD - (2)*\DistanceInterFeuilles}) {Longévité};
\node[noeudD] (Rbdc) at (2,{\NiveauD - (3)*\DistanceInterFeuilles}) {Incapacité Invalidité};
\node[noeudD] (Rbdd) at (2,{\NiveauD - (4)*\DistanceInterFeuilles}) {Rachat};
\node[noeudD] (Rbde) at (2,{\NiveauD - (5)*\DistanceInterFeuilles}) {Dépenses};
\node[noeudD] (Rbdf) at (2,{\NiveauD - (6)*\DistanceInterFeuilles}) {Révision};
\node[noeudD] (Rbdg) at (2,{\NiveauD - (7)*\DistanceInterFeuilles}) {Catas\-trophe};

% Noeud Non Vie
\node[noeudD] (Rbea) at (4.5,{\NiveauD - (1)*\DistanceInterFeuilles}) {Prime et réserve};
\node[noeudD] (Rbeb) at (4.5,{\NiveauD - (2)*\DistanceInterFeuilles}) {Rachat};
\node[noeudD] (Rbec) at (4.5,{\NiveauD - (3)*\DistanceInterFeuilles}) {Catas\-trophe};

\coordinate (interm1) at (0,-1);
\draw[segment] (R)-- (interm1) -| (Ra);
\draw[segment] (R)--(Rb);
\draw[segment] (R)-- (interm1) -| (Rc);

\coordinate (interm2) at (0,-3);
\draw[segment] (Rb) -- (interm2) -| (Rba);
\draw[segment] (Rb)-- (interm2) -| (Rbb);
\draw[segment] (Rb)-- (interm2) -| (Rbc);
\draw[segment] (Rb)-- (interm2) -| (Rbd);
\draw[segment] (Rb)-- (interm2) -| (Rbe);
\draw[segment] (Rb)-- (interm2) -| (Rbf);

\coordinate (interm3) at (-9.5,-5.5);
\draw[segment] (Rba)|-(interm3);
\draw[segment] (interm3)|-(Rbaa);
\draw[segment] (interm3)|-(Rbab);
\draw[segment] (interm3)|-(Rbac);
\draw[segment] (interm3)|-(Rbad);
\draw[segment] (interm3)|-(Rbae);
\draw[segment] (interm3)|-(Rbaf);
\draw[segment] (interm3)|-(Rbag);

\coordinate (interm4) at (-4.5,-5);
\draw[segment] (Rbb)-- (interm4) -| (Rbba);
\draw[segment] (Rbb)-- (interm4) -| (Rbbb);
\draw[segment] (Rbb)-- (interm4) -| (Rbbc);

\coordinate (interm5) at (-4,-7);
\draw[segment] (Rbba)|-(interm5);
\draw[segment] (interm5)|-(Rbbaa);
\draw[segment] (interm5)|-(Rbbab);
\draw[segment] (interm5)|-(Rbbac);
\draw[segment] (interm5)|-(Rbbad);
\draw[segment] (interm5)|-(Rbbae);
\draw[segment] (interm5)|-(Rbbaf);

\coordinate (interm6) at (-2.4,-7);
\draw[segment] (Rbbc)|-(interm6);
\draw[segment] (interm6)|-(Rbbca);
\draw[segment] (interm6)|-(Rbbcb);

\coordinate (interm7) at (0.5,-5.5);
\draw[segment] (Rbd)|-(interm7);
\draw[segment] (interm7)|-(Rbda);
\draw[segment] (interm7)|-(Rbdb);
\draw[segment] (interm7)|-(Rbdc);
\draw[segment] (interm7)|-(Rbdd);
\draw[segment] (interm7)|-(Rbde);
\draw[segment] (interm7)|-(Rbdf);
\draw[segment] (interm7)|-(Rbdg);

\coordinate (interm8) at (6,-5.5);
\draw[segment] (Rbe)|-(interm8);
\draw[segment] (interm8)|-(Rbea);
\draw[segment] (interm8)|-(Rbeb);
\draw[segment] (interm8)|-(Rbec);

\end{tikzpicture}

\end{document}

The color are arbitrary, but as you can see on the example, some rectangle have a little triangle in the upper right corner, and I would like to reproduce that. For me, the rectangles appear as node style, but I don't know how to add extras on it.

A: One possibility might be to add a path picture to the style, e.g.
path picture={
   \fill [green!50!black] ([xshift=-4mm]path picture bounding box.north east) -| ([yshift=-4mm]path picture bounding box.north east) -- cycle;
  }

So if you have
noeudA/.style={
  rectangle,
  inner sep=0pt,
  text width=25mm,
  align=center,
  draw=black,
  fill=green!30,
  minimum height = 10mm,
  path picture={
   \fill [green!50!black] ([xshift=-4mm]path picture bounding box.north east) -| ([yshift=-4mm]path picture bounding box.north east) -- cycle;
  }
  }

Then the first node of your diagram will look like

Alternatively you could make a new upperlefttriangle style where the color is an argument, i.e.
upperlefttriangle/.style={
path picture={
   \fill [#1] ([xshift=-4mm]path picture bounding box.north east) -| ([yshift=-4mm]path picture bounding box.north east) -- cycle;
  }
}

And then use
upperlefttriangle={<color>}

either in other styles, or in individual nodes.

A:
MWE, much more concise as provided MWE (after a some, actually lot of effort :) ) combine trees and positioning library:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{chains, positioning, trees}
\usepackage[utf8]{inputenc}
\newcommand\ppbb{path picture bounding box}

\begin{document}
\begin{tikzpicture}[
    node distance = 2mm and 2mm,
    start chain = going below,
base/.style = {rectangle, draw,
               fill=#1,
               inner sep=0mm,
               minimum height = 9mm, text width=25mm, align=center,
               font=\linespread{.9}\selectfont
               },
   T/.style = {path picture={\fill[cyan!75]
                (\ppbb.east) -- (\ppbb.north east) -- ++ (-4.5mm,0) -- cycle;
                             }% end of path picture
               },
boxB/.style = {base=#1, text width=20mm},
% on chain
 box/.style = {boxB=#1, on chain},
% tree's parameters
  level distance = 18mm,
sibling distance = 32mm,
  level 2/.style = {sibling distance = 25mm},
  level 3/.style = {sibling distance = 22mm}
                        ]
% first part of image
% start of tree
\node[base=teal!30] {SCR}
    [edge from parent fork down]
    child { node[base=teal!30]      {Ajustement}}
    child { node[base=teal!30,T]    {BSCR}
        child { node[boxB=teal!15,T]    (Rba)   {Marché}}
        child { node[boxB=teal!15,T]    (Rbb)   {Santé}
            child { node[boxB=teal!10,T](Rca)   {SLT}}
            child { node[boxB=teal!10,T](Rcb)   {Catastrophe}}
            child { node[boxB=teal!10]  (Rcc)   {NSLT}}
                }
        child { node[boxB=teal!15,T]    (Rbc)  {Contre-partie}}
        child { node[boxB=teal!15,T]    (Rbd)  {Vie}}
        child { node[boxB=teal!15]      (Rbe)  {Non-vie}}
        child { node[boxB=teal!15]      (Rbf)  {Actifs incorporels}}
            }
    child { node[base=teal!30]  {Opérationnel}};
% Noeud Marché
{[start chain]
\coordinate[on chain,below=of Rba.west |- Rca.south]   (a);
\node[box=blue!10,T] (Rbaa) {Taux d'intérêt};
\node[box=blue!10,T] (Rbab) {Action};
\node[box=blue!10,T] (Rbac) {Immobilier};
\node[box=blue!10,T] (Rbad) {Spread};
\node[box=blue!10,T] (Rbae) {Change};
\node[box=blue!10,T] (Rbaf) {Concen\-tration};
\node[box=blue!10,T] (Rbag) {Illiquidité};
}
% Noeud Santé
{[start chain]
\coordinate[on chain,below=of Rcb.south west]   (b);
\node[box=blue!10,T] (Rbbaa)  {Mortalité};
\node[box=blue!10,T] (Rbbab)  {Longévité};
\node[box=blue!10,T] (Rbbac)  {Incapacité Invalidité};
\node[box=blue!10,T] (Rbbad)  {Rachat};
\node[box=blue!10,T] (Rbbae)  {Dépenses };
\node[box=blue!10,T] (Rbbaf)  {Révision};
}
% Noeud NSLT
{[start chain]
\coordinate[on chain,below=of Rcc.south east -| Rbc.east]   (c);
\node[box=blue!10] (Rbbca)  {Prime et réserve};
\node[box=blue!10] (Rbbcb)  {Rachat};
}
% Noeud Vie
{[start chain]
\coordinate[on chain,below left=of Rcc.south -| Rbe.west]    (d);
\node[box=blue!10,T] (Rbda) {Mortalité};
\node[box=blue!10,T] (Rbdb) {Longévité};
\node[box=blue!10,T] (Rbdc) {Incapacité Invalidité};
\node[box=blue!10,T] (Rbdd) {Rachat};
\node[box=blue!10,T] (Rbde) {Dépenses};
\node[box=blue!10,T] (Rbdf) {Révision};
\node[box=blue!10,T] (Rbdg) {Catas\-trophe};
}
% Noeud Non Vie
{[start chain]
\coordinate[on chain,below left=of Rcc.south -| Rbf.west]    (e);
\node[box=blue!10,T] (Rbea)   {Prime et réserve};
\node[box=blue!10,T] (Rbeb)   {Rachat};
\node[box=blue!10,T] (Rbec)   {Catas\-trophe};
}
% lines a
\coordinate[left=of Rbaa.west] (aa);
\draw   (Rba) -- ++ (0,-0.9) -| (aa) -- (Rbaa);
\foreach \i [remember=\i as \ii (initially a)] in {b,c,...,g}
    \draw (aa |- Rba\ii) |- (Rba\i);
% lines b
\draw   (Rca) |- (Rbbaa);
\foreach \i [remember=\i as \ii (initially a)] in {b,c,...,f}
    \draw (Rca |- Rbba\ii) |- (Rbba\i);
% lines d
\draw   (Rcc) |- (Rbbca);
\draw   (Rcc) |- (Rbbcb);
% lines e
\draw   (Rbd) |- (Rbda);
\foreach \i [remember=\i as \ii (initially a)] in {b,c,...,g}
    \draw (Rbd |- Rbd\ii) |- (Rbd\i);
% lines f
\draw   (Rbe) |- (Rbea);
\foreach \i [remember=\i as \ii (initially a)] in {b,c}
    \draw (Rbe |- Rbe\ii) |- (Rbe\i);
\end{tikzpicture}
\end{document}

Addendum:
in the case, when all nodes in second part of block diagram have the same color, than the code of this part can be further reduced:
% second part of image
    \begin{scope}[every node/.append style = {box=blue!10}] % define common style for all nodes in scope
% Noeud Marché
{[start chain]
\coordinate[on chain,below=of Rba.west |- Rca.south]   (a);
\node[T] (Rbaa) {Taux d'intérêt};
\node[T] (Rbab) {Action};
\node[T] (Rbac) {Immobilier};
\node[T] (Rbad) {Spread};
\node[T] (Rbae) {Change};
\node[T] (Rbaf) {Concen\-tration};
\node[T] (Rbag) {Illiquidité};
}
% Noeud Santé
{[start chain]
\coordinate[on chain,below=of Rcb.south west]   (b);
\node[T] (Rbbaa)  {Mortalité};
\node[T] (Rbbab)  {Longévité};
\node[T] (Rbbac)  {Incapacité Invalidité};
\node[T] (Rbbad)  {Rachat};
\node[T] (Rbbae)  {Dépenses };
\node[T] (Rbbaf)  {Révision};
}
% Noeud NSLT
{[start chain]
\coordinate[on chain,below=of Rcc.south east -| Rbc.east]   (c);
\node  (Rbbca)  {Prime et réserve};
\node  (Rbbcb)  {Rachat};
}
% Noeud Vie
{[start chain]
\coordinate[on chain,below left=of Rcc.south -| Rbe.west]    (d);
\node[T] (Rbda) {Mortalité};
\node[T] (Rbdb) {Longévité};
\node[T] (Rbdc) {Incapacité Invalidité};
\node[T] (Rbdd) {Rachat};
\node[T] (Rbde) {Dépenses};
\node[T] (Rbdf) {Révision};
\node[T] (Rbdg) {Catas\-trophe};
}
% Noeud Non Vie
{[start chain]
\coordinate[on chain,below left=of Rcc.south -| Rbf.west]    (e);
\node[T] (Rbea)   {Prime et réserve};
\node[T] (Rbeb)   {Rachat};
\node[T] (Rbec)   {Catas\-trophe};
}
    \end{scope}

The result is the same as before.

redpajama_set_name: RedPajamaStackExchange


Use: Restores 454 health over 21 sec. Must remain seated while eating. If you spend at least 10 seconds eating you will become well fed and gain 4 Stamina and Spirit for 15 min.
Blood Sausage is made of... well you don't really want to know.
This item is created with Cooking (60); taught by [Recipe: Blood Sausage].
The only way for Horde cooks to get this recipe is through the neutral Auction Houses.
Patch 4.0.3a (2010-11-23): No longer requires [Boar Intestines] or [Spider Ichor].
This page was last edited on 19 February 2018, at 10:51.


Swinging two tone gold satin finish key holder with split key ring. Keychain is packed in a deluxe 2 piece black gift box with inlay tray.
Two tone gold satin finish key holder with large split key ring holder. Keychain is packed in a deluxe 2 piece black gift box with inlay tray.
Stylish cable closure matte finish metal key holder. Keychain is packed in a deluxe 2 piece black gift box with inlay tray.


Silverplate and porcelain tile coaster. There is wear to the finish of the silver and a fired-in dark dot to the porcelain. Additional photos by email. Other coasters in the series available. I need your zip code to calculate the postage.


text:
Nita Bhalla of Thomson Reuters Foundation Named Journalist of the Year at SOPA 2017 Awards
Scoop Awards go to Thomson Reuters, MLex Market Insight and WeMedia01
Record number of entries, quality of reporting, 95 awards demonstrate that 'real news' is thriving
Keynote speaker ex-HK Governor Chris Patten discusses erosion of rule of law in HK
HONG KONG, CHINA - Media OutReach - June 16, 2017 - The Society of Publishers in Asia (SOPA), a Hong Kong-based not-for-profit organization, named Nita Bhalla of Thomson Reuters Foundation the Journalist of the Year at the SOPA 2017 Awards Gala Dinner on Thursday evening for her reporting on human trafficking and slavery in South Asia.
Awards for Scoop of the year across the three award categories -- global, regional and local media -- went to Thomson Reuters ("The Bangladesh Bank Heist"), MLex Market Insight ("MAXpower Bribery Scandal in Indonesia") and WeMedia01 ("新界套丁風雲系列 or "Abuse of Policy on Village Houses in New Territories").
These awards were among the 95 SOPA Awards for Editorial Excellence announced at the event (see the full list here), now in its 19th year. The SOPA Awards, widely considered the most prestigious in the Asia-Pacific publishing industry, this year saw a record number of entries competing in 17 categories, including more than 750 English or Chinese-language submissions by global, regional and local media across the region.
The entries were assessed by a judging panel appointed by the Journalism & Media Studies Centre (JMSC) of the University of Hong Kong. The panel comprised more than 100 media professionals, including journalists, editors and columnists from some of the region's most influential publications, along with academics from a number of Asia's leading journalism schools.
"The SOPA Awards provide a platform to honour the best reporting, writing and design in publishing in Asia Pacific," said S.K. Witcher, Deputy Asia Editor of The New York Times and Chair of the SOPA Editorial Committee. "Congratulations to all the winners. By recognizing their best practices, we hope to inspire journalists to keep pursuing excellence in their profession, delivering the information that matters, bringing crucial issues to notice and further guarding freedom of the press."
SOPA Awards Head of Judges and Associate Professor of JMSC Jeffrey Timmermans said: "Despite all the recent controversy about 'fake news,' both justified and imaginary, this year's SOPA Awards finalists incontrovertibly demonstrate that 'real news' - accurate, deeply reported journalism on topics of profound human interest - is thriving."
Chris Patten Comments on Rule of Law under 'One Country, Two Systems'
The keynote speaker at the dinner was Hong Kong's last governor Chris Patten. Speaking by video from London, he shared his thoughts on 'One Country, Two Systems' as Hong Kong prepares for the 20th anniversary of the Handover.
"There has been a steady tightening of grip on Hong Kong's windpipe, on Hong Kong's autonomy and on its ability to do things for itself," said Mr. Patten. "You've seen that, I think, in the extent to which Beijing's offices in Hong Kong try to get involved in every branch, every aspect of government, you've seen it in the attacks on the judges and the rule of law. I sometimes wonder whether Chinese officials actually understand what the rule of law means."
A recurring topic of conversation at the awards dinner was that of 'fake news,' which itself has spent much of the past 12 months actually in the news.
Christiane Amanpour, CNN's chief international correspondent and a noted campaigner for press freedom and the rights of journalists, also addressed the gathering by video from London.
"I feel that journalism faces an existential crisis -- a threat to the very relevance and usefulness of our profession," said Ms. Amanpour, who is on the board of the Committee to Protect Journalists and the Center for Public Integrity. "Now more than ever, we need to commit to real reporting across a real world -- in which journalism and democracy are in mortal peril -- including by foreign powers like Russia paying to churn out false news and hacking into the democratic systems."
About 300 media executives, editors, journalists and industry practitioners from across the region attended the gala event.
The SOPA 2017 Awards for Editorial Excellence are supported by Invest Hong Kong (Platinum Sponsor), Google and Facebook (both are Gold Sponsors). FleishmanHillard, Media OutReach and High Technology Printing Group Limited provide SOPA with support respectively on public relations, newswire and printing services.
Event highlights, photos and judges' comments, plus videos/transcripts of both Mr. Patten's and Ms. Amanpour's speeches, can be found on: https://www.sopawards.com.
About SOPA
The Society of Publishers in Asia (SOPA) was founded in 1982 to champion freedom of the press, promote excellence in journalism and endorse best practices for all local and regional publishing platforms in the Asia-Pacific region. SOPA is a not-for-profit organization based in Hong Kong and representing international, regional and local media companies across Asia. The Society of Publishers in Asia is also host to the prestigious annual SOPA Awards for Editorial Excellence, which serve as the world-class benchmark for quality journalism in the region. www.sopasia.com
Press release prepared on behalf of The Society of Publishers in Asia by FleishmanHillard.
Distributed on behalf of The Society of Publishers in Asia by Media OutReach.
The Society of Publishers in Asia
中文(HK)
14 Jun 2018 Reuters Wins SOPA Award for Public Service Journalism for Story on the Rohingya Crisis
16 May 2018 SOPA Announces 2018 Journalism Awards Finalists
11 Apr 2018 SOPA 2018 Journalism Awards see Highest Number of Entries in 20 Years
18 Dec 2017 SOPA 2018 Journalism Awards Open for Entries; Deadline Jan 31
18 Apr 2017 SOPA 2017 Journalism Awards Attract Record Number of Entries
19 Dec 2016 SOPA 2017 Journalism Awards Now Open for Entries
15 Jun 2016 The Society of Publishers in Asia (SOPA) Announces Winners of the 2016 Awards for Editorial Excellence
1 Jun 2016 SOPA 2016 Awards Gala Dinner Keynote Speaker Announced
23 May 2016 SOPA 2016 Awards Finalists Announced


The G5 sounds like a nice kick in the a**.
Scientific Computing & Instrumentation magazine has named Apple's PowerMac G5 as its "editor's choice" for scientific applications. Even the though this much-hyped hardware has yet to ship, the publication heaps praise on the platform.
I'll likely be lookin' for a G5 laptop though. It's hard for me to part with the mobility. Of course, I suppose all it would take for me is to see one in action. It's gotta be nice.
I can hardly wait to see what's next in software, with all that processing power behind it.
** (this is a note for the two asterisks at the beginning of this entry) Ok folks, you know how to spell aaa-sss-sss. I'm doing my best to keep all but the "JT's Beauties" section of this site completely "G-Rated", so bear with me. That being said, the Beauties section isn't much beyond "G" is it? Or does it approach "PG"? What's your opinion? Click the icon (to the right... not the one here) to send me your thoughts on this.
PowerPC G5 chip picture source: the G5 page on Apple's web site.
"Scientists pick the G5 - Zaz News"


text:
Search in Vampire: The Masquerade only Advanced Search
[V5] L.A. by Night observations
Japheth
First of all, I supremely enjoy the Geek and Sundry series, VtM: L.A. by Night. Each episode has not disappointed me yet.
In 402, "Darkness Divide," When Eva uses Zeus' Fury to attack the Gargoyle, is that a Thaumaturgical Path from previous editions of VtM, or is it a specific Blood Sorcery power? And if its the former, might I infer that all Thaumaturgical paths from the previous editions are transferrable to VtM 5th Edition? I ask this because I haven't found Movement of the Mind, nor Zeus' Fury in the text of VtM 5th Edition.
In the larger context, are the Paths of Thaumaturgy, Dur-An-Ki, Sadhana, Akhu, Nahuallotl, Ogham, Sihr, Sielanic Thaumaturgy, Koldunic Sorcery, Anarch Sorcery, and Setite Sorcery even convertible to V5?
Last edited by Japheth; 10-19-2020, 10:57 AM.
"Remember, remember, the Fifth of November, the Gunpowder Treason and Plot. I know of no reason why the Gunpowder Treason should ever be forgot."
-V for Vendetta
CTPhipps
In 5th Edition, the Paths have been altered into one use rituals.
So all the Paths no longer exist but also exist as Ritualistic effects.
So you can buy all the previous powers that existed.
Author of Cthulhu Armageddon, I was a Teenage Weredeer, Straight Outta Fangton, Lucifer's Star, and the Supervillainy Saga.
elmerg
LA by Night uses a lot of (fairly unbalanced, admitted by Jason Carl) homebrew, and has ignored rules both for the sake of the story and because the ST forgot them. The extra powers like fire, lightning, telekinesis and flight that Eva and other Tremere have used are Jason's own homebrew (because LAbN is a show, before it is a guide to use V5's rules).
That's basically all there is to it.
In the large, anything is convertible to V5 mechanics if you put the time into it to care about the balance alongside existing mechanics. It's not directly plug and play; it takes work because of the systemic differences between prior editions and V5, such as V5 only caring about # of successes from the roll, rather than having both a sliding scale of difficulty on the dice and also needing X successes on the dice themselves.
Jason has also said that everything in the show is canon to V5.
Originally posted by CTPhipps View Post
Honestly, it's even worse because he claims that, yet it's not in a book or somewhere that is a signed off by the WW creative team. He's a marketing manager, and not in charge of what gets approved. I would use any 'canon' from that with a hefty dose of salt, since as we know, books can come out that can contradict anything he's done or stated (and he's been pretty straightforward about calling things like the lightning power homebrew, so it's not even the speculative' oh he's probably playtesting stuff' that people pull out whenever this comes up).
I am curious to know which page numbers it stated that. Also, I am curious to know what other clans' Blood Sorcery traditions are transferable. For example, I understand that the Banu Haqim have Blood Sorcery as an in-Clan discipline, but there's no way to differentiate between Tremere's version of the discipline and the Banu Haqim's.... it's a little confusing and not clear.
Originally posted by Japheth View Post
It's not 'outright stated' on a page, it's the way the mechanics for what we've seen so far work. For example, there are rituals in Cults of the Blood Gods that mimic a number of abilities from Paths; thus, the precedent/evidence that further Paths aer going to show up as Rituals. It's just going to take time for more and more stuff to come out, because V5 wasn't built as an omnibus edition, it was built as a growing new edition like pretty much every other RPG on the market.
As far as different clans' Blood Sorcery traditions (I won't touch mechanics, since you seem to be veering away from what I thought your original question was, re: mechanics and homebrew), it's all about the fluff, which is (to a great extent) what it was in prior editions anyway. You might have a couple of weird, variant mechanics here and there but, largely it was 'use this same pool that this other Discipline uses to do its thing, and oh yeah, X uses A, B and C paths but calls them K, L and M'. So you can easily have the various clan flavor, using the blood sorcery mechanics as they exist. It'll be easier when you have things that are more varied to play with, but even with what's released, it's not hard to refluff (for example, Scorpion's Touch refluffed to the Bloodlines' Blood Shot power is a trivial flluff change but differentiates Tremere ways from Banu Haqim methods, or the way they activate/do the powers done through the cultural lens of each clan's historic methodology, that sort of stuff).
You can see a lot of the altered Paths to Rituals in CULTS OF THE BLOOD GODS.
elmerg and CTPhipps, thank you both for the information. This will help tremendously.
On a separate note, I'm now wondering when Season 5 of LA by Night will be streamed?...


text:
David Stone, Dara Little earn new titles
November 29, 2010 Mark McGowan Campus Highlights, Faculty & Staff, On Campus, Research
Lisa Freeman, vice president for Research and Graduate Studies, has announced two personnel changes in the division that became effective Nov. 1.
David Stone now holds the title of associate vice president for research/director of the Office of Sponsored Projects (OSP). Dara Little's new title is associate director of the Office of Sponsored Projects.
These changes were instituted as part of an effort to align titles with roles and responsibilities in a way that is meaningful to both internal and external stakeholders.
"In coming to understand what David Stone and Dara Little have been doing individually and collectively, and in thinking about how we plan to continue to grow and support the research enterprise at NIU, it became clear that these changes were necessary and appropriate," said Freeman, who anticipates the position descriptions for Stone and Little will remain works in progress and continue to evolve.
David Stone
As the associate vice president for research, Stone will retain overall responsibility for OSP, but he will focus his attention on the developmental aspects of the NIU research enterprise.
Stone will be expected to play a significant role on both of the new advisory bodies: the Research, Instruction and Public Service Advisory Council and the Research and Graduate Studies Development Council.
He will work closely with the research development specialists to further develop their ability to assist in the development of effective proposals, to improve research development infrastructure and capacity to compete effectively for larger multidisciplinary, interdisciplinary and multi-institutional grant proposals.
He will work closely with the associate vice president for Graduate Studies/dean of the Graduate School to develop graduate training programs capable of attracting extramural funding. He also will work with associate deans, center directors and research active faculty members to facilitate development of multidisciplinary collaborative proposals and to enable collaboration across departments and colleges.
Stone will support Freeman's efforts to develop external partnerships with corporations, health center, federal labs, foundations, municipalities and universities and to foster closer relationships with federal and state agencies. In addition, Stone will be expected to develop and implement educational and training initiatives in the areas of research and research development. He also will continue to serve on the Institutional Review Board (IRB) and the Intellectual Property (IP) committee.
Dara Little
As the associate director of OSP, Little will be responsible for all of the day to day operations of OSP. She will continue to maintain oversight of InfoEd, the electronic research administration package used by the division. All OSP staff will report directly to her.
She will have final review and signature authority for all proposals and agreements flowing through OSP. She will be in charge of the development and implementation of policies affecting pre-award operations, and she will have primary responsibility for serving as OSP liaison to other administrative entities on campus; in this capacity, she will continue her efforts to improve communication and coordination between OSP and Grants Fiscal Administration (GFA).
Little also will serve on the newly constituted Research and Graduate Studies Development Council, and will continue her role on the Responsible Conduct of Science (RCS) and Institutional Bio-Safety (IBC) committees.
Dara LittleDavid StoneDivision of Research and Graduate StudiesGraduate SchoolLisa FreemanOffice of Sponsored ProjectsResearch and Graduate Studies
Previous Post:Students battling stress about upcoming finals invited to take 'study break' Tuesday, Nov. 30
Next Post:NIU will host 'Elect Her' training in 2011


Started this discussion. Last reply by Gillian Lelong Feb 15.
"Deborah, The information on Leonard is a great help thank you again. Best regards, Jill"
"Hello Deborah, Thank you for your email. I made a mistake when typing Louisa Hutchin's birth date. It was not 1883. She was born in 1863 in Richmond Surrey and she married George Frederick Brown in 1880 in Richmond, Surrey. They had 4 children,…"
"Leonard was actually born 28 Dec 1882 and his birth registered in 1883. He married in 1904 to Annie Elizabeth PERKINS. His address on the marriage certificate is the same as the family's address in 1901 - 41 Hampton Square. He…"
"Some of your birth years are not correct. BROWN, EDITH Mother's maiden surname: HUTCHINS GRO Reference: 1881 J Quarter in RICHMOND Volume 02A Page 368 BROWN, LEONARD Mother's maiden surname: HUTCHINS GRO Reference: 1883 M Quarter in…"


Zweig Group's Top New Venture is the newest award in their growing list of A/E Industry awards. It is based, in part, on their Hot Firm Award and will honor a group of the fastest growing start-ups.
Zweig Group's Top New Venture is the newest award in their growing list of A/E Industry awards. It is based, in part, on their Hot Firm Award and will honor a group of the fastest growing start-ups. Top New Venture will be judged on revenue growth as well as what makes that firm a top new venture in the industry.
50% of 2018 fiscal year revenue must be derived from the AEC industry.
Public entities such as departments of transportation or municipal public works offices are not eligible.
Competing firms must have at least $1,000,000 in revenue for 2018.


Does anyone understand the reasoning behind this study?
http://health.yahoo.net/news/s/ap/us_med_stroke_younger_victims Maybe there is a better link to the raw data somewhere. It says that stroke is rising in the younger age groups but dropping in the older groups. I am not sure I understand why it would be dropping in the older population. They say it is because the older are maybe being better treated for high blood pressure, but later they said they controlled for blood pressure as a variable. Did they control for blood pressure but not for treatment of blood pressure? They also insinuate salt causes stroke, but later mentioned that most salt intake comes from processed foods. Did they control for processed food intake? Perhaps not.
There is no indication in the article that the researchers tried to explain why these facts occured. It appears to be a purely empirical study, one that reports the facts but doesn't try to find causes for them. In general, science has two stages. First it reports what, then it asks why. This study seems to belong to the first stage.
In a different article about this same study, the reporter says, "For George [one of the researchers], it is unclear if modern imaging techniques or better understanding of stroke symptoms are to blame for the apparent rise in numbers. She says it???s impossible to tell."
In other words, the researchers don't even know if the trend in younger people that they measured is real. The trend may just be the result of better diagnosis.
"Whether it [the rise in stroke among young people] is associated with increasing trends in traditional risk factors for stroke is unknown at this time," but "we clearly need to study" this possibility.
In other words, she is saying that the causes of the trend are unknown, but the next step, following this study, is to conduct more studies that look for the causes.
The article quotes some people guessing about why these facts are happening, but those guesses aren't part of the study.
For example, the article quotes Dr. Ralph Sacco speculating that stroke is increasing in young people because obesity is rising in that age group. But the study doesn't attempt to establish whether that's true.
The article also says that Dr. Jeffrey Saver told the reporter that more strokes are occuring in young people as a result of high blood pressure and clogged arteries, but there is no indication that Dr. Saver has anything to do with the study. He seems to be an audience member that the reporter interviewed. The reporter should have made this clear, but didn't.
...but later they said they controlled for blood pressure as a variable.
That's from a different study. The article you linked talks about two separate studies. The article has a sentence that begins, "Also at the conference..." It then goes on to describe a study about soda. The blood pressure comment describes the second study.


text:
Sprint's first 5G devices go on sale
With no launch date for the 5G network, its first devices arrive May 31
We may not know exactly when the Sprint 5G network gets turned on, but at least we know which devices will support it.
Sprint on Thursday announced it has started taking pre-orders for its first 5G-ready phone, the LG V50 ThinQ 5G. Moreover, it is also selling the HTC 5G Hub hotstpot.
The LG V50 ThinQ 5G will retail for $1,152 outright; however, Sprint will offer it for just $24 per month on an 18-month Sprint Flex lease. This is a special pricing for those who pre-order the phone and amounts to half off the cost.
Customers who want to take advantage of Sprint's 5G speeds will need to sign up for the company's Unlimited Premium plan. At $80 per month it's $20 more than its standard Unlimited Basic option. For the extra money, though, subscribers get Amazon Prime, Tidal HiFi, and 100GB of LTE hotspot data.
The HTC 5G Hub will cost $600 on its own but Sprint will discount it by 50% if purchased on pre-order. Doing so puts it at just $12.50 per month.
Both devices start shipping on May 31 but it's not clear when the 5G network will be activated. Sprint hasn't made any overt announcements other than it will be available in Atlanta, Dallas, Kansas City, and Houston this month.
Other markets expected to see Sprint's 5G network include Chicago, New York, Los Angeles, Phoenix, and Washington, D.C.
Those who want to utilize the hotspot on 5G will have to pay $60 per month for 100GB of ultra fast data. Worth noting, once that threshold is reached, speeds are throttled. Not to 4G or even 3G… but 2G. Keep that in mind in the event you were planning on changing your entire home around.
HTC 5G Hub
lg v50 thinq 5g


text:
Photo courtesy of Jessie Kanzer
Dying My Hair Pink Saved My Postpartum Identity
by Jessie Kanzer
Let's be very, very honest about this — pregnancy and childbirth change your body. Regardless of what tabloid headlines about celebrities' post-baby bodies and Instagram #fitspo posts might tell you, the reality is that your body's going to look and feel a little different after having kids — which means your clothes will probably look and feel different, too. Luckily, you don't have to wear your maternity jeans and your partner's ratty old college sweatshirts forever (unless you want to!). Mom Jeans is Romper's guide to helping you figure out your postpartum wardrobe during the first few months postpartum and beyond.
Recently, after I stopped breastfeeding my second daughter and desperately wanted to return to a modicum of giving-a-damn, I pulled my hair out of its permanent ponytail and got a cheap cut — unfortunately, it turned out like a typical mom bob. I can't really blame the stylist — my hair is a challenge and no haircut could express what was going on inside of me… I needed a tattoo for that. Like a whole sleeve.
There is power in a hairstyle. Katy Perry explained her bleached pixie as a way to bridge the gap between what she looked like and who she really was, telling Dr. Siri Singh in a streamed podcase, "I really want to be my authentic self 100 percent. It hurts when I don't feel like I can."
She felt restricted as a mega-pop star; I felt restricted as a suburban housewife — same, same, no? Ultimately, we all return to authenticity. For me, this meant dyeing my hair a bright pink.
As my cool (and, this time, very not cheap) stylist held an array of gorgeous swatches before me, I felt like a kid in a candy store. I was especially drawn to the acid colors trend, more in-your-face and bolder than the pastels that were the funky go-to in recent years. Makes sense, I guess, as I, too, am bolder than I have been in quite a while. Aren't many of us fourth-wave feminist mamas? Edgier. More raw, honest — rude, even. We give more and less f*cks at the same time (well, if you're like me, it's way less literal f*cks, cause babies). It isn't about being beautiful anymore; it's about feeling like yourself. And for me, that meant going bright pink.
Pravana ChromoSilk Vivid Pink, $10, Amazon
Hair has always mattered to me. When I was a little girl — roughly the same age as my "threenager" — I desperately yearned for pigtails. Or for one of those giant bows that taunted me from the heads of other gals in my daycare center. The thing is, there just wasn't enough hair for my mom to gather in order to fulfill my fantasies. There was never enough of anything, for that matter — not in the Soviet Union. But, eventually, we immigrated to the U.S., where my hair flourished with the sheen of the great American dream.
By high school, I'd blossomed despite my wispy hair, and by that I mean I learned a trick or two (or, simply, conformed?): I changed my name, my clothes; shaved my legs, bleached the 'stache. And then my first boyfriend fell for my best friend and shattered my newly minted sense of self. My reaction was cliché — I chopped off my hair — but the result was revolutionary. At 16, my pixie cut took me to another level: stylish, smart… my aspirational version. For the first time, I realized that even my hair could be a friend, not foe.
But my hair sucks. It doesn't grow well, biotin, special shampoos, lotions and potions be damned. It's thin, wispy, and forgettable. When I do grow it out, I get that Eastern European mullet look, which — being Eastern European and spending the bulk of my childhood vying to be American — is like a slap in the face… And don't even get me started on the stringy bunches of hair that carpet my floors post-babies.
The search for authenticity is a complicated, maybe even a life-long, one. For me, my twenties was when I veered off the map, and my hair echoed that confusion. I had lost my self-respect, a couple relationships, my beloved uncle… control of my car and my life path. My behavior became erratic, yet stilted. And my hair vacillated between an auburn and brassy orange mullet, with the occasional ghastly attempt to go blonde. But, there were triumphs, as well — there always are — like overcoming an eating disorder and "mastering" therapy; like getting some groovy bangs and an even groovier kitty.
After meeting my husband at 30, I cut off all my hair once again, mere weeks before our wedding. The night of, I donned a simple white wrap-dress (with splashes of — you guessed it — bright pink). I did my own makeup and wore no adornments in my pixie. The bar where we got married, the groom's "fancy" sneakers, and, of course, my last-minute haircut — they were all a statement.
And what story is my hair relaying this time, after years of sitting in a messy mom ponytail? What is it about those reddish pink highlighter streaks I lovingly tend to every morning as my 1-year-old plays with my tampons?
My cool, new, very expensive stylist says the outside should match the inside. I guess, in that case, I hope my hair somehow hints that I'm a pink force to be reckoned with (#TimesUp suckers!). That I'm a coolish chick who is mom to even cooler chicks. That beyond drop-off and pickup, play dates and baby classes — and whatever may come next — I'll always be just an immigrant kid trying to find my place... and the right style for my mullet-prone hair.
Unfortunately, my kid is none too pleased with my boldness. She feels that it's her hair — ironically, an enviable mane of golden ringlets — which should be dyed pink, "Because, mommy, it's my favorite color!"
Check out Romper's new video series, Bearing The Motherload, where disagreeing parents from different sides of an issue sit down with a mediator and talk about how to support (and not judge) each other's parenting perspectives. New episodes air Mondays on Facebook.


It's the morning after the X Factor final and we're listening to Matt Terry's 'When Christmas Comes Around' on repeat at our desks.
By the time Matt premiered the Ed Sheeran-penned winner's song yesterday night, his win seemed like a foregone conclusion. However, the voting statistics released today by ITV tell a very different story – interesting!
While Matt was clearly the early favourite to win the series, topping the vote in the first five weeks of the competition – his support dwindled in the later stages of the show.
5 After Midnight topped the polls during week 6's 'Diva Week', while after week 8 it was all about Saara Aalto.
Saara topped the vote in week 8's 'Louis Loves Week' and again in week 9's 'Christmas Week'. She was even winning the vote during Saturday's final, when the vote was frozen and 5 After Midnight were eliminated from the competition.
It appears 5 After Midnight's fans preferred Matt to Saara though, and Matt Terry scooped reality television's biggest prize on Sunday evening.


text:
Antonovich fought choice of dean
UC IRVINE: L.A. supervisor likened having liberal lead law school to having al-Qaida run homeland security.
By Gillian Flaccus
IRVINE – A conservative Los Angeles County politician asked about two dozen people in an e-mail last month how to prevent the University of California, Irvine from hiring renowned liberal scholar Erwin Chemerinsky as its founding law school dean, a spokesman for the politician said Friday.
Making Chemerinsky the head of the law school "would be like appointing al-Qaida in charge of homeland security," Michael Antonovich, a longtime Republican member of the county Board of Supervisors, said in a voicemail left with The Associated Press.
He was not available for further comment on why he was getting involved in the situation at a campus located outside his jurisdiction in Orange County.
Antonovich's e-mail "expressed his dismay with the choice for the dean of the law school and suggested that this was the wrong decision and it should be changed," said Tony Bell, a spokesman for the supervisor.
Antonovich, a local GOP stalwart, was first elected in 1980. He is a staunch conservative who has supported crackdowns on illegal immigrants and voted against tax increases and HIV-prevention programs that distribute free syringes.
He clashed with Chemerinsky in the past when the professor supported the removal of a cross from the county seal.
The e-mail was disclosed after UCI Chancellor Michael V. Drake withdrew an offer earlier this week to appoint Chemerinsky to the law school post.
Chemerinsky, a frequent legal commentator who represented exposed CIA agent Valerie Plame, has repeatedly said Drake told him he was out because he was "too politically controversial" due to his liberal activism.
The dismissal outraged UCI's faculty members, who launched an online petition urging Drake to reconsider his decision. By Friday, more than 350 faculty, students and alumni had signed the petition. Some were calling for Drake's resignation.
Faculty on the dean selection committee also warned that the opening date of the law school, set for 2009, might be delayed because of the time needed to find a new candidate.
"What's happened here is so outrageous, it's beyond anything that anybody could have imagined happening," said Mark P. Petracca, chairman of the political science department.
Petracca said professors were angry that Drake hasn't given a full explanation for his decision, except to say at a faculty meeting Thursday that he spoke with 12 people about Chemerinsky before withdrawing the offer. He wouldn't say who those people were, Petracca said.
"What information did the chancellor get? We don't know that and the chancellor's silence on that leaves the door open for people to speculate on Erwin's character," he said. "Politically, it would be the best thing for all parties involved … if (Drake) were to resign."
Chemerinsky did not return calls Friday. In an earlier interview, however, he said Drake met with him Tuesday and told him he was too controversial and that some members of the University of California system's Board of Regents opposed the appointment.
Since then, several board members – including California Assembly Speaker Fabian Nu ez, D-Los Angeles – have said they were not consulted on Chemerinsky and didn't oppose him.
In a statement on his Web site, Drake disputed Chemerinsky's version of events and said the decision to withdraw his job offer was a management decision that has nothing to do with politics.
"It was not based on donor pressure or political pressure; it was based on a culmination of discussions – over a period of time – that convinced me we could not effectively partner to build a world-class law school at UC Irvine," Drake wrote.
The chancellor did not return calls Friday seeking further comment.


Amazon has significantly reduced the commission it takes from sellers in India, in order to undercut rivals Flipkart and Snapdeal.
The move comes very soon after Flipkart came under fire, after it increased its commission in order to cut losses.
The reduction in commission has hit Amazon's electronics sales the hardest, after it reduced the amount by 30%, down to just 3% of the amount of the device.
This is particularly useful for Amazon, as one third of all items sold on Amazon, Flipkart and Snapdeal are electronic devices.
Amazon said in a statement that "these revised rates can significantly help sellers to perform even better and succeed in their business".
Amazon has had to reduce commission as opposed to the actual cost, as Indian law makes it difficult for ecommerce retailers to offer discounts, which subsequently makes it harder to lower prices.
A study has revealed that the fastest growing mobile apps owe a large amount of their growth to television advertising.
The results of the study by What's App'ning, show that there is a 77% correlation between TV advertising and 60 of the most popular mobile apps.
Sean Cunningham, President & CEO of the Video Advertising Bureau, said that "digital products and platforms rely on TV advertising to deliver customers in real scale", delivering profit in almost every instance.
The popular gaming app Clash of Clans, which averages a TV advertising spend of around 4 and a half million US dollars every month, lost 17% of unique visitors when adverts went off air, from nearly 12 million to just over 10 million.
However, the Clash of Clans expected revenue far exceed the advertising budget, with around 36 million dollars' worth of monthly sales; with other apps seeing similar patterns.
Chinese video site iQIYI has announced that it has hit over 20 million paying users, only six months after passing the 10 million mark.
Founder of iQIYI, Yu Gong, said that the achievement reflected the growing market which had "taken off".
Believed it to be the cause of a growing willingness in China to pay for online streaming content, the company has seen huge success with programs like The Lost Tomb and Descendants of the Sun being viewed over 18 billion times in the last 12 months.
The company's majority is owned by Baidu, and has suppliers in Hollywood such as Paramount Pictures and 20th Century Fox, and has just announced a separate app that will target children called iQIYI Cartoon Home.
The high level of use of BBM in Africa could be unlocking new business opportunities.
With around 10 million visits to the BBM shop every month on the continent, Matthew Talbot, the Senior Vice President of BBM said that Africa was becoming a key market for BBM and brought with it global monetisation opportunities.
Talbot also said that BBM had been pushing the limits of what a messaging app could be, in the African market.
Looking to continue its growth in Africa, where it already has a strong user base in Nigeria and South Africa, the app is downloaded half a million times per month onto Android, iOS and Blackberry 10.
He also wanted to highlight how much BBM has changed over the past few years from a text only service, to now become a great opportunity for app developers on the continent.
A Grandmother from the UK has charmed the internet with her good manners!
The 86-year old won legions of fans around the world when her grandson and twitter user Ben John, opened his grandmother's laptop last week, and saw that she had been typing please and thank you into her Google search terms.
Upon seeing this he posted an image on Twitter which went viral, with over 26 thousand likes.
Her manners did not go unreturned however, as one of the thousands of responses came from Google UK's account thanking her for her manners, whilst also providing her with an answer for her question.


text:
Sonderforschungsbereich 1456
Neuigkeiten (only in English)
01/2023: Press release: Colour images from the shadow of a sample. For more details go to: "University of Göttingen - New press releases". The CRC 1456 congratulates the scientists of the project C03!
12/2022: Award for maths research
Dr Gilles Mordant (member of project A04) awarded annual prize by Royal Academy of Science, Letters and Fine Arts of Belgium.
He has been conducting research for one year in the Göttingen Collaborative Research Center SFB 1456 "Mathematics of Experiment" in the group of Prof. Dr. Axel Munk at the Faculty of Mathematics on statistical data analysis methods using the theory of optimal transport. "Building on my work in Belgium, I am developing new methods in Göttingen that help us understand the spatially complicated arrangement of elementary building blocks of the cell and their interaction. Göttingen offers a unique environment for me to work on the whole spectrum of the problem," Mordant said. For more details go to: "University of Göttingen - New press releases". The CRC 1456 congratulates him!
10/2022: Anna Blob (member of project A04) received a poster price at this year's GGNB Science Day. The CRC 1456 congratulates her!
09/2022: New Project A06 (Sinz/Gail)
The CRC 1456 welcomes Fabian Sinz and Alexander Gail as new principal investigators. They will start the project A06 "Predictive models and frame of reference in macaque sensorimotor cortex under natural conditions" in January 2023. The aim of this project is to develop graph based models for neural activity of freely behaving monkeys to better understand how the brain represent objects in space under natural conditions. The CRC 1456 congratulates both.
09/2022: Symposium on Inverse Problems: From experimental data to models and back
(Photo: Eva Hetzel)
The Symposium was held in Griebnitzsee (University of Potsdam) on September 19-21, 2022 and was co-organized by the CRC 1294 from the University of Potsdam, our CRC, and the German Society for Inverse Problems. In total, 61 abstracts were submitted for a contribution at this symposium and were reviewed by the scientific committee. The 3-day program with 102 registered participants included plenary talk of 6 invited speakers, 30 oral presentations, and a poster session with 23 poster contributions. Have a look at the conference book.
09/2022: Our 2. CRC 1456 Retreat in Goslar
(Photo: Dr. Markus Osterhoff)
Our 2. CRC 1456 retreat (August 31- September 01,2013) was held in Goslar and has presented the state of the relevant scientific disciplines through the different projects. For the more than fifty participants it was a perfect opportunity to discuss and to intensify already established work within the projects.
7-11/09/2022 "Festival for Art, Technology and Society" in Linz. The projects will exhibited in the form of a 5-day permanent exhibition at this year's ARS ELECTRONICA FESTIVAL in Linz. The organizers already listed the projects and contributors on their homepage, and especially project C06.
08/2022: Press release: Building blocks of the future for photovoltaics - Project B01 (Luke/Mathias)
For more details go to: "Press release: Building blocks of the future for photovoltaics"
08/2022: Press release: New quantum technology combines free electrons and photons - Project C01 (Hohage/Ropers). For more details go to: " New quantum technology combines free electrons and photons"
05/2022: Topic of project A03 (Salditt/Schmitzer)
The "video clip" explains the rough idea of 3d virtual histology on phase contrast x-ray tomography images via the framework of linearized optimal transport. It was created by Clément Sarrazin and Bernhard Schmitzer, using material from the Salditt group in Göttingen's physics department and the manim animation software. Related publications are (PNAS21) and (UnbalancedLOT).
05/2022: Jun.-Prof. Anne Wald a new principal investigator
The SFB 755 welcomes Anne Wald as a new principal investigator. She starts the project B06 "Compensating motion and model inexactness in nano-CT and local tomography" in May 2022. The aim of this project together with Tim Salditt is an estimation of the model inexactness as well as the identification of motion directly from the data. Analytical, statistical and data-driven methods are combined to obtain efficient and stable reconstruction techniques. The CRC 1456 congratulates both.
04/2022: Prof. Claus Ropers receives ERC Advanced Grant
Claus Ropers from the department Ultrafast Dynamics at the Max Planck Institute for Multidisciplinary Science has received an European Research Council (ERC) Advanced Grant. He is also professor at the Georg-August Universität and principial investigator in project C01 (Hohage/Ropers). For more details about the ERC Advanced Grant please go to: "ERC Advanced Grants for Hannelore Ehrenreich and Claus Ropers" (MPInat). The CRC 1456 congratulates him.
03/2022: Opening Symposium of the CRC 1456 "Mathematics of Experiment"
- The symposium had to be purely virtual and took place from March 15th to 17th, 2022. This event has been attended by the principal investigators of the CRC as well as by ten renowned external speakers. All projects were presented by the PhD students and postdocs. The topics spanned a broad range of fields from partial differential equations over experimental techniques to optimal transport, computational Bayesian method and machine learning techniques. The response with over 80 participants exceeded the expectations of the organizers.
The next event is our conference on "Inverse Problems: From experimental data to models and back" in Potsdam from September 19-21, 2022. Please find further information under Inverse Problems: From experimental data to models and back.
03/2022: Dr. Matthijs Jansen - Extension for his Humboldt Research Fellowship for Postdoctoral Researchers Dr. Matthijs Jansen, PostDoc at the I. Physical Institute and research group leader was granted an extension for his "Humboldt Research Fellowship for Postdoctoral Researchers". The extension will be for the period 01.04.-30.09.2024. Congratulations!
03/2022: Dr. Janosch Preuß - Dr.-Klaus-Körper-Prize for his excellent dissertation Janosch Preuß, PostDoc at the Institute of Numerical and Applied Mathematics, was awarded the Dr.-Klaus-Körper-Prize 2020 by GAMM. For more details go to: "GAMM (Gesellschaft für Angewandte Mathematik und Mechanik/Society for Applied Mathematics and Mechanics)". The CRC 1456 congratulates him.
01/2022: Prof. Martin Uecker - Assoicate Editor for the SIAM Journal of Imaging Sciences Martin Uecker, Professor at the Graz University of Technology and principial investigator in project B03 (Plonka-Hoch/Uecker) joined the editorial board of the SIAM Journal of Imaging Sciences. For more details go to: "SIAM Journal on Imaging Sciences - Editorial Board". The CRC 1456 congratulates him.
01/2022: Prof. Alexander Ecker receives ERC Starting Grant The computational neuroscientists Professor Alexander Ecker from the University of Göttingen and the Max Planck Institute for Dynamics and Self-Organization (MPIDS) has received a Starting Grant from the European Research Council (ERC) of 1,5 million euros. Prof. Alexander Ecker is also principial investigator in project B05 (Ecker, Gollisch). For more details about the ERC Starting Grant please go to: "Bernstein Network Computational Neuroscience . The CRC 1456 congratulates him.
11/2021: Extension for Prof. Thorsten Hohage's Max Planck Research Fellow Group
Thorsten Hohage, Professor at the Institute for Numerical and Applied Mathematics, Spokesperson of the CRC 1456 and Max Planck Fellow, was granted an extension for his Research Fellow Group "Inverse Problems" at the Max Planck Institute for Solar System Research for the period 01.04.2022 – 31.03.2027. Congratulations! For more details about the Max Planck Fellow Group "Inverse Problems" please go to: Max Planck Fellow Group: Inverse Problems
11/2021: Matthijs Jansen has been offered a position as junior research group leader within CRC 1456. Congratulations!
Are you interested to set up a femtosecond spectroscopy and microscopy experiment with close ties to materials science and data science? Then send a mail to gsmjansen @ uni-goettingen.de!
11/2021: Wiebke Bennecke - PhD student in project B01 (Luke/Mathias) - was awarded with the Poster Prize at the workshop Photoemission Tomography: Applications and Future Developments
08/2021: Prof. Dr. Sarah Köster elected as vice-speaker of the condensed matter section
Sarah Köster, professor at the IRP and principial investigator in project A04 (Köster/Munk) was elected as vice-speaker of the condensed matter section (SKM) of the German Physical Sociatey (DPG). The CRC 1456 congratulates her.
06/2021: Annemarie Kehl received a fellowship vom "IMPRS for Physics of biological and Complex Systems" (PBCS)
Annemarie Kehl, PhD student in project A01 (Bennati/Huckemann) received a fellowship from "IMPRS for Physics of biological and Complex Systems" "IMPRS for Physics of biological and Complex Systems". The CRC 1456 congratulates her.
04/2021: ERC Advanced Grant for Prof. Dr. Marina Bennati
Marina Bennati, research group leader at the Max Planck Institute (MPI) for Biophysical Chemistry and principal investigator in project A01 (Bennati/Huckemann) - was awarded the ERC Advanced Grant . The CRC 1456 congratulates Marina Bennati.
Prof. Dr. Thorsten Hohage
Lotzestraße 16-18, D-37083 Göttingen
E-Mail: hohage@math.uni-goettingen.de
Phone: +49 (0)551/39 24509
CRC office:
Eva Hetzel (Coordination)
E-Mail: crc1456@uni-goettingen.de
Phone: +49 (0)551/39-26771
Norma Rahlfs-Rittmeier (Administration)
Studienangebot (eCampus)
Organisation (eCampus)