text:
package com.palantir.atlasdb.keyvalue.api.cache;

import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.palantir.atlasdb.keyvalue.api.AtlasLockDescriptorUtils;
import com.palantir.atlasdb.keyvalue.api.CellReference;
import com.palantir.atlasdb.keyvalue.api.ResilientLockWatchProxy;
import com.palantir.atlasdb.keyvalue.api.TableReference;
import com.palantir.atlasdb.keyvalue.api.watch.Sequence;
import com.palantir.atlasdb.keyvalue.api.watch.StartTimestamp;
import com.palantir.atlasdb.transaction.api.TransactionLockWatchFailedException;
import com.palantir.common.streams.KeyedStream;
import com.palantir.lock.LockDescriptor;
import com.palantir.lock.watch.CommitUpdate;
import com.palantir.lock.watch.LockWatchEvent;
import com.palantir.lock.watch.LockWatchEventCache;
import com.palantir.lock.watch.LockWatchVersion;
import com.palantir.lock.watch.TransactionsLockWatchUpdate;
import com.palantir.logsafe.SafeArg;
import com.palantir.logsafe.logger.SafeLogger;
import com.palantir.logsafe.logger.SafeLoggerFactory;
import com.palantir.util.RateLimitedLogger;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.concurrent.ThreadSafe;

@ThreadSafe
public final class LockWatchValueScopingCacheImpl implements LockWatchValueScopingCache {
    private static final SafeLogger log = SafeLoggerFactory.get(LockWatchValueScopingCacheImpl.class);
    private static final RateLimitedLogger rateLimitedLogger = new RateLimitedLogger(log, (1 / 5.0));
    private static final int MAX_CACHE_COUNT = 20_000;
    private final LockWatchEventCache eventCache;
    private final CacheStore cacheStore;
    private final ValueStore valueStore;
    private final SnapshotStore snapshotStore;

    private volatile Optional<LockWatchVersion> currentVersion = Optional.empty();

    private final CacheMetrics cacheMetrics;

    @VisibleForTesting
    LockWatchValueScopingCacheImpl(
            LockWatchEventCache eventCache,
            long maxCacheSize,
            double validationProbability,
            Set<TableReference> watchedTablesFromSchema,
            SnapshotStore snapshotStore,
            Runnable failureCallback,
            CacheMetrics metrics) {
        this.eventCache = eventCache;
        this.snapshotStore = snapshotStore;
        this.valueStore = new ValueStoreImpl(watchedTablesFromSchema, maxCacheSize, metrics);
        this.cacheMetrics = metrics;
        this.cacheStore =
                new CacheStoreImpl(snapshotStore, validationProbability, failureCallback, metrics, MAX_CACHE_COUNT);
    }

    public static LockWatchValueScopingCache create(
            LockWatchEventCache eventCache,
            CacheMetrics metrics,
            long maxCacheSize,
            double validationProbability,
            Set<TableReference> watchedTablesFromSchema) {
        ResilientLockWatchProxy<LockWatchValueScopingCache> proxyFactory =
                ResilientLockWatchProxy.newValueCacheProxyFactory(NoOpLockWatchValueScopingCache.create(), metrics);
        LockWatchValueScopingCache defaultCache = new LockWatchValueScopingCacheImpl(
                eventCache,
                maxCacheSize,
                validationProbability,
                watchedTablesFromSchema,
                SnapshotStoreImpl.create(metrics),
                proxyFactory::fallback,
                metrics);
        proxyFactory.setDelegate(defaultCache);
        return proxyFactory.newValueCacheProxy();
    }

    @Override
    public synchronized void processStartTransactions(Set<Long> startTimestamps) {
        TransactionsLockWatchUpdate updateForTransactions =
                eventCache.getUpdateForTransactions(startTimestamps, currentVersion);

        Optional<LockWatchVersion> latestVersionFromUpdate = computeMaxUpdateVersion(updateForTransactions);

        if (updateForTransactions.clearCache()) {
            clearCache(updateForTransactions, latestVersionFromUpdate);
        }

        updateStores(updateForTransactions);
        updateCurrentVersion(latestVersionFromUpdate);
    }

    @Override
    public synchronized void updateCacheWithCommitTimestampsInformation(Set<Long> startTimestamps) {
        startTimestamps.forEach(this::processCommitUpdate);
    }

    @Override
    public synchronized void ensureStateRemoved(long startTimestamp) {
        StartTimestamp startTs = StartTimestamp.of(startTimestamp);
        snapshotStore.removeTimestamp(startTs);
        cacheStore.removeCache(startTs);
    }

    @Override
    public synchronized void onSuccessfulCommit(long startTimestamp) {
        StartTimestamp startTs = StartTimestamp.of(startTimestamp);
        TransactionScopedCache cache = cacheStore.getCache(startTs);
        cache.finalise();

        Map<CellReference, CacheValue> cachedValues = cache.getValueDigest().loadedValues();
        if (!cachedValues.isEmpty()) {

            CommitUpdate commitUpdate = eventCache.getEventUpdate(startTimestamp);
            commitUpdate.accept(new CommitUpdate.Visitor<Void>() {
                @Override
                public Void invalidateAll() {
                    // This might happen due to an election or if we exceeded the maximum number of events held in
                    // memory. Either way, the values are just not pushed to the central cache. If it needs to throw
                    // because of read-write conflicts, that is handled in the PreCommitCondition.
                    return null;
                }

                @Override
                public Void invalidateSome(Set<LockDescriptor> invalidatedLocks) {
                    Set<CellReference> invalidatedCells = invalidatedLocks.stream()
                            .map(AtlasLockDescriptorUtils::candidateCells)
                            .flatMap(List::stream)
                            .collect(Collectors.toSet());
                    KeyedStream.stream(cachedValues)
                            .filterKeys(cellReference -> !invalidatedCells.contains(cellReference))
                            .forEach(valueStore::putValue);
                    return null;
                }
            });
        }
        ensureStateRemoved(startTimestamp);
    }

    /**
     * Retrieval of transaction scoped caches (read-only or otherwise) does not need to be synchronised. The main
     * reason for this is that the only race condition that could conceivably occur is for the state to not exist here
     * when it should. However, in all of these cases, a no-op cache is used instead, and thus the transaction will
     * simply go ahead but with caching disabled (which is guaranteed to be safe).
     */
    @Override
    public TransactionScopedCache getTransactionScopedCache(long startTs) {
        return cacheStore.getCache(StartTimestamp.of(startTs));
    }

    @Override
    public TransactionScopedCache getReadOnlyTransactionScopedCacheForCommit(long startTs) {
        return cacheStore.getReadOnlyCache(StartTimestamp.of(startTs));
    }

    private synchronized void processCommitUpdate(long startTimestamp) {
        StartTimestamp startTs = StartTimestamp.of(startTimestamp);
        TransactionScopedCache cache = cacheStore.getCache(startTs);
        cache.finalise();
        CommitUpdate commitUpdate = eventCache.getCommitUpdate(startTimestamp);
        cacheStore.createReadOnlyCache(startTs, commitUpdate);
    }

    /**
     * In order to maintain the necessary invariants, we need to do the following:
     *
     *  1. For each new event, we apply it to the cache. The effects of this application is described in
     *     {@link LockWatchValueScopingCache}.
     *  2. For each transaction, we must ensure that we store a snapshot of the cache at the sequence corresponding
     *     to the transaction's start timestamp. Note that not every sequence will have a corresponding timestamp, so we
     *     don't bother storing a snapshot for those sequences. Also note that we know that each call here will only
     *     ever have new events, and that consecutive calls to this method will *always* have increasing sequences
     *     (without this last guarantee, we'd need to store snapshots for all sequences).
     *  3. For each transaction, we must create a transaction scoped cache. We do this now as we have tighter guarantees
     *     around when the cache is created, and thus deleted.
     */
    private synchronized void updateStores(TransactionsLockWatchUpdate updateForTransactions) {
        Multimap<Sequence, StartTimestamp> reversedMap = createSequenceTimestampMultimap(updateForTransactions);

        // Without this block, updates with no events would not store a snapshot.
        currentVersion
                .map(LockWatchVersion::version)
                .map(Sequence::of)
                .ifPresent(sequence ->
                        snapshotStore.storeSnapshot(sequence, reversedMap.get(sequence), valueStore.getSnapshot()));

        updateForTransactions.events().stream().filter(this::isNewEvent).forEach(event -> {
            valueStore.applyEvent(event);
            Sequence sequence = Sequence.of(event.sequence());
            snapshotStore.storeSnapshot(sequence, reversedMap.get(sequence), valueStore.getSnapshot());
        });

        updateForTransactions
                .startTsToSequence()
                .keySet()
                .forEach(timestamp -> cacheStore.createCache(StartTimestamp.of(timestamp)));

        if (valueStore.getSnapshot().hasAnyTablesWatched()) {
            assertNoSnapshotsMissing(reversedMap);
        }
    }

    private synchronized boolean isNewEvent(LockWatchEvent event) {
        return currentVersion
                .map(LockWatchVersion::version)
                .map(current -> current < event.sequence())
                .orElse(true);
    }

    private synchronized void assertNoSnapshotsMissing(Multimap<Sequence, StartTimestamp> reversedMap) {
        Set<Sequence> sequences = reversedMap.keySet();
        if (sequences.stream().map(snapshotStore::getSnapshotForSequence).anyMatch(Optional::isEmpty)) {
            log.warn(
                    "snapshots were not taken for all sequences; logging additional information",
                    SafeArg.of("numSequences", sequences),
                    SafeArg.of(
                            "firstHundredSequences",
                            sequences.stream().limit(100).collect(Collectors.toSet())),
                    SafeArg.of("currentVersion", currentVersion),
                    SafeArg.of("numTransactions", reversedMap.values().size()));
            throw new TransactionLockWatchFailedException("snapshots were not taken for all sequences; this update "
                    + "must have been lost and is now too old to process. Transactions should be retried.");
        }
    }

    private synchronized void updateCurrentVersion(Optional<LockWatchVersion> maybeUpdateVersion) {
        maybeUpdateVersion
                .filter(this::shouldUpdateVersion)
                .ifPresent(updateVersion -> currentVersion = Optional.of(updateVersion));
    }

    private Optional<LockWatchVersion> computeMaxUpdateVersion(TransactionsLockWatchUpdate updateForTransactions) {
        return updateForTransactions.startTsToSequence().values().stream()
                .max(Comparator.comparingLong(LockWatchVersion::version));
    }

    private synchronized boolean shouldUpdateVersion(LockWatchVersion updateVersion) {
        return currentVersion.isEmpty() || currentVersion.get().version() < updateVersion.version();
    }

    private synchronized void clearCache(
            TransactionsLockWatchUpdate updateForTransactions, Optional<LockWatchVersion> latestVersionFromUpdate) {
        LockWatchEvent firstEvent = null;
        LockWatchEvent lastEvent = null;
        List<LockWatchEvent> events = updateForTransactions.events();
        if (!events.isEmpty()) {
            firstEvent = events.get(0);
            lastEvent = events.get(events.size() - 1);
        }

        registerAllClearEventAndMaybeLog(latestVersionFromUpdate, firstEvent, lastEvent);
        valueStore.reset();
        snapshotStore.reset();
        cacheStore.reset();
        currentVersion = Optional.empty();
    }

    private void registerAllClearEventAndMaybeLog(
            Optional<LockWatchVersion> latestVersionFromUpdate, LockWatchEvent firstEvent, LockWatchEvent lastEvent) {
        cacheMetrics.increaseCacheStateAllClear();
        rateLimitedLogger.log(logger -> logger.info(
                "Clearing all value cache state",
                SafeArg.of("currentVersion", currentVersion),
                SafeArg.of("latestUpdateFromUpdate", latestVersionFromUpdate),
                SafeArg.of("firstEventSequence", Optional.ofNullable(firstEvent).map(LockWatchEvent::sequence)),
                SafeArg.of("lastEventSequence", Optional.ofNullable(lastEvent).map(LockWatchEvent::sequence))));
    }

    private static Multimap<Sequence, StartTimestamp> createSequenceTimestampMultimap(
            TransactionsLockWatchUpdate updateForTransactions) {
        return KeyedStream.stream(updateForTransactions.startTsToSequence())
                .mapKeys(StartTimestamp::of)
                .map(LockWatchVersion::version)
                .map(Sequence::of)
                .mapEntries((timestamp, sequence) -> Maps.immutableEntry(sequence, timestamp))
                .collectToSetMultimap();
    }
}


text:
Q: Search within a page function for Wordpress I'm working with a page of a wordpress site that is essentially a very long list of names. I'm wondering if there is a bit of HTML that will present a search box on the page next to the list of names that works exactly like CTRL+F. The site owner refuses to learn CTRL+F and also doesn't believe anyone knows how to use it because they don't know how to use it. I searched for something like this but only came up with a lot of really old javascript snippets, none of which seem to work.
Anyone know of any code for this or a plugin?

redpajama_set_name: RedPajamaStackExchange


What's the most beautiful word in the world?
We need more love in the world. Love can can keep us together. Love is looking at the world with rose-coloured glasses.
Love is hugs and kisses from the grandchildren. Love is holding hands with hubby. Love is baking for the grandchildren.
Love is hearing the children laughing and turning their cries into dry eyes.
Love is seeing the beautiful world we live in.
Love is sharing with Leslie at this wonderful blog.


text:
Williams passes the torch
Paul Sullivan, Chicago Tribune reporter
While handing over the White Sox general manager's job to assistant Rick Hahn on Friday, freshly titled executive vice president Ken Williams described the "sharp piercing pain in the neck" he used to feel while watching games that forced him to take long walks and drives to nowhere in particular.
One day this season, after the Sox turned a five-run lead into a five-run deficit, Williams had to escape U.S. Cellular Field to keep his sanity.
"I walked right out of the ballpark and took a drive down Lake Shore Drive," he said. "And a guy pulls up alongside me and looks over. And I swear he darn near ran off the road. And then said, 'You're not supposed to be here, there's a game.' And I'm like, 'I know, that's why I'm here.' "
Williams now is moving upstairs in the organization, theoretically to reduce his stress level while giving Hahn his long-awaited chance at building the ballclub.
So what does Hahn plan to do in his new position?
"The way Kenny talks, I may be walking around the lake," he cracked.
In a move that has been in the works for nearly a year, White Sox Chairman Jerry Reinsdorf promoted Williams and Hahn and named Howard Pizer senior executive vice president.
"Kenny and Rick have worked very successfully over the past 12 seasons, and I'm excited to see this dynamic grow and expand as Rick assumes more day-to-day responsibility while Kenny is allowed to focus even more on macro issues, talent evaluation and long-term planning for the organization," Reinsdorf said in a statement.
Williams, who replaced Ron Schueler as GM in 2000 and built the 2005 World Series champions, will be hard-pressed to slow down. He admitted he has a "type-A" personality and likes to be hands-on.
So, will Williams let Hahn do his thing, or will he continue to act as a de facto GM?
"He has to find his own sea legs," Williams said. "But I challenge you to find anyone over the years to say I'm a meddling kind of management person. You hire people you trust and let them do their job. Because we have a 12-year relationship, I know where his strengths lie, and he knows where mine lie.
"Over the last couple of weeks, he already has come to me to ask my opinion on certain things, and I give it to him. But I haven't brought (issues) up until he has brought it back up. It's up to him to shape the club. If there are major decisions, part of my role, as Jerry Reinsdorf said, is to step in and manage the situation."
Hahn is already at work talking to representatives of Jake Peavy, Kevin Youkilis and A.J. Pierzynski, three free agents he said he would like to keep. He said Reinsdorf told him he still can negotiate contracts, as he did as assistant GM.
Hahn said the new management structure doesn't compare as much with the Theo Epstein-Jed Hoyer tandem of the Cubs as it does the John Paxson-Gar Forman setup with the Bulls.
"Because of the commonality with (Reinsdorf, also the Bulls chairman)," he said. "But even that's different. It depends more on the people around you in the office."
Hahn pointed to other baseball president-GM duos such as the Indians' Mark Shapiro and Chris Antonetti and the Rangers' Nolan Ryan and Jon Daniels.
"Theo and his staff is just another example of a different sort of setup," he said. "What matters from my standpoint when I look at it is the efficacy within the office. How is it going to work? Do we have the right people having the right input and the right resources? That's what I'm comfortable with here."
Hahn has some people in mind he would like to hire and said Williams and Reinsdorf "are on board" with his ideas. He declined to discuss payroll in specifics but said "empirically, having a nine¿figure payroll is enough to win in this league."
Williams will not get to dictate the team's payroll.
"I wish," he said with a laugh. "I'm trying."
So will the Sox's payroll go up in 2013?
"We have a number," Williams said. "The tricky part is as the offseason progresses and we see what maybe the reaction is to the club, from a sponsorship and advertising level, we'll see how it evolves. Rick said it best — we have enough money to compete."
Williams said his new role will allow him to do things he couldn't do as GM.
"I might be in California talking to one of our amateur scouts to impart what we're looking for at this level to a greater degree personally," he said. "Things you can't do as a general manager. I know where the holes are. I know that when you're sitting in that GM chair day after day after day, there are gaps in your leadership because you can't reach out and touch everybody."
Williams said he would like to travel to Japan to scout players, or go personally to scout the Cuban team, "so when the next Cuban player defects, I have first-hand knowledge" of his talent level.
"I'll have more latitude and control of my own personal schedule so that I could determine (where I go)," he said. "A lot of this is going to have to evolve. I've had relationships with all the other departments, but one of the things I'd like to do is learn more about the inner workings and people who are responsible for all the things that happen before we're even able to put a team on the field."
psullivan@tribune.com
Twitter @PWSullivan

redpajama_set_name: RedPajamaCommonCrawl


text:
TCA: Jim Carrey on Kidding
Fred Topel September 9, 2018 0 likes
Jim Carrey as Jeff Pickles in KIDDING (Season 1, Episode 02, "Pusillanimous"). – Photo: Erica Parise/SHOWTIME – Photo ID: KIDDING_102_6466.DNG
Showtime presented a panel on their new series Kidding for the Television Critics Association. Jim Carrey returns to television in the role of Jeff Pickles, host of Mr. Pickles' Puppet Time who entertains kids but is grieving the death of his own son. He wants to do shows addressing such profound themes in a kid friendly way, but when his producer resists, Pickles starts to crack.
Carrey already produces I'm Dying Up Here for Showtime. Kidding also reunites him with his Eternal Sunshine of the Spotless Mind director Michel Gondry. Kidding premieres tonight at 10PM on Showtime, and here are a few things Carrey said on the TCA panel.
Jim Carrey on becoming a producer:
Jim Carrey as Jeff Pickles in KIDDING (Season 1, Episode 01, "Green Means Go"). – Photo: Erica Parise/SHOWTIME
"I just want as much involvement with as many wonderful artists and to be as creative as humanly possible, so that stands to reason I would want to produce some things and I would want to set up situations where I can enjoy other people's talents and mix it up with them. Right now there's just a lot of creative things happening in a lot of different directions, and this, to me, is a jewel that came my way and was presented to me at a perfect time when I am well-schooled and experienced enough to do this part, and I'm really glad because I'm thrown into this piece with an incredible collection of artists, and this cast is staggeringly talented, and everybody involved is amazing. So I hope it culminates into something that really touches people and gives them a little bit of hope. It's all just creation to me. To me, it's creation. It's expanding in every direction, but it's just still creation. It's still what do you want to do with this moment or how is this scene going to play out. Do you have an idea? What do you want to do? What do I want to do? It's just creating."
Jim Carrey on his first TV show, The Duck Factory:
Catherine Keener as Deirdre and Jim Carrey as Jeff (AKA Mr. Pickles) in KIDDING (Season 1, Episode 04, "Bye Mom"). – Photo: Erica Parise/SHOWTIME –
"We are canceled? What? I mean, my memories of The Duck Factory, I was here for a year in town, and I got a television show, and it was just, like, incredible. He was a very innocent character as well. He came from Duluth, Minnesota, and he was kind of green behind the ears and stuff. They had no idea what I did before I did that part. So they had all 13 episodes had been written already. So there was no tailoring going on whatsoever to my character in that. It's hard to compare experiences. They just all are their own thing, and to me, it's, like, every day I start over again. So I don't feel like a professional except that I can do stuff. I know what I'm doing, but I've never lost that feeling of showing up and going, 'I just started in the business. Like, how am I going to approach this? What's the experiment going to be this time?'"
Jim Carrey on the puppets of Mr. Pickles' Puppet Time:
Jim Carrey as Jeff Pickles in KIDDING (Season 1, Episode 02, "Pusillanimous"). – Photo: Erica Parise/SHOWTIME – Photo: KIDDING_102_7225.dng
"We've all been very creative as far as the creation of the puppets and things like that are concerned. Oops was an idea that came to me when I was thinking how am I going to how could I personify on this show, some kind of character that gives people the excuse to be flawed, you know. How would he give children an excuse to make mistakes? And my idea was that the Oops shows up in everyone's life. So we've had this wonderful creative process developing the puppets together. We have the most unbelievable puppet team, just incredible people, and it really is that type of children's show vibe on the set when we get working with the puppeteers because they just bring with them this beautiful I don't know appreciation of that simplistic, simple communication with children. There's a vibe about these people. They are willing to do anything. It's all fun to them. They want to jump in and be creative, and so it's just such a wonderful feeling to go from super serious, whatever, to go be surrounded by a bunch of people that create these illusions for a living. They are lovely people. I don't know if that answers your question, but I'm making sound, and that's the important thing."
Jim Carrey on convincing people he could do more than one thing:
Judy Greer as Jill and Jim Carrey as Jeff Pickles in KIDDING (Season 1, Episode 02, "Pusillanimous"). – Photo: Erica Parise/SHOWTIME – Photo ID: KIDDING_102_651.dng
"You always have to talk everybody and yourself into the next step, whatever it is. I mean, it's just, you know, human beings, when something works, their instinct is to grab onto it and don't change a thing and stay with it as long as you can. I've never felt comfortable with that."
Jim Carrey on the appeal of Kidding:
"I think the idea of identity, the search for identity, what it is, who we are, what's an authentic person is a theme that's always been attractive to me, and I think that there are there's definitely something in this piece that calls me as far as the idea of being hit by a freight train in life and trying to hang on to the idea of yourself that you had before it happened that's really attractive. That's an incredible concept to me."
Jim Carrey on Jeff Pickles' struggles:
"They've created an identity through this show, so that's the family identity. The fact is, any changes freak people out when they've got something successful that they've been doing. There's a change in the makeup, somehow the chemistry of the show. First of all, what happens is so challenging that I would think that everyone would assume that there will be a nervous breakdown. And it might not even be that. It might be them who is having a nervous breakdown. That's the wonderful thing about this show. I think we're going to be on a journey to find out that everyone is going through the same change and they're being forced to by circumstances."
Tags: Fred Topel, Jim Carrey interview, Jim Carrey on Kidding
Fred Topel
Fred Topel also known as Franchise Fred has been an entertainment journalist since 1999 and specializes in writing about film, television and video games. Fred has written for several outlets including About.com, CraveOnline, and Rotten Tomatoes among others. His favorite films include Toy Story 2, The Rock, Face/Off, True Lies, Labyrinth, The Big Hit, Michael Moore's The Big One, and Casablanca. We are very lucky and excited to have Fred as part of the We Live Entertainment team. Follow him on Twitter @FranchiseFred and @FredTopel
Cedric Yarbrough on 'Speechless' and 'Bojack Horseman'
Exclusive Interview: Anna Schafer on Elizabeth Blue
Comic-Con Roundtable: KJ Apa and Cole Sprouse on Riverdale Season 2
Man's Best Friend 25th Anniversary: Murder & Hooch


2011 has been a notable year for the death penalty: Fewer people have been sentenced to die than in any year since capital punishment was reinstated in 1976, according to the Death Penalty Information Center.
Last month, Oregon Governor John Kitzhaber placed a moratorium on executions in his state. He also stayed the pending execution of Gary Haugen, who would have been the first Oregonian put to death for a crime in 14 years. Next door, Idaho moved in the opposite direction, executing its first prisoner in 17 years. Many states that have the death penalty use it infrequently, if ever. Richard Dieter, head of the Death Penalty Information Center, says these states keep the ultimate punishment around, rather than abolishing it outright, for a reason: They can imagine a crime horrible enough that they'd want the sentence available.


Aim This unit provides learners with an opportunity to develop the skills needed to design electrical power installations, lighting installations and fire protection systems, in compliance with relevant legislation and standards. Unit abstract This unit develops the skills needed to design simple electrical and lighting installations in compliance with relevant legislation and standards. Learners will explore general and emergency lighting installations, the distribution of electrical power, the legislation that underpins the design of electrical installations, the specification of fire protection systems, and the use of motors and control installations in mechanical plant. Learners will have the opportunity to design lighting installations, select cable sizes and types, specify methods of electrical distribution, specify overcurrent protection devices, produce fire detection design solutions and installation requirements for building services control panels. The focus of this unit is on the design and installation of mechanical building services installations in industrial, public and commercial buildings.


text:
Appeals Lawyer in Boston, MA
Boston Criminal Defense Attorney
If you are convicted of a crime, post-conviction relief (an appeal) is available either through a motion for new trial or a direct appeal. In limited circumstances, a habeas corpus petition may be filed.
Appellate issues can include, but are by no means limited to:
Error at the pretrial and trial phases as denials of motions to suppress
Admission of improper/prejudicial evidence
Flawed jury instructions
Ineffective assistance of counsel
Insufficiency of proof
In Massachusetts, first degree murder convictions are automatically appealed to the Supreme Judicial Court (SJC), the state's highest appellate court. All other appeals are taken to the Massachusetts Appeals Court (MAC). Adverse decisions at the MAC may be appealed to the SJC via a petition for rehearing or further appellate review, but further appeal to the SJC is not granted as a matter of right.
Requirements to File for an Appeal
In Massachusetts, to preserve one's right to appeal, a notice of appeal must be filed with the clerk of the trial court within thirty (30) days of conviction or sentencing, depending on which one is later. Indigent defendants have the same right to appointed appellate counsel as defendants at the trial level.
Contact an Effective Boston Appeals Lawyer
If you are looking to file for an appeal, then it is important for you to retain an attorney who has the experience and know-how to provide you with the best possible case. Attorney Brad Bailey has proven his ability to successfully represent his clients before the appellate court.
Contact Brad Bailey Law today and discuss your case with a Boston appeals lawyer in a FREE case review.


Google has dipped its Google Play into the New Year fever by offering massive discounts on some Android games – up to 85 per cent.
Discounts over holidays isn't a new thing and Google has time an again offered such discounts on Google Play. However, this time around these discounts are really steep making it a great time to stock up on games that you wanted to own for quite sometime but didn't have the bucks to spend on. We recommend that you should get your hands on the games you want because the sales won't last for long.
Some of the games that are being sold off for just a few cents include The Amazing Spider-Man 2 which normally costs $6.99, but is now being offered for just $0.99. Modern Combat 4: Zero Hour is down to just $0.99 as well from $6.99. The $4.99 Assassin's Creed Identity is also on sale for $0.99 with The Room Three also being offered for $0.99 down from $3.99. Some other games on sale are NBA2K17, Hitman Go, Fruit Ninja, LEGO Jurassic World, LEGO Marvel Super Heroes and Crashlands. NBA2K17 is currently on sale, and that never goes on sale.
These are just a few of the games that are on sale and for the entire list you need to head to Google Play through your smartphone or tablet. Google Play is giving a great treat by including major titles in the sale this time around with quite a few of them now priced just $0.99, but you will find those that are on sale and cost just $0.10, like Table Tennis Touch. We are not sure how long these sales will last because Google hasn't official revealed the end date and so chances are that the sales will last only for the New Year weekend.
Nokia making a comeback isn't the question of if, but a question of when and with more and more leaks the answer to that when could be 'soon'. Reports have surfaced on the web claiming that a certain smartphone with model number TA-1000 has passed the China Compulsory Certification (3C) and this is the highly rumoured Nokia E1.
While the certification information doesn't reveal a great deal about the smartphone, there are those who link the TA-1000 to Nokia and claim that it is the Nokia E1 smartphone. The 3C listing confirms that the Nokia TA-1000 comes with 5V/2A charging support, which means that the specific smartphone does not support fast charging – which is the reason for the Nokia E1, as that is tipped to be a mid-range device.
The Nokia E1 has further been tipped to come with Android 7.0 Nougat out-of-the-box. The mid-range device is expected to be powered by a Snapdragon 600 series processor coupled with 4GB of RAM. The base option for internal storage on the phone is expected to be 64GB. It's worth stressing that all of this information is based on leaks, and should be taken very lightly.
Nokia is also expected to unveil the Nokia D1C at MWC 2017. The company has also been rumoured to launch a flagship variant named Nokia P with Snapdragon 835 SoC coupled with 6GB of RAM sometime in future. Alleged Nokia P has been tipped to feature a 23-megapixel camera setup.
Out of the five, four new models will have display sizes ranging from 5 inches to 5.7 inches, at QHD or full-HD resolutions. LG Display, Century Technology (CTC), and Innolux will be supplying the panels for the upcoming phones with FIH Mobile serving as production partner.


Can I take a by for the first round?
Sergey Noritsyn has 2/2, NOT Lambert Liu as is stated in the round 2 write-up.
Hi, Can I take a bye next round? Thanks.
I (and Ivan, in that case) cant make it for Round 4, can we boh have 1/2 byes?
I'd like a bye tomorrow, Round 5. Thanks.
Wow, Sergey! I did not know that at all! Thank you for telling me that!
Woah I totally couldnt figure out you were being sarcastic!
Hey I was saying that in case of some people actually took me legitimately .
Vigneswaramoorthy Vinorth wins Reserve with a round to spare! Congrats!
Hi, I would like another bye today (Round 6). Thanks!
Oh my GOD!!!!!! I just went over my game with Stockfish…I was completely winning because his tactic on move 31 was ILLEGAL!!! His knight fork didn't work because it was PINNED against his King! Then he would have had to resign immediately as he was down a Queen!!! What happens now? Is it too late to claim a win??
The penalty for making an illegal move is not loss of the game, except when rapidplay rules apply, and even then it needs to be claimed immediately. (See A.4 in the FIDE laws of chess.) Under normal competition rules, the illegal move would be withdrawn and the game would be re-played from the position where it was made. (See 7.5.) However this can only be done if the illegal move comes to the attention of the arbiter during the game. At this point, after the game, the game result has to stand.
Please note that we have six tie breaks.
Championship: DS has 20; OE has 18.5 – Dave wins on tie-break.
Congratulations, Dave Southam and Vinorth Vigneswaramoorthy!


Historically, ceylon cinnamon was celebrated as a delicacy — an item of luxury + the finest of all cinnamons. Its flavor, described as sweeter + more complex than the popular cassia cinnamon, is infused with an essence of orange + floral notes, which makes it perfect for both sweet + savory dishes. Flavor is sweet + light with fragrant floral + citrus notes.
Use in teas + baking, as well as in curries, meat rubs + other savory dishes.


text:
Cloud Security: To Scale Safely, Think Small
CloudPassage / January 21, 2016
Why today's enterprises need an adaptable cloud infrastructure centered around flexibility, portability, and speed.
"Intelligence is the ability to adapt to change." —Stephen Hawking
Enterprises would be wise to follow Hawking's definition of intelligence. The modern data center, in all its incarnations, is becoming increasingly more dynamic and elastic. Chances are, your network was designed according to last century's perimeter-based security principals and is likely composed of a hodgepodge of legacy infrastructure. From a security perspective, this is untenable. While throwing everything out and starting from scratch is both financially unfeasible and operationally unproductive, enterprises cannot continue to use last-century's techniques to deal with today's threats.
Many enterprises are moving to adopt cloud infrastructure to both reduce their hardware footprint and the resulting costs and effort it takes to house and maintain the servers, and take advantage of on-demand compute and storage resources. Whether you are an enterprise evolving your data center to adopt private, public and/or hybrid cloud computing solutions, or an infrastructure-as-a-service provider offering compute and storage services to organizations, your security strategy must evolve, too. Securing data beyond that now-mythical perimeter is imperative. To accomplish this, security professionals have to let go of any residual antipathy toward automation and sever any attachments to the infrastructure-centric security mindset. In a word: adapt.
So where to begin? If you want to scale safely, you have to start by thinking small…very small.
In the DevOps world where agile development is all the rage, we're seeing the emergence of containers and microservices — systems and applications that are broken down into smaller, modular, self-contained components. As with computing in general, the microservices movement similarly breaks applications down into smaller, independent processes focused on specific tasks that communicate with each other.
The security use case
In this article, I'm going to focus on the security use case for network infrastructure. You still need firewalls and intrusion detection for traffic coming in and out of the network (north-south traffic). But due to the very real potential for an attack to take advantage of lateral movement between applications and compute resources (for example, an attacker compromising a fairly insecure resource and then using that access to pivot to a more critical application or internal resource), an adaptable security strategy must now also focus on what's going on inside the datacenter (east-west traffic) and in cloud environments at the workload level itself.
To reduce the attack surface, micro-segmentation can be used to partition the workloads and their interactions with each other into logical application groupings. Those groupings form smaller protectable units, each accompanied by its own lightweight layer of security. You still have the firewall monitoring the source of traffic with coarse-grained controls, but it's no longer the primary sentry; it's just one of a number of safeguards in a multilayer, multidirectional defense structure. And now, micro-segmentation at the workload level itself, and not just at the network, offers an additional layer of fine-grained controls.
This is important because some of the more nefarious attacks have been able to bypass the network level controls and easily move between workloads, compromising machine-to-machine communication. It's an important construct to understand, especially when moving to cloud computing, since the workloads lose some of the natural perimeter provided by traditional data centers.
Automated traffic discovery
Management is actually easier at this level with micro-segmentation. Partitioning is too complex to manage manually, but automated traffic discovery and firewall orchestration tools enable the micro-segmentation itself, and the management. The tools allow network security admins to collect, aggregate, and visualize all the intricate traffic behavior. The tools also define and orchestrate all security policies and parameters, which can then be applied and enforced automatically throughout the system. Automation provides both visibility and a means by which to manage its complexity, enabling the data to be better protected.
The migration from traditional servers to IaaS can be tricky for organizations that need strong access controls, continuous monitoring, logging, and sensitive data inventory for compliance purposes. Micro-segmentation takes the burden of protecting dynamic computing environments and configuring the underlying network infrastructure (such as firewalls and VLANs) away from the lower level stack in network security admin teams. It also allows server owners themselves to set a finer grained control for their organization's compliance and security needs. So enterprises can get on-demand and fully automated workloads at any scale, along with system integrity and security, but with the oversight and control they need.
We've moved from a world of manual control and hardware to one of automation, virtualization, and the cloud. The new model offers flexibility, portability, and speed that the old paradigm just couldn't offer. New technologies such as micro-segmentation add security by keeping things small and contained, while allowing the environment to expand to cloud scale. And most importantly, they provide the ability to adapt to meet the needs of the modern enterprise.


and showing Geraniums and Pelargoniums. We share information and cuttings of the plants we enjoy.
We meet on the second Tuesday of the month, 12 months of the year, at 7 pm.
We meet at 6:30 in months with Pot Luck meetings, generally February, July, and December.


If someone attempts a double-leg takedown on me, what should I do? I was thinking about sprawling and getting him into a guillotine, but I'm unsure of what I'd want to do next. Hold onto the guillotine and knee his face instead of choking him out?
Do you do any MMA or BJJ training at all?
If so, how much experience do you have with double legs?
If you've never experienced a double leg take down and would like to answer your own question, I seriously suggest finding somewhere to train.
Any suggestions anyone makes is useless unless you have the opportunity to train them.
You pretty much answered your own question. Do it correctly and they'll land on their face. Since self defense is about protecting yourself and getting out of dangerous situations anything else like chokes or knees is optional and only needed if you need to hurt an attacker enough so they can't follow you when you get up and run.
Also, sprawling is usually the right answer. Guillotine is fine, but there are many other options as well. You'll learn those when you go train.
I'd advise against a guillotine as people tend to give up their underhooks too early for it and end up letting the guy get the takedown anyway.
Instead of worrying about "this or that technique" you need to find a place to train. There is no single "cure all technique" for each situation. If you're realistically thinking about self defense there are some basics you need to understand. First you need to find a school. Next you need to make sure you practice against resisting opponents. The worst you do in your training is the best you can hope for in the real world. You can't practice a technique 10 or 20 times and think you "know" it. Do you have any martial arts background?
Instead of worrying about "this or that technique" you need to find a place to train. There is no single "cure all technique" for each situation. If you're realistically thinking about self defense there are some basics you need to understand. First you need to find a school. Next you need to make sure you practice against resisting opponents. The worst you do in your training is the best you can hope for in the real world. You can't practice a technique 10 or 20 times and think you "know" it. Quoted for truth.
These are the best responses so far. We can't help you shyun, until we know what your background and experience are. If you're a beginner, then the best advice is to find somewhere legitimate to train. If you're not, then we can discuss specific techniques.
So, I'm the only one who asked him why he wanted to know, but those answers you quoted are better?
So, I'm the only one who asked him why he wanted to know, but those answers you quoted are better?Um...Yes.
Oops, your question is valid too. Not quoting it was an oversight on my part.
You will always be relevant in my eyes Tom.
@jnp - does the guy your fighting with/defending from have MA background? do you have MA experience?
based on my experience, if you're up against a guy/thug/bully on the streets, more often than not, they won't have any MA background. also, more often than not, they would throw punches first. even experienced MA practitioner/artist/fighter, the first attack is almost always a punch.
the best counter I know is to... RUN!
if you really cannot avoid the situation though, and you know that the guy would eventually attempt a takedown, just dont give him the chance to do it. how you would stop him from takng you down will all be up to you.
fights in the ring/octagon is totally different from street fights. its rare that guys would take their opponent down like we see in the movies. hope this helps!
fights in the ring/octagon is totally different from street fights. its rare that guys would take their opponent down like we see in the movies. hope this helps!In my experience that's not true. Even if the fight starts with punches, which it often doesn't, the guy who loses the first exchange will mostly attempt to tackle or clinch with his opponent.
I've seen rugby tackles in more than once drunken brawl.


Posted on August 11, 2016 at 12:22 am.
Henry Bartle Compton Arthur – known as Harry to his family – was born in Kensington on 14th October 1879. He was the youngest of seven children born to John Raynor Arthur and the Hon. Aileen Spring Rice.
Harry attended Wixenford School, Winchester College and New College, Oxford. He took his degree early due to the outbreak of the Second Boer War and was recommended for a commission in the Royal Field Artillery by the Vice-Chancellor of New College. He joined 46 Battery at Rawalpindi as a 2nd lieutenant in 1900.
Harry spent most of his pre-war Army career in India. He had a brief stint at home in 1907-08, when he was attached to the Royal Horse Artillery and probably attended Staff College at Camberley, and then returned to the subcontinent where he was promoted to captain in 1911.
While he was away, his mother (by then a widow) moved to Well House, Banstead. The house used to stand at the eastern end of the High Street, where Well House flats are now, behind the War Memorial. Harry never lived at Well House but he probably did stay there on at least two occasions and he regularly wrote to his mother and sister there. Many of his letters have survived and they have been painstakingly transcribed by his great-niece, Susan Lucy. They give a fascinating insight into the life of an artillery officer on the Western Front.
When war broke out, 5th Brigade, Royal Field Artillery, were attached to the 3rd (Lahore) Division and they were sent to France in the autumn of 1914 with the Indian Expeditionary Force. Harry was the adjutant for 5th Brigade and he would have been heavily involved in planning their move to France. They arrived at Marseilles on 7th November 1914 and marched north to Artois.
Harry was soon promoted to major and given command of 64 Battery. Their six 18-pounder guns provided artillery support for the troops of the Lahore Division. The Battery was sited near the front line and they were shelled by the Germans several times. Harry spent much of his time in observation posts, often in abandoned houses, which were shelled regularly and had to be "changed from time to time on request of the Germans".
They fought in defence of Givenchy (Dec 1914), took part in the hurricane bombardment at Neuve Chapelle (March 1915) and were rushed north for the 2nd Battle of Ypres (April 1915). Harry nearly missed his battery going into action as they were dispatched to Ypres while he was returning from leave but he cadged a lift in a motor car in time to join them. Afterwards, Harry wrote "I'm afraid I can't say we were sorry when we came out of action… The peace after coming away is a great contrast…" and remarked that it had been "quite the warmest corner I've been in so far." Harry was wounded for the first time a few days later, a head wound that affected his eye, at Festubert (May 1915) .
The Lahore Division left for Mesopotamia at the end of 1915 but Harry's brigade remained in France, serving with the Canadians in the Ypres Salient. Harry returned home on leave in May 1916, spending time with his dying mother, and was later wounded during heavy fighting at Ypres soon after his return.
They 5th Brigade were attached to the 4th Australian Division in July 1916 and went into rest billets. They missed the first few weeks of the Battle of the Somme, and Harry chafed at being stuck in the wagon lines while the great offensive was underway.
Pozieres was captured by the Australians on 23rd July. Harry was marching south as a further small advance was made on 3rd August, prompting a German counterattack on the 7th. Harry's battery arrived at the head of Sausage Valley, a shallow valley south of La Boiselle that was the main communications route to Pozieres, on 9th August and they were in action immediately to repel a German attack. The next day, shells struck the Battery. One of Harry's subalterns was hit and mortally wounded. Harry was tending to him as another shell found 64 Battery. Harry was killed. He was 36.
Harry was awarded the British War Medal, the Victory Medal and the 1914 Star and was mentioned in Dispatches three times.
He is buried at Gordon Dump Cemetery at Ovillers and is commemorated on the Banstead War Memorial, the Garton Memorial in All Saints' churchyard, on the wooden panels in the Lady Chapel in All Saints' and in Winchester College's War Cloister.
Harry was commemorated at All Saints', Banstead, on 10th August 2016, the 100th anniversary of his death. A service of remembrance was held and a bell was tolled 100 times by a family who live on the site of Harry's old family home.
rs and to Winchester College Archives for supplying Harry's photograph.