text:
package com.arm.wlauto.uiauto.googleplaybooks;

import android.os.Bundle;

// Import the uiautomator libraries
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.core.UiWatcher;
import com.android.uiautomator.core.UiScrollable;

import com.arm.wlauto.uiauto.UxPerfUiAutomation;
import com.arm.wlauto.uiauto.ApplaunchInterface;
import com.arm.wlauto.uiauto.UiAutoUtils;

import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_ID;
import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_TEXT;
import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_DESC;

import java.util.concurrent.TimeUnit;
import java.util.LinkedHashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import android.util.Log;

public class UiAutomation extends UxPerfUiAutomation implements ApplaunchInterface {

    private int viewTimeoutSecs = 10;
    private long viewTimeout =  TimeUnit.SECONDS.toMillis(viewTimeoutSecs);

    public void runUiAutomation() throws Exception {
        // Override superclass value
        this.uiAutoTimeout = TimeUnit.SECONDS.toMillis(8);

        parameters = getParams();

        String searchBookTitle = parameters.getString("search_book_title");
        String libraryBookTitle = parameters.getString("library_book_title");
        String chapterPageNumber = parameters.getString("chapter_page_number");
        String searchWord = parameters.getString("search_word");
        String noteText = "This is a test note";

        setScreenOrientation(ScreenOrientation.NATURAL);
        runApplicationInitialization();

        searchForBook(searchBookTitle);
        addToLibrary();
        openMyLibrary();
        openBook(libraryBookTitle);

        UiWatcher pageSyncPopUpWatcher = createPopUpWatcher();
        registerWatcher("pageSyncPopUp", pageSyncPopUpWatcher);
        runWatchers();

        selectChapter(chapterPageNumber);
        gesturesTest();
        addNote(noteText);
        removeNote();
        searchForWord(searchWord);
        switchPageStyles();
        aboutBook();

        removeWatcher("pageSyncPopUp");
        pressBack();

        unsetScreenOrientation();
    }

    // Get application parameters and clear the initial run dialogues of the application launch.
    public void runApplicationInitialization() throws Exception {
        getPackageParameters();
        String account = parameters.getString("account");
        chooseAccount(account);
        clearFirstRunDialogues();
        dismissSendBooksAsGiftsDialog();
        dismissSync();
    }

    // Sets the UiObject that marks the end of the application launch.
    public UiObject getLaunchEndObject() {
        UiObject launchEndObject = new UiObject(new UiSelector()
                                         .className("android.widget.ImageButton"));
        return launchEndObject;
    }

    // Returns the launch command for the application.
    public String getLaunchCommand() {
        String launch_command;
        launch_command = UiAutoUtils.createLaunchCommand(parameters);
        return launch_command;
    }

    // Pass the workload parameters, used for applaunch
    public void setWorkloadParameters(Bundle workload_parameters) {
        parameters = workload_parameters;
    }

    // If the device has more than one account setup, a prompt appears
    // In this case, select the first account in the list, unless `account`
    // has been specified as a parameter, otherwise select `account`.
    private void chooseAccount(String account) throws Exception {
        UiObject accountPopup =
            new UiObject(new UiSelector().textContains("Choose an account")
                                         .className("android.widget.TextView"));
        if (accountPopup.exists()) {
            if ("None".equals(account)) {
                // If no account has been specified, pick the first entry in the list
                UiObject list =
                    new UiObject(new UiSelector().className("android.widget.ListView"));
                UiObject first = list.getChild(new UiSelector().index(0));
                if (!first.exists()) {
                    // Some devices are not zero indexed. If 0 doesnt exist, pick 1
                    first = list.getChild(new UiSelector().index(1));
                }
                first.click();
            } else {
                // Account specified, select that
                clickUiObject(BY_TEXT, account, "android.widget.CheckedTextView");
            }
            // Click OK to proceed
            UiObject ok =
                new UiObject(new UiSelector().textContains("OK")
                                             .className("android.widget.Button")
                                             .enabled(true));
            ok.clickAndWaitForNewWindow();
        }
    }

    // If there is no sample book in My library we are prompted to choose a
    // book the first time application is run. Try to skip the screen or
    // pick a random sample book.
    private void clearFirstRunDialogues() throws Exception {
        UiObject startButton =
            new UiObject(new UiSelector().resourceId(packageID + "start_button"));
        // First try and skip the sample book selection
        if (startButton.exists()) {
            startButton.click();
        }

        UiObject endButton =
            new UiObject(new UiSelector().resourceId(packageID + "end_button"));
        // Click next button if it exists
        if (endButton.exists()) {
            endButton.click();

            // Select a random sample book to add to My library
            sleep(1);
            tapDisplayCentre();
            sleep(1);

            // Click done button (uses same resource-id)
            endButton.click();
        }
    }

    private void dismissSendBooksAsGiftsDialog() throws Exception {
        UiObject gotIt =
            new UiObject(new UiSelector().textContains("GOT IT!"));
        if (gotIt.exists()) {
            gotIt.click();
        }
    }

    private void dismissSync() throws Exception {
        UiObject keepSyncOff =
            new UiObject(new UiSelector().textContains("Keep sync off")
                                         .className("android.widget.Button"));
        if (keepSyncOff.exists()) {
            keepSyncOff.click();
        }
    }

    // Searches for a "free" or "purchased" book title in Google play
    private void searchForBook(final String bookTitle) throws Exception {
        UiObject search =
            new UiObject(new UiSelector().resourceId(packageID + "menu_search"));
        if (!search.exists()) {
            search =
                new UiObject(new UiSelector().resourceId(packageID + "search_box_active_text_view"));
        }
        search.click();

        UiObject searchText =
            new UiObject(new UiSelector().textContains("Search")
                                         .className("android.widget.EditText"));
        searchText.setText(bookTitle);
        pressEnter();

        UiObject resultList =
            new UiObject(new UiSelector().resourceId("com.android.vending:id/search_results_list"));
        if (!resultList.waitForExists(viewTimeout)) {
            throw new UiObjectNotFoundException("Could not find \"search results list view\".");
        }

        // Create a selector so that we can search for siblings of the desired
        // book that contains a "free" or "purchased" book identifier
        UiObject label =
            new UiObject(new UiSelector().fromParent(new UiSelector()
                                         .description(String.format("Book: " + bookTitle))
                                         .className("android.widget.TextView"))
                                         .resourceId("com.android.vending:id/li_label")
                                         .descriptionMatches("^(Purchased|Free)$"));

        final int maxSearchTime = 30;
        int searchTime = maxSearchTime;

        while (!label.exists()) {
            if (searchTime > 0) {
                uiDeviceSwipeDown(100);
                sleep(1);
                searchTime--;
            } else {
                throw new UiObjectNotFoundException(
                        "Exceeded maximum search time (" + maxSearchTime  + " seconds) to find book \"" + bookTitle + "\"");
            }
        }

        // Click on either the first "free" or "purchased" book found that
        // matches the book title
        label.click();
    }

    private void addToLibrary() throws Exception {
        UiObject add =
            new UiObject(new UiSelector().textContains("ADD TO LIBRARY")
                                         .className("android.widget.Button"));
        if (add.exists()) {
            // add to My Library and opens book by default
            add.click();
            clickUiObject(BY_TEXT, "BUY", "android.widget.Button", true);
        } else {
            // opens book
            clickUiObject(BY_TEXT, "READ", "android.widget.Button");
        }

        waitForPage();

        UiObject navigationButton =
            new UiObject(new UiSelector().description("Navigate up"));

        // Return to main app window
        pressBack();

        // On some devices screen ordering is not preserved so check for
        // navigation button to determine current screen
        if (navigationButton.exists()) {
            pressBack();
            pressBack();
        }
    }

    private void openMyLibrary() throws Exception {
        String testTag = "open_library";
        ActionLogger logger = new ActionLogger(testTag, parameters);

        logger.start();
        clickUiObject(BY_DESC, "Show navigation drawer");
        // To correctly find the UiObject we need to specify the index also here
        UiObject myLibrary =
            new UiObject(new UiSelector().className("android.widget.TextView")
                                         .text("My library")
                                         .index(3));
        myLibrary.clickAndWaitForNewWindow(uiAutoTimeout);
        logger.stop();
    }

    private void openBook(final String bookTitle) throws Exception {
        String testTag = "open_book";
        ActionLogger logger = new ActionLogger(testTag, parameters);

        long maxWaitTimeSeconds = 120;
        long maxWaitTime = TimeUnit.SECONDS.toMillis(maxWaitTimeSeconds);

        UiSelector bookSelector =
            new UiSelector().text(bookTitle)
                            .className("android.widget.TextView");
        UiObject book = new UiObject(bookSelector);
        // Check that books are sorted by time added to library. This way we
        // can assume any newly downloaded books will be visible on the first
        // screen.
        clickUiObject(BY_ID, packageID + "menu_sort", "android.widget.TextView");
        clickUiObject(BY_TEXT, "Recent", "android.widget.TextView");
        // When the book is first added to library it may not appear in
        // cardsGrid until it has been fully downloaded. Wait for fully
        // downloaded books
        UiObject downloadComplete =
            new UiObject(new UiSelector().fromParent(bookSelector)
                                         .description("100% downloaded"));
        if (!downloadComplete.waitForExists(maxWaitTime)) {
                throw new UiObjectNotFoundException(
                        "Exceeded maximum wait time (" + maxWaitTimeSeconds  + " seconds) to download book \"" + bookTitle + "\"");
        }

        logger.start();
        book.click();
        waitForPage();
        logger.stop();
    }

    // Creates a watcher for when a pop up warning appears when pages are out
    // of sync across multiple devices.
    private UiWatcher createPopUpWatcher() throws Exception {
        UiWatcher pageSyncPopUpWatcher = new UiWatcher() {
            @Override
            public boolean checkForCondition() {
                UiObject popUpDialogue =
                    new UiObject(new UiSelector().textStartsWith("You're on page")
                                                 .resourceId("android:id/message"));
                // Don't sync and stay on the current page
                if (popUpDialogue.exists()) {
                    try {
                        UiObject stayOnPage =
                            new UiObject(new UiSelector().text("Yes")
                                                         .className("android.widget.Button"));
                        stayOnPage.click();
                    } catch (UiObjectNotFoundException e) {
                        e.printStackTrace();
                    }
                    return popUpDialogue.waitUntilGone(viewTimeout);
                }
                return false;
            }
        };
        return pageSyncPopUpWatcher;
    }

    private void selectChapter(final String chapterPageNumber) throws Exception {
        getDropdownMenu();

        UiObject contents = getUiObjectByResourceId(packageID + "menu_reader_toc");
        contents.clickAndWaitForNewWindow(uiAutoTimeout);
        UiObject toChapterView = getUiObjectByResourceId(packageID + "toc_list_view",
                                                         "android.widget.ExpandableListView");
        // Navigate to top of chapter view
        searchPage(toChapterView, "1", Direction.UP, 10);
        // Search for chapter page number
        UiObject page = searchPage(toChapterView, chapterPageNumber, Direction.DOWN, 10);
        // Go to the page
        page.clickAndWaitForNewWindow(viewTimeout);

        waitForPage();
    }

    private void gesturesTest() throws Exception {
        String testTag = "gesture";

        // Perform a range of swipe tests while browsing home photoplaybooks gallery
        LinkedHashMap<String, GestureTestParams> testParams = new LinkedHashMap<String, GestureTestParams>();
        testParams.put("swipe_left", new GestureTestParams(GestureType.UIDEVICE_SWIPE, Direction.LEFT, 20));
        testParams.put("swipe_right", new GestureTestParams(GestureType.UIDEVICE_SWIPE, Direction.RIGHT, 20));
        testParams.put("pinch_out", new GestureTestParams(GestureType.PINCH, PinchType.OUT, 100, 50));
        testParams.put("pinch_in", new GestureTestParams(GestureType.PINCH, PinchType.IN, 100, 50));

        Iterator<Entry<String, GestureTestParams>> it = testParams.entrySet().iterator();

        while (it.hasNext()) {
            Map.Entry<String, GestureTestParams> pair = it.next();
            GestureType type = pair.getValue().gestureType;
            Direction dir = pair.getValue().gestureDirection;
            PinchType pinch = pair.getValue().pinchType;
            int steps = pair.getValue().steps;
            int percent = pair.getValue().percent;

            String runName = String.format(testTag + "_" + pair.getKey());
            ActionLogger logger = new ActionLogger(runName, parameters);

            UiObject pageView = waitForPage();

            logger.start();

            switch (type) {
                case UIDEVICE_SWIPE:
                    uiDeviceSwipe(dir, steps);
                    break;
                case PINCH:
                    uiObjectVertPinch(pageView, pinch, steps, percent);
                    break;
                default:
                    break;
            }

            logger.stop();
        }

        waitForPage();
    }

    private void addNote(final String text) throws Exception {
        String testTag = "note_add";
        ActionLogger logger = new ActionLogger(testTag, parameters);

        hideDropDownMenu();

        UiObject clickable = new UiObject(new UiSelector().longClickable(true));
        if (!clickable.exists()){
            clickable = new UiObject(new UiSelector().resourceIdMatches(".*/main_page"));
        }

        logger.start();

        uiObjectPerformLongClick(clickable, 100);

        UiObject addNoteButton =
            new UiObject(new UiSelector().resourceId(packageID + "add_note_button"));
        addNoteButton.click();

        UiObject noteEditText = getUiObjectByResourceId(packageID + "note_edit_text",
                                                        "android.widget.EditText");
        noteEditText.setText(text);

        clickUiObject(BY_ID, packageID + "note_menu_button", "android.widget.ImageButton");
        clickUiObject(BY_TEXT, "Save", "android.widget.TextView");

        logger.stop();

        waitForPage();
    }

    private void removeNote() throws Exception {
        String testTag = "note_remove";
        ActionLogger logger = new ActionLogger(testTag, parameters);

        UiObject clickable = new UiObject(new UiSelector().longClickable(true));
        if (!clickable.exists()){
            clickable = new UiObject(new UiSelector().resourceIdMatches(".*/main_page"));
        }

        logger.start();

        uiObjectPerformLongClick(clickable, 100);

        UiObject removeButton =
            new UiObject(new UiSelector().resourceId(packageID + "remove_highlight_button"));
        removeButton.click();

        clickUiObject(BY_TEXT, "Remove", "android.widget.Button");

        logger.stop();

        waitForPage();
    }

    private void searchForWord(final String text) throws Exception {
        String testTag = "search_word";
        ActionLogger logger = new ActionLogger(testTag, parameters);

        // Allow extra time for search queries involing high freqency words
        final long searchTimeout =  TimeUnit.SECONDS.toMillis(20);

        getDropdownMenu();

        UiObject search =
            new UiObject(new UiSelector().resourceId(packageID + "menu_search"));
        search.click();

        UiObject searchText =
            new UiObject(new UiSelector().resourceId(packageID + "search_src_text"));

        logger.start();

        searchText.setText(text);
        pressEnter();

        UiObject resultList =
            new UiObject(new UiSelector().resourceId(packageID + "search_results_list"));
        if (!resultList.waitForExists(searchTimeout)) {
            throw new UiObjectNotFoundException("Could not find \"search results list view\".");
        }

        UiObject searchWeb =
            new UiObject(new UiSelector().text("Search web")
                                         .className("android.widget.TextView"));
        if (!searchWeb.waitForExists(searchTimeout)) {
            throw new UiObjectNotFoundException("Could not find \"Search web view\".");
        }

        logger.stop();

        pressBack();
    }

    private void switchPageStyles() throws Exception {
        String testTag = "style";

        getDropdownMenu();

        clickUiObject(BY_ID, packageID + "menu_reader_settings", "android.widget.TextView");

        // Check for lighting option button on newer versions
        UiObject lightingOptionsButton =
            new UiObject(new UiSelector().resourceId(packageID + "lighting_options_button"));
        if (lightingOptionsButton.exists()) {
            lightingOptionsButton.click();
        }

        String[] styles = {"Night", "Sepia", "Day"};
        for (String style : styles) {
            try {
                ActionLogger logger = new ActionLogger(testTag + "_" + style, parameters);
                UiObject pageStyle =
                    new UiObject(new UiSelector().description(style));

                logger.start();
                pageStyle.clickAndWaitForNewWindow(viewTimeout);
                logger.stop();

            } catch (UiObjectNotFoundException e) {
                // On some devices the lighting options menu disappears
                // between clicks. Searching for the menu again would affect
                // the logger timings so log a message and continue
                Log.e("GooglePlayBooks", "Could not find pageStyle \"" + style + "\"");
            }
        }

        sleep(2);
        tapDisplayCentre(); // exit reader settings dialog
        waitForPage();
    }

    private void aboutBook() throws Exception {
        String testTag = "open_about";
        ActionLogger logger = new ActionLogger(testTag, parameters);

        getDropdownMenu();

        clickUiObject(BY_DESC, "More options", "android.widget.ImageView");

        UiObject bookInfo = getUiObjectByText("About this book", "android.widget.TextView");

        logger.start();

        bookInfo.clickAndWaitForNewWindow(uiAutoTimeout);

        UiObject detailsPanel =
            new UiObject(new UiSelector().resourceId("com.android.vending:id/item_details_panel"));
        waitObject(detailsPanel, viewTimeoutSecs);

        logger.stop();

        pressBack();
    }

    // Helper for waiting on a page between actions
    private UiObject waitForPage() throws Exception {
        UiObject activityReader =
            new UiObject(new UiSelector().resourceId(packageID + "activity_reader")
                                         .childSelector(new UiSelector()
                                         .focusable(true)));
        // On some devices the object in the view hierarchy is found before it
        // becomes visible on the screen. Therefore add pause instead.
        sleep(3);

        if (!activityReader.waitForExists(viewTimeout)) {
            throw new UiObjectNotFoundException("Could not find \"activity reader view\".");
        }

        return activityReader;
    }

    // Helper for accessing the drop down menu
    private void getDropdownMenu() throws Exception {
        UiObject actionBar =
            new UiObject(new UiSelector().resourceId(packageID + "action_bar"));
        if (!actionBar.exists()) {
            tapDisplayCentre();
            sleep(1); // Allow previous views to settle
        }

        UiObject card =
            new UiObject(new UiSelector().resourceId(packageID + "cards")
                                         .className("android.view.ViewGroup"));
        if (card.exists()) {
            // On rare occasions tapping a certain word that appears in the centre
            // of the display will bring up a card to describe the word.
            // (Such as a place will bring a map of its location)
            // In this situation, tap centre to go back, and try again
            // at a different set of coordinates
            int x = (int)(getDisplayCentreWidth() * 0.8);
            int y = (int)(getDisplayCentreHeight() * 0.8);
            while (card.exists()) {
                tapDisplay(x, y);
                sleep(1);
            }

            tapDisplay(x, y);
            sleep(1); // Allow previous views to settle
        }

        if (!actionBar.exists()) {
            throw new UiObjectNotFoundException("Could not find \"action bar\".");
        }
    }

    private void hideDropDownMenu() throws Exception {
        UiObject actionBar =
            new UiObject(new UiSelector().resourceId(packageID + "action_bar"));
        if (actionBar.exists()) {
            tapDisplayCentre();
            sleep(1); // Allow previous views to settle
        }

        if (actionBar.exists()) {
            throw new UiObjectNotFoundException("Could not close \"action bar\".");
        }
    }

    private UiObject searchPage(final UiObject view, final String pagenum, final Direction updown,
                                final int attempts) throws Exception {
        if (attempts <= 0) {
            throw new UiObjectNotFoundException("Could not find \"page number\" after several attempts.");
        }

        UiObject page =
            new UiObject(new UiSelector().description(String.format("page " + pagenum))
                                         .className("android.widget.TextView"));
        if (!page.exists()) {
            // Scroll up by swiping down
            if (updown == Direction.UP) {
                view.swipeDown(200);
            // Default case is to scroll down (swipe up)
            } else {
                view.swipeUp(200);
            }
            page = searchPage(view, pagenum, updown, attempts - 1);
        }
        return page;
    }
}


Joe Torre knows a thing or two about on-field celebrations. For goodness' sake, the guy hasn't spent an October on the golf course since 1995.
The 69-year-old manager also knows from experience not to celebrate too much upon clinching a playoff berth, certainly not with a veteran-laden ballclub that has been here before and was expected to be here all along.
So as his Los Angeles Dodgers found themselves on the verge of the promised land this week - their magic number to secure a postseason berth remained two after Wednesday night's loss to the Washington Nationals - Torre wasn't expecting his players to waste too much energy dog-piling each other in the middle of the diamond or dousing their clubhouse in champagne.
Indeed, there are loftier expectations in the Dodgers' clubhouse and across Southern California this fall than a mere division title. Been there, done that. This will be their third trip to the postseason in four years.
No, Los Angeles wants both to reach the World Series for the first time in 21 years and then to win the whole thing, reassuming its stature as one of baseball's premier franchises after a stretch of near misses.
The Dodgers certainly have positioned themselves well to pull that off. They've owned the National League's best record for all but one day since May 3 and are in line to enter the playoffs with home-field advantage. They were many experts' preseason pick to win the pennant, and they've handled the pressure that accompanies that designation with aplomb.
The Dodgers, Cardinals and Phillies are separated by a scant 2 1/2 games, and each boasts a roster loaded with All-Star talent and reliable role players. The Dodgers, though, perhaps have the fewest question marks among the NL contenders.
They have one of the most feared hitters in the sport in Manny Ramirez. They at last have a supporting cast of mashers around him, including budding stars Andre Ethier (31 homers, 103 RBI) and Matt Kemp (25 homers, 97 RBI). They have a five-deep rotation. And they have a stacked bullpen that owns a major league-best 3.11 ERA.
What's not to like? Well, maybe there are some concerns about the lack of a true No. 1 starter. Then again, 25-year-old Chad Billingsley - the top candidate for such a job - certainly looked like an ace Wednesday in taking a no-hitter into the sixth against the Nationals.
It's hard to find fault with the rest of Los Angeles' rotation, though, especially since the additions of right-handers Jon Garland (3-0, 2.33 ERA in four starts) and Vicente Padilla (3-0, 2.96 ERA in five starts).
Those are only two of a boatload of late-summer acquisitions that have given the Dodgers a much-needed boost down the stretch. Former Nationals infielder Ronnie Belliard (hitting .333 with four homers and 15 RBI in 20 games) has been a godsend. Former Orioles reliever George Sherrill (0.77 ERA in 25 games) has been brilliant.
Throw in veterans Jim Thome, Brad Ausmus and Mark Loretta, and the Dodgers have the look and feel of a confident, accomplished ballclub built to go the distance.
They've expected themselves to win since day one. And they aren't going to be satisfied with just another division title and an early exit come October.


text:
about newsletters archived essays
Nov 15, 2020 4 min read Anime
Still Stuck in the System: Misplaced Optimism in Deca-Dence
Deca-Dence offers a compelling story of breaking free from corporate rule - but unfortunately stops short of committing to an alternative.
Not until the second episode of Deca-Dence do we learn that the titular fortress where humanity makes its last stand against the threat of Gadoll is in fact a role-playing game where cyborgs can assume flesh avatars and fight the artificially-created monsters for sport. In the game "Deca-Dence," humans are just NPCs – their lifelong suffering under the threat of Gadoll only offers texture to the contrived storylines that the cyborgs can enjoy as they improve their player rank.
The game, and the lives of every human and cyborg, are strictly monitored by the "System"-run megacorporation Solid Quake, which created Deca-Dence after acquiring the rights to manage humanity in the 25th century as pollution threatened their extinction. The corporation, driven by the directive, "There is no place for bugs in this world," strives for a society that would not repeat humanity's past mistakes. Thus, while humans have no knowledge of Solid Quake or the existence of cyborgs, and cyborgs themselves are programmed to follow the System's every command, should either exhibit irregular or unexpected behavior that threatens the System's so-called order, they will be designated "bugs" and promptly dispatched.
As a human who narrowly survived a deadly encounter with the Gadoll in her childhood, aspiring Gear warrior Natsume is considered a "bug" by the System. (Deca-Dence, Episode 9, "turbocharger")
Through its myriad of allusions to the dystopian worlds we've read and seen, Deca-Dence could be critiqued for not offering anything of its own. But by presenting human Natsume and cyborg Kaburagi's experiences in parallel, the series is able to blend disparate symbols of dystopia in a single narrative revealing the extent of Solid Quake's authoritarianism. Despite going as far as adopting vastly different animation styles to distinguish humans and cyborgs, Deca-Dence unambiguously shows how they both suffer under Solid Quake, leading us to the conclusion that the only path to their freedom is destroying it and the System that created it.
As a jaded, formerly top-ranking player himself, Kaburagi's almost immediate arrival at this conclusion and his willingness to act upon it are a welcome change of pace in a medium that often prefers younger, inexperienced protagonists written to overcome the odds through hard work and optimism (though Natsume takes on this role somewhat). Over the course of just twelve episodes, Kaburagi destroys Solid Quake's Gadoll-producing factory, frees himself and his fellow cyborgs who have been condemned as bugs from prison, and saves the human race from a mutated Gadoll when the System would have left them for dead.
After becoming inspired by Natsume's ambition, the cyborg Kaburagi decides to fight for her future. (Deca-Dence, Episode 5, "differential gear")
But even as Kaburagi performs these feats of rebellion against authoritarian capitalism, Deca-Dence doesn't give us the satisfaction of also seeing the end of the System and Solid Quake. When Kaburagi logs into the Deca-Dence controls to operate it in a last-ditch effort against the mutated Gadoll, he encounters the System itself. Their brief conversation betrays the series' own hesitation over uprooting Deca-Dence's poisoned roots, as the System reveals that Kaburagi's defiance is simply a phase in its evolution into a more robust System.
In other words, there simply is no destroying the System, although Kaburagi manages to influence it by seizing control and defeating the Gadoll. Three years later, in the series' epilogue, we see that Deca-Dence has expanded as humans and cyborgs begin to live together peacefully in a world where Gadoll are no longer threats. But as Kaburagi's old friend the cyborg Minato is revealed to be the new "Supreme Administrator" in charge of overseeing the System's updates, it appears that Solid Quake has not only been responsible for this expansion, but may also still hold the rights to humanity, given no evidence of the contrary. Thus, authoritarian leadership has merely changed hands as new methods of maintaining order are experimented.
A world where cyborgs and humans can coexist is a fine ending to the series, and given Kaburagi's reunion with Natsume after his heroic sacrifice, there's little more one can ask in terms of closure. But despite its exhilarating narrative of winning back our agency from corporate control, Deca-Dence seems to conclude that we can trust corporations with our lives if only the right people lead them, not far from what enterprises today strive to convince us through their commercialization of empathy. Such dangerous optimism – or pessimism with regards to any other solution – might be the symptom of our collectively limited imagination about a future free of inequality and dominion. Or perhaps I just hoped for better hundreds of years from now.
A Future in Wallachia: Castlevania's Unexpected Hope
Through nudging each of its characters towards a path of their own, Castlevania's final season provides us with a much needed drop of hope.
Big Tech & Workers' Rights in Little Witch Academia
In Episode 14 of Little Witch Academia, magitronics developer Croix's sabotage of the negotiations between Luna Nova's witches and worker faeries reveals how the tech industry acts in the interests of the elite.
Dreaming of Online Community in Bofuri
Through embracing gaming-newbie Kaede's original, atypical approach to the hit MMORPG NewWorld Online, Bofuri presents a more inclusive future for online play.
Ghosts Politics & Neoliberal Identity
Motoko resists neoliberal identity politics by accepting the Puppet Master's wager and rejecting Cartesian mind-body dualism.
Solidarity and Song in Carole & Tuesday
Carole & Tuesday shows us the radical potential of solidarity through music, but can it convince us to hope as well?
Chairo+ © 2022
Published with Ghost

redpajama_set_name: RedPajamaCommonCrawl


text:
News & Tools
Personal Events
Tax Events
Financial Events
100 Calculators
Fed & State Tax Links
Finance Dictionary
The Risks of Using Self-Directed IRAs
How Businesses Can Combat Inflation's Toll
How Will Increased Tapering Impact Markets in 2022?
Long-Term Investment Opportunities Presented by the Infrastructure Bill
How to Get Your 2022 Finances in Order
Congress at Work
General Business News
Tax and Financial News
What's New in Technology
CPA Williamsburg VA
Will The Federal Reserve Create a Taper Tantrum in 2021?
With the economy reopening and more Americans receiving COVID-19 vaccinations, the economy is expected to be operating on all cylinders. However, some economists and market analysts are afraid The Federal Reserve may create a "taper tantrum" if and when it starts to reduce its purchase of U.S. Treasury debt. The Fed's current track of purchasing $120 billion of U.S. Treasury debt every month has kept the 10-year yield moderated. However, if The Fed signals fewer monthly purchases from current levels, recent history has already seen higher 10-year yields and increased market volatility.
As the Federal Reserve Bank of St. Louis outlines, the Federal Open Market Committee (FOMC) holds meetings eight times a year to evaluate the country's economic conditions and determine the forward monetary policy. This includes what they will do (or not do) to the federal funds rate, which is the rate that financial institutions charge each other for overnight interbank lending.
Whatever the FOMC decides to do with the federal funds rate, it's important to know that any changes to the federal funds rate impacts short-term interest rates, such as the three-month Treasury bill. Depending on how it's modified (increased or decreased), the rate change impacts consumer and business loans and longer-term debt.
When the FOMC raises or lowers the federal funds rate, it sends a policy directive specifying the new target range to the trading desk of the New York Fed. Depending on the target rate of the new fed funds rate, more government securities will be bought to lower the rate, or government securities will be sold to raise the new target. This is accomplished through its open market operations (OMO).
OMO is made up of two parts. The Fed buying or selling U.S. Treasury bonds, for example, consists of the operations part of OMO. Since the Fed relies on the trading desk of the New York Fed to accomplish its goals, it uses the open market to purchase these securities through the traditional bid and offer trading method. It's one tool in its toolbox to accomplish the dual mandate policy of maximizing employment and maintaining price stability.
Depending on which way the Fed goes – either tightening or loosening its policy – it tries to steer the level of the banking system's reserves, creating a shift in interest rates. For example, when the Fed buys Treasury bonds, it adds capital to the purchasing bank's reserve balance to increase lending through lower interest rates. When the Fed sells its U.S. Treasury bonds, it moves the federal funds rate upward. This lowers banks' reserves, causing financial institutions to increase lending costs.
When it comes to the term "quantitative easing," the Federal Reserve Bank of St. Louis defines it as "large-scale operations of the purchase of large amounts of longer-term U.S. Treasury securities and mortgage-backed securities." One noteworthy consideration for OMO is that when the federal funds rate is near zero, which occurred during the 2008-2009 financial crisis, quantitative easing is one more tool in the Fed's toolbox to help the economy dig itself out of a downturn and provide liquidity.
Tapering in Action
According to the Federal Reserve Bank of St. Louis, when tapering was even mentioned, it had negative effects on the markets. After continued quantitative easing was instituted to rescue the economy from the 2008-2009 financial crisis through part of 2013, the Fed made comments regarding these efforts in its FOMC meeting and during its press conference on June 19, 2013. It indicated that it would begin "tapering" (gradually lessening) its monthly bond purchases during the end of 2013, assuming economic conditions were improving. However, the market reacted badly to these comments.
U.S. 10-year bond yields spiked to 2.35 percent within hours of the FOMC meeting and press conference on June 19, 2013. On June 21, 2013, the 10-year bond yields climbed farther to 2.55 percent. Similarly, the same meeting prompted a spike in "normalized foreign exchange per USD rates," according to the St. Louis Fed. In the two days from June 19-21, 2013, the U.S. dollar gained between 2 percent and 3 percent in value against the Euro, the British pound, the Canadian dollar, and the Japanese yen.
Looking at markets on June 19, 2013, when the Fed announced the tapering, the Dow Jones fell more than 200 points, the S&P dropped 1.4 percent and the Nasdaq finished 1.1 percent lower.
Retail and institutional investors can't predict the future, but they can look at the past and monitor upcoming Federal Reserve events to see what it might end up doing to the stock market.
These articles are intended to provide general resources for the tax and accounting needs of small businesses and individuals. Service2Client LLC is the author, but is not engaged in rendering specific legal, accounting, financial or professional advice. Service2Client LLC makes no representation that the recommendations of Service2Client LLC will achieve any result. The NSAD has not reviewed any of the Service2Client LLC content. Readers are encouraged to contact a professional regarding the topics in these articles. The images linked to these articles are protected by copyright and should not be copied for any reason.
June 1, 2021 Service2Client Blog, Stock Market News
How to Develop Company Travel Policies Post-COVID
How to Catch Up on Your Retirement
How to Defer, Avoid Paying Capital Gains Tax on Stock Sales
New Rules and Ways to Use HSAs/FSAs
8 Strategies To Reduce Market Exposure
Three Strategies Companies Can Implement to Recover Faster
Understanding Targeted Longer-Term Refinancing Operations
Brigham & Calhoun PC
Big Firm Performance, Small Firm Care
Here at Brigham, Calhoun, Whitson & Associates, PC, we know you want a CPA firm that takes enough time to provide the quality work and personal service you deserve.
Brigham, Calhoun, Whitson & Associates, PC
161-B John Jefferson Road
Email: contactus@brighamcalhoun.com
© 2019Brigham, Calhoun, Whitson & Associates, PC
Smart Websites & SEO by Service2Client.com


text:
Teachers shocked by closed-mindedness of new kindergarten curriculum ({{contentCtrl.commentsTotal}})
Under the new bill, free kindergarten would be guaranteed to all children in Estonia. Source: Urmas Luik/Eesti Meedia/Scanpix
The working draft of the new national kindergarten curriculum drawn up by the Ministry of Education and Research has led to an outcry among kindergarten teachers. Kindergarten directors and teachers alike find that the new curriculum degrades them as well as children, and in it they see not a forward-looking curriculum, but rather a step backward. The ministry stressed, however, that this is an initial working draft, and that it welcomes all proposals for changes.
A working group convened a year ago consisting of nearly two dozen representatives of kindergartens, universities, parents, and various professional unions and agencies was tasked with updating the national kindergarten curriculum, which had been in force for a decade already. Many changes were made, and the group thereafter disbanded this spring.
To the surprise of many, however, the working draft of a completely new curriculum was unveiled that had been drawn up by a new working group convened under the authority of the Ministry of Education and Research. Now kindergarten teachers are saying that it does not include their proposals.
According to Evelin Sarapuu, board member at the Estonian Association of Kindergarten Teachers, the new curriculum also uses a lot of outdated terminology.
"A lot is dictated regarding how to conduct learning activities and what topics to discuss in [kindergarten] groups," Sarapuu described. "Which songs and dances children have to learn in kindergarten. This hampers teachers' creativity and autonomy, as well as children's creativity, autonomy and freedom, and the creativity and freedom of kindergartens as organizations. We see this is largely a step backward, not a step forward or development."
Some examples from the new curriculum include:
"Children are informed of the goal of a game precisely, briefly and specifically; you do not simply announce, 'Let's play!'"
"A 6- or 7-year-old child knows how to express themselves via musical and rhythmic movement, and dance the dances 'Eesti polka,' 'Labajalavalss,' and 'Kaera-Jaan.'"
Evelyn Neudorf, head teacher at the Tallinn Tammetõru Kindergarten and board member at the Estonian Early Childhood Education Association, said that a teacher takes what actually appeals to children into account.
"My own children rather like Lotte stories, but they're not included in the [new] curriculum, although I find that they are also quite educational and constructive stories," Neudorf cited as an example.
Kindergarten teachers have also banded together on social media to fight against the new curriculum drawn up by the ministry. Discussions in one Facebook group refer to the curriculum as ideological, citing examples such as,
"Children are to be directed toward folk traditions. /.../ One's native language should be cherished, and children should be taught folk customs, national holidays should be celebrated, and national heroes should be commemorated with celebrations."
"Bi- and multilingual families are a global problem in terms of a child's speech development."
Official: Not given political guidelines
Ministry of Education and Research Education Management Department Director Ingar Dubolazov, who himself was part of the ministry's new working group, explained that the latter was convened because the first working group had concluded its work. It remains unclear, however, why an entirely new curriculum was drawn up.
"A group of experts was convened, and everyone was unquestionably experts of their respective fields," Dubolazov said. "I am certainly not qualified enough to denounce one sentence [from the curriculum] or another."
The ministry official nonetheless stressed that nothing is set in stone yet, and those positions that attract strong opposition or are refuted altogether may not end up remaining in the curriculum.
Asked whether the working group convened under the authority of the ministry was given political guidelines for drawing up the new curriculum, Dubolazov said no.
School Educational Sciences director: Who wrote this?
Tiia Õun, director of the School of Educational Sciences at TLÜ, agreed with the kindergarten teachers who found that the new curriculum marks a step backward.
Kindergarten teachers are anxious over this step backward, she said, and concerned about how such a document was even drawn up in the first place.
"On one hand, the curriculum is lacking teaching strategies on how to understand a child's learning," Õun said in the Aktuaalne kaamera studio. "On the other, [teachers] feel as though their autonomy is being limited. There is also the matter of how research-based this is — what has this curriculum been drawn up based on?"
She observed that it feels as though the working draft was drawn up by several people, each of whom wrote their part separately.
"It is very inconsistent in terminology, and it includes a lot of definitions from various levels that do not match up with one another," Õun highlighted. "It also lacks a child-based approach. This curriculum dictates a great deal, even by topic, and in perhaps questionable terms: 'Nature helps with medicinal herbs,' and so on."
She also noted that teachers are bothered by exact requirements for the learning environment as well, such as the requirement that a spacious room with a piano, recorder and kannel is necessary for making music. "Teachers feel as though they aren't trusted anymore," she stressed.
According to Õun, the curriculum mentions studies, but does not include actual references to them.
"Some of the studies referenced, claiming for example that role-playing games encourage wickedness, hate and violence — I'd say that nowadays we do not agree with these claims at all," she said. "International research studies that we ourselves have conducted and read rather claim the opposite."
Integration Foundation director: Multilingualism not a 'problem'
"The brain is overloaded, and such children begin to speak at a later age," the working draft of the new curriculum states regarding children in bi- and multilingual families. "Such a speech environment is only suitable for healthy children with a strong nervous system."
According to Integration Foundation Director Irene Käosaar, however, this statement is inaccurate.
"All research studies indicate that early multilingualism is precisely the path that Estonia and the entire world should follow," Käosaar said. "We are talking about a unified Estonian-language school so that children can study and play together starting in kindergarten. But these statements indicate that the Ministry of Education and Research is moving in a different direction."
Kristina Kallas, chairwoman of Estonia 200 and former director of the University of Tartu Narva College, was also surprised by the new curriculum, saying it promotes 19th century attitudes.
"This curriculum says that I and my children, who have grown up in a multilingual environment, should supposedly study only in the Estonian language, and that the presence of additional languages should be treated as a problem, not as an additional opportunity," Kallas said. "This is such 19th century attitude that I was shocked to read something like this in the 21st century."
Both Käosaar and Kallas called into question the competence of the authors of the new curriculum.
"The working group that compiled this document does not refer to any scientific research, and the document does not refer to other documents, articles or statements of specialists in this field," Käosaar emphasized. "The group itself also does not include any specialists in this field."
"It seems to me as though the people who drew up this curriculum are unaware of the realities of Estonian life or practices being introduced in other parts of the world where bilingualism is encouraged, not vice versa," Kallas said, adding that the content of the curriculum seems incompetent.
Käosaar and Kallas both noted that they hope this was a mistake, and that the content of the working draft of the new curriculum does not indicate a new direction in Estonia's education policy.
Editor: Aili Vahtla, Helen Wright
educationministry of education and researchkindergartenmultilingualismearly childhood education
New draft of kindergarten curriculum expected in May
Report: One fifth of teachers in Russian schools have insufficient Estonian
Feature: Lohusuu School defines itself not by language, but by small size
Reform Party bringing bill to remove Tallinn kindergarten fees
Reps: Final kindergarten curriculum will take a couple more years
Municipal scheme brings nearly 600 young people back to work or education
Tartu city gets public heart defibrillator location app
Children without residency permits have right to school places
Planned meager salary increase in 2020 not enough, teachers say
Education ministry drops plan for mandatory kindergarten
Jõhvi State Upper Secondary School to switch to Estonian only starting 2020
Nonprofit against broader teaching of Estonian in kindergartens
Ministry wants all kindergartens to be at least partially Estonian-speaking


text:
Alexander Ljunggren, född 1981, är en svensk friidrottare (kortdistans- och häcklöpning). Han har tävlat för IFK Helsingborg. Han vann SM-guld på 400 meter häck år 2004.

Personliga rekord

Utomhus
100 meter – 10,66 (Lerum 22 augusti 2004)
200 meter – 21,18 (Lerum 22 augusti 2004)
200 meter – 21,15 (medvind 2,2 m/s) (Malmö 2 augusti 2004)
300 meter – 34,40 (Helsingborg 23 juli 2004)
110 meter häck – 14,49 (Växjö 4 juli 2002)
400 meter häck – 50,71 (Göteborg 5 september 2004)

Inomhus
200 meter – 21,38 (Malmö 13 februari 2005)
60 meter häck – 8,18 (Göteborg 23 februari 2002)

Källor

Noter

Tryckta källor

Födda 1981
Levande personer
Svenska häcklöpare
Svenska stafettlöpare
Svenska mästare i häcklöpning
Svenska mästare i stafettlöpning
Män

redpajama_set_name: RedPajamaWikipedia


text:
English (US/CA)
Search Human Spaces…
Architect/Designer
Sustainability Enthusiast
View all authors Interface.com
Design Commitments
Human Habitats
Textures, Materials & Patterns
Glitz, Glam and Gold: Trends from the 2015 HD Expo
Sarah Pelham
Trend longevity has become unpredictable in our fast paced, high tech world. In fact the most marked change in trends over the years is the speed through which they cycle. For that we can thank advances in communication, production, transportation and the evolution of social media.
But even with these advancements, more often than not, our trends are still inspired by repeating history, the current overall mood of the world, and new consumer demands. Trends evoked from these factors tend to hang around a bit longer. For example, by allowing history to repeat, it gives us a basis to reflect, tweak and revisit past generations. If the mood of the world is in a recession, then it brings out insecurities which, in turn, trickle down into design in the form of safe choices, like a prevalence of neutral safe tones. Currently, the quick paced evolution of technology has consumers demanding "the latest & greatest" products with a keen awareness of their environmental impact.
So what trends did I find at the 2015 HD Expo?
All that glitters is gold
At the 2015 HD Expo, all the glitz of Vegas shone bright! The hospitality color of the year was gold in an array of shades, leaving Marsala, Pantone's 2015 Color of the Year, just a memory. While there were considerable pops of orange accents with warm grays, gold stole the show. Beaming gold metal finishes, fabrics, wall covering, furniture, lighting and accessories filled the exhibition hall. The mixture of warm gold tones and greens was a popular partner for an eclectic sense, while gold, black, grey and cream had a classic feel.
Overall, the mood of the color gold is one of success, achievement and triumph. It's associated with abundance, prosperity, luxury, sophistication and elegance, indicating times are good in the world!
Geometry abounds
Getting their fair share of the limelight were geometric shapes in a myriad of products. In conjunction with the classic mood found in the gold tones, classic shapes such as the Greek key, herringbone, octagon, hound's-tooth and zigzag emerged both in true form and in abstract interpretations. Geometrics were on the floor, on the walls, in the furniture, in the fabrics and in the lighting forms. From the Greco-Roman use of simple zigzags and triangles to cover surfaces to the mid-century modern use of bigger, bolder shapes with less intricacy, geometric patterns have dominated for centuries.
Today's geometrics are bolder in scale than ancient Greek and Roman applications and have a more classic, sophisticated feel than the mid-century modern forms, giving the shapes a clean renewal with strong lines and simple colors.
Enticing textures
Multi-level dimension was found throughout product offerings. Surfaces had depth, whether they were carved, layered, molded, twisted or tufted. You wanted to touch them and examine the texture. In most instances these products came from natural, flat materials that were manipulated into 3-dimensional surfaces, allowing designers to develop spaces that reflect our continuing desire to bring the outdoors inside.
Surfaces possessed both the warmth and variation that we are attracted to in nature. Whether they were clay abstract sting-rays or solid pieces of oak charred and layered to create sculptural character, the textures created the connection with nature and the world around us.
Looking a little deeper into nature and the awareness of our environment, manufacturers and designers continue to find ways to reduce their carbon footprint. Other hot topics included biophilic design and the use of alternative materials that change the way we design. For example, RH Contract featured tables manufactured from reclaimed Douglas Fir while Phillips Collection showed the Seatbelt Chair made of scrap material.
Innovations and products discussed included temperature sensitive glass, translucent concrete, electronic paper, magnetic ink, solar paint, wallpaper that charges your phone and transparent alumina that's three times stronger than steel. The consumer demands on the market are supporting nature and sustainability as a hallmark of design as opposed to what many thought was just a trend 15 years ago.
Hospitality: 4 Trends Shaping the Future of the Industry
The landscape of the hospitality industry is shifting. Designers and architects need to consider the remit of hospitality spaces beyond the usual, eat, sleep, drink, and repeat. Read on to find out what concepts are breaking ground in hospitality. 1. Lobbies as Workspaces In 2017, the workspace is no longer confined to the office. With…
What's Trending in Boutique Hotel Design from BDNY 2015
A boutique is any small, exclusive business offering customized service, especially one that sells fashionable items specializing in one aspect of a larger industry. BDNY is the time for boutique hotels to find the coolest, hippest design elements to enhance guest experiences. Each year I look forward to grabbing coffee and a bagel, putting on…
Interface, Inc. is a global commercial flooring company with an integrated collection of carpet tiles and resilient flooring, including luxury vinyl tile (LVT) and nora® rubber flooring. Our modular system helps customers create beautiful interior spaces which positively impact the people who use them and our planet.
Our mission, Climate Take Back™, invites other companies to join us as we commit to running our business in a way that is restorative to the planet and creates a climate fit for life.
© 2018 Interface, Inc. All rights reserved.
Same biophilic design, even more to love.
We recently revamped our blog to provide you with a single destination for the best design and sustainability content—everything from design tips to events and popular trends.
Explore Human Spaces
This website uses cookies. By continuing to browse this site you accept the
Interface cookie policy
https://www.interface.com/US/en-US/privacy-policy


text:
@interface VikeScreenPayload ()

@property (strong, nonatomic, readwrite) NSString *eventTypeString;

@end

@implementation VikeScreenPayload

@synthesize eventTypeString = _eventTypeString;

- (instancetype)initWithName:(NSString *)name
                  properties:(NSDictionary *)properties
                     context:(NSDictionary *)context
                integrations:(NSDictionary *)integrations
{
    if (self = [super initWithContext:context integrations:integrations]) {
        _name = [name copy];
        _properties = [properties copy];
        _eventTypeString = @"screen";
    }
    return self;
}

@end

redpajama_set_name: RedPajamaGithub


This is what a vegan weekend looks like.
Now, obviously everyone has a weird or crazy pizza that they just love. S' is cheese. I know what you're thinking: that's not weird or crazy. That's just the kind of guy that S is. Usually when we have pizza I have some kind of mix of veges – usually just whatever is in the fridge. But, this is my favorite pizza, it just requires a little bit more preparation that throwing a bunch of veges on a pizza base.
I didn't make these bases. We bought them from our crazy organic supermarket. They're rye, and let me tell you they were both expensive and delicious.
The base-sauce on the Nacho Pizza consists of a can of Red Kidney Beans, half mashed and with a bit of tomato, capsicum and chili stirred through. On top of that went the corn chips. On top of that went a fresh salsa of tomato, coriander, cucumber and red onion. On top of that I grated some super melting Edam Style Cheezly. Bake until it's looking deliciously pizza-ish and top with guacamole and more fresh salsa.
I have made this without the Cheezly, and I kind of think it might be better without it. I'm starting to go off the 'substitutes' for two main reasons – 1. I don't need them, and they're generally not super healthy and 2. I'm not going to be able to afford them in the U.K so I should get used to not having them now.
Anyway – we have just pulled dinner out of the oven, and a glass of wine has just landed on the table in front of me!
I used to cook every night. I used to cook amazing, wonderful, sometime-slightly-horrific meals for S and I to devour or throw in the bin. One of the things I love about being vegan is the baking, broiling, poaching, toasting, grilling, simmering, cooking. Our diet was wide and varied. Now, two things have changed.
The first is the disconcertingly ugly thing you see above. My thesis. And, that's one of the old drafts… I'm sure you get the picture. Only weeks away from submission and I have little on my plate (and mind) that does not revolve around Aischylos' Eumenides.
Because of these two things I have practically stopped experimenting in the kitchen and we have begun to eat like meat and 2 veg omnivores. Now, firstly I want to say that both my parents are wonderfully supportive of our non-meat-eating ways and have accommodated us in every way possible. Secondly, if I had the time to cook for all of us I would, but the simple fact is neither mum or I have the time to cook and so we inevitably fall back on the staples. For example, last night mum and I filled up the steamer with corn, potatoes, and carrots and went for a walk, came home put on some peas, some steaks and sausages (for them, obviously) and some vege sausages (for S and me). It wasn't because we didn't want to make dahl bhat, its because no one has the time to simmer down a beautiful yellow dahl, make vege curry and pickles and plate it all up in some beautiful fashion with naan delicately resting on the top.
But, its starting to take its toll on me. I feel bored by food for the first time in a very long time and as a consequence I am starting to loose my passion for cooking. I no longer unwind on Sunday afternoon by creating delicious baked goods for S to sample. And, this is my pledge to begin to do just that. Even if I have to force myself.
One of the wonderful things about veganism is the variety of wonderful, amazing, cruelty free foods that are just begging to be turned into delicious meals. On top of that, it's been a long time since I have eaten so many processed foods. I now eat vege burgers from the frozen section where I used to make my own. I eat packet pasta where I used to love nothing more than rolling up fresh gnocchi or fresh lasagne sheets. I haven't made dahl – something we used to have at least once a week – for ages, but the other day I considered buying a tetrapack of ready made dahl (how bloody lazy!). For the record, I didn't. But, I also didn't make dahl. Something must change or I will lose my mind.
I think the simple fact is that meat and two veg – even if that is meat-substitute and two veg – shouldn't be the staple diet of anyone, anywhere. It's just so damn boring.


Born of Earth and Fire, Pumice is a Natural, Sustainable Volcanic Glass with Amazingly Versatile Properties Widely Utilized by Industry.
PUMICE IS BORN in pyroclasic events, typically spewed as ash that falls and drifts into deposits or as part of a massive pyroclastic flow. Many factors affect the useful quality, color, and purity of a pumice deposit, but on a chemical analysis level, pumice is basically an aluminum silicate. With no crystalline structure, pumice is a naturally calcined amorphous glass made up of a maze of air-filled vesicles.
Pumice made its mark in history as being of value to industry when Roman engineers combined pumice aggregate and fine-grained pumice (a pozzolan) with their hydrated lime cement to make a lightweight, enduring concrete. Today, pumice is still being used as a superior pozzolan to super-charge concrete, but is also used widely in a variety of industrial process and product applications.
Pumice enjoys a well-deserved green credibility, as it is an abundant and sustainable resource, easily mined from surface deposits, and by virtue of being naturally calcined in the fiery heat of a volcano, the only refining needed is to crush and screen it to grade.


The Vietnam War was a tumultuous time in American history. The nation at large was divided on whether or not we should be involved in a conflict so far from home. Nevertheless, thousands of American soldiers fought and died in the war. And many more soldiers were taken prisoner by the Vietcong.
These men were captured, starved, and tormented by the enemy right up until the moment the war ended in 1975. After that, many were sent home, but countless others remained lost: presumed dead. One such soldier, Army Sgt. 1st Class John Hartley Robertson, had apparently found a new life in the Vietnamese jungle and had been living there in secret until he was discovered in 2008. But this Vietnam veteran's story was not a simple one….
It was a lovely Spring day in 2008. Christian Missionary, Tom Faunce was doing what he loved, helping locals to dig wells in rural Cambodia. They had taken a break during the day when Tom overheard a rumor going around the dig site. Apparently, there was an American soldier who had miraculously survived a helicopter crash in 1968 and was still living somewhere in Laos.
2. Who is the Minister?
Faunce himself was an ex-soldier who had survived two tours of duty overseas. Many of his friends had not been so lucky and the sheer amount of death and destruction he had seen in his tenure as a GI had a profound effect on him. He channeled his guilt and sadness into a bunch of crazy endeavors, eventually ending his marriage and moving off to Cambodia to help people in a very real way: through God….
© Spontany 2017 - All Rights Reserved.


Speech by the Counsel General for Wales, Jeremy Miles AM, to the Legal Wales Conference 12 October 2018: Law in Wales: Access & Accountability.
Lord Carloway - Legal Wales Conference 12 October 2018.
The Legal Wales Conference will be held on Friday 7th of October at Bangor University Law School.
The Legal Wales Conference was held on Friday 9 October at the SSE-SWALEC Stadium Cardiff.
This year's Legal Wales Conference (City Hall, Cardiff, Friday 11 October) will be an opportunity to meet Lord Judge's successor as Chief Justice of Wales and England.


text:
from __future__ import unicode_literals, print_function, division
from io import open
import glob, unicodedata, string, random
import time, math
# PyTorch
import torch
import torch.nn as nn
from torch.autograd import Variable
# Graficar
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

### Obtener Datos ###

# Regresar una lista con todos los archivos dentro de un directorio (incluye rutas - filepaths)
def findFiles(path): return glob.glob(path)

# Convertir Unicode (caracteres raros) en ASCII http://stackoverflow.com/a/518232/2809427
def unicodeToAscii(s):
    return ''.join(
        c for c in unicodedata.normalize('NFD', s)
        if unicodedata.category(c) != 'Mn'
        and c in all_letters
    )

# Leer archivo y regresarlo como lista de lineas ASCII
def readLines(filename):
    lines = open(filename, encoding='utf-8').read().strip().split('\n')
    return [unicodeToAscii(line) for line in lines]

### Pre-procesamiento ###

# Find letter index from all_letters, e.g. "a" = 0
def letterToIndex(letter):
    return all_letters.find(letter)

# Just for demonstration, turn a letter into a <1 x n_letters> Tensor
def letterToTensor(letter):
    tensor = torch.zeros(1, n_letters)
    tensor[0][letterToIndex(letter)] = 1
    return tensor

# Convierte una linea en un Tensor <line_length x 1 x n_letters>,
# Este tensor es un One-hot vector de caracteres
def lineToTensor(line):
    tensor = torch.zeros(len(line), 1, n_letters)
    for li, letter in enumerate(line):
        tensor[li][0][letterToIndex(letter)] = 1
    return tensor

### RNN ###

def categoryFromOutput(output):
    top_n, top_i = output.data.topk(1) # Obtener el valor mas alto del tensor
    category_i = top_i[0][0]
    return all_categories[category_i], category_i

def randomChoice(l):
    return l[random.randint(0, len(l) - 1)]

def randomTrainingExample():
    category = randomChoice(all_categories)
    line = randomChoice(category_lines[category])
    category_tensor = Variable(torch.LongTensor([all_categories.index(category)]))
    line_tensor = Variable(lineToTensor(line))
    return category, line, category_tensor, line_tensor

def train(category_tensor, line_tensor):
    hidden = rnn.initHidden()
    rnn.zero_grad()
    for i in range(line_tensor.size()[0]):
        output, hidden = rnn(line_tensor[i], hidden)
    loss = criterion(output, category_tensor)
    loss.backward()
    # Add parameters' gradients to their values, multiplied by learning rate
    for p in rnn.parameters():
        p.data.add_(-learning_rate, p.grad.data)
    return output, loss.data[0]

def timeSince(since):
    now = time.time()
    s = now - since
    m = math.floor(s / 60)
    s -= m * 60
    return '%dm %ds' % (m, s)

# RNN de Pytorch, definicion de capas (Input -> Hidden -> Output) y operaciones
class RNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(RNN, self).__init__()

        self.hidden_size = hidden_size

        self.i2h = nn.Linear(input_size + hidden_size, hidden_size)
        self.i2o = nn.Linear(input_size + hidden_size, output_size)
        self.softmax = nn.LogSoftmax()

    def forward(self, input, hidden):
        combined = torch.cat((input, hidden), 1) #Concatena [input+hidden]
        hidden = self.i2h(combined)
        output = self.i2o(combined)
        output = self.softmax(output)
        return output, hidden

    def initHidden(self):
        return Variable(torch.zeros(1, self.hidden_size))

###  Evaluacion ###
# Mete una linea a la red y regresa la prediccion (output) de la red
def evaluate(line_tensor):
    hidden = rnn.initHidden()

    for i in range(line_tensor.size()[0]):
        output, hidden = rnn(line_tensor[i], hidden)

    return output

### Script Principal ###
if __name__ == "__main__":
    all_letters = string.ascii_letters + " .,;'"
    n_letters = len(all_letters)
    source_data = '../ToyData/names/*.txt'
    # Probando las funciones de listar archivos y de unicode --> ASCII
    print(findFiles(source_data))
    print(unicodeToAscii('Ślusàrski'))
    # Diccionario category_lines: llave=lenguaje, vals: nombres que pertenecen a ese lenguaje
    category_lines = {}
    for filename in findFiles(source_data):
        category = filename.split('/')[-1].split('.')[0]
        lines = readLines(filename)
        category_lines[category] = lines

    all_categories = list(category_lines.keys())
    n_categories = len(all_categories)
    print(all_categories)
    print(letterToTensor('J')) #One-Hot vector de la letra J
    print(lineToTensor('Jones').size()) #Tamanio 5 * 1 * 57 (5 caracteres en 'Jones', 1 mini_batch y 57 la dimension de caracteres totales)
    # Crear RNN
    n_hidden = 128
    rnn = RNN(n_letters, n_hidden, n_categories)
    # Probando... (como toda RNN los valores son random al inicio la salida es random)
    input = Variable(lineToTensor('Albert'))
    hidden = Variable(torch.zeros(1, n_hidden))
    output, next_hidden = rnn(input[0], hidden)
    print(output)
    print(categoryFromOutput(output))
    for i in range(10):
        category, line, category_tensor, line_tensor = randomTrainingExample()
        print('category =', category, '/ line =', line)
    # ENTRENAMIENTO!
    criterion = nn.NLLLoss() # funcion Loss
    learning_rate = 0.005
    n_iters = 100000
    print_every = 5000
    plot_every = 1000
    # Keep track of losses for plotting
    current_loss = 0
    all_losses = []

    start = time.time()
    for iter in range(1, n_iters + 1):
        category, line, category_tensor, line_tensor = randomTrainingExample()
        output, loss = train(category_tensor, line_tensor)
        current_loss += loss
        # Print iter number, loss, name and guess
        if iter % print_every == 0:
            guess, guess_i = categoryFromOutput(output)
            correct = '✓' if guess == category else '✗ (%s)' % category
            print('%d %d%% (%s) %.4f %s / %s %s' % (iter, iter / n_iters * 100, timeSince(start), loss, line, guess, correct))
        # Add current loss avg to list of losses
        if iter % plot_every == 0:
            all_losses.append(current_loss / plot_every)
            current_loss = 0

    # Graficar Evolucion de la funcion Loss en el entrenamiento
    #plt.figure()
    #plt.plot(all_losses)
    #plt.show()

    # Evaluacion
    # Keep track of correct guesses in a confusion matrix
    confusion = torch.zeros(n_categories, n_categories)
    n_confusion = 10000

    # Go through a bunch of examples and record which are correctly guessed
    for i in range(n_confusion):
        category, line, category_tensor, line_tensor = randomTrainingExample()
        output = evaluate(line_tensor)
        guess, guess_i = categoryFromOutput(output)
        category_i = all_categories.index(category)
        confusion[category_i][guess_i] += 1

    # Normalize by dividing every row by its sum
    for i in range(n_categories):
        confusion[i] = confusion[i] / confusion[i].sum()

    # Set up plot
    fig = plt.figure()
    ax = fig.add_subplot(111)
    cax = ax.matshow(confusion.numpy())
    fig.colorbar(cax)

    # Set up axes
    ax.set_xticklabels([''] + all_categories, rotation=90)
    ax.set_yticklabels([''] + all_categories)

    # Force label at every tick
    ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
    ax.yaxis.set_major_locator(ticker.MultipleLocator(1))

    # sphinx_gallery_thumbnail_number = 2
    plt.show()


The office of general tourism "DELIA LTD" was founded in 1967 on the island of Mykonos located in Mykonos Town Port.
It started its activities with issuing coastal tickets and as a cruising agency. Moreover it organizes accommodation in Mykonos for tourist as well as the representation of Tourism Offices abroad, (Tour Operator).
The office has won the confidence of the travelling public due to the quality of provision offered.
Discover the many exciting myths and stories of Mykonos' past from the thousands of volumes housed in the Public Library.


With over 180,000 articles in various categories, such as fashion, living and multimedia, OTTO is one of the largest web stores worldwide. Therefore, it is important for OTTO to work with a feed management tool that enables adjustments to be quickly made in addition to offering as many platforms as possible for their products to be sent to. It only took a casual chat between the two companies before the collaboration between OTTO and Channable began.
'The tool is flexible and offers many more options for optimization than our old tool. In addition, Channable is a very pleasant party to work with.' – Linda Mels, Team Manager Performance Marketing at OTTO.
Before working with Channable, OTTO used another feed management tool, but it did not meet their requirements and wishes: 'Our biggest challenge is our extensive import feed. We weren't able to do anything ourselves, and had to send a request to their support team for any changes', says Linda Mels, Performance Marketing Team Manager at OTTO. 'It would take a long time to make changes, and their functionalities were also very limited'.
Therefore, OTTO was urgently looking for a new feed management tool. After initial contact via LinkedIn, Channable visited OTTO for a introductory conversation. 'All the colleagues involved were positive right away and this motivated us to start working with Channable', Linda says.
OTTO uses Channable without the use of an agency. Linda: 'The knowledge of feed management within OTTO is fairly high, so at this moment we only contact Channable's support team about more advanced issues'.


With these deluxe lifting straps you can help prevent cutting short another back workout. If you find that your grip is the first to go, these straps wil help support the weight before you start putting your back through its paces. An essential piece of gear if you want to take your training to the next level, guaranteeing yourself those extra vital reps!! Make your workouts more enjoyable and push your performance to the maximum whilst protecting your wrist against strain or sprains. Superb quality lifting straps, can make all the difference to your workouts and that is what we have to offer for superb value.With Bad Boy logo and professional finish, these hook grip lifting straps are a must have training aid if you are serious about your lifts. Our high grade cotton constructed straps with added neoprene padding for extra comfort will allow you to go for it 100% every time!


text:
Cliff Barnes and the Fear of Winning ist eine deutsche Independent-Rock-Band, die 1986 in Quakenbrück gegründet und 1992 erstmals aufgelöst wurde. 2001 fand eine erste und 2014 eine zweite Neugründung statt.

Geschichte
Initiatoren waren der Engländer Robert "Tijuana" Giddens, der als Manager von DAF in England schon von sich reden gemacht hatte, der Gitarrist Heinz "Henry" Rebellius und Manager Gisbert Wegener. Bevor es überhaupt einen einzigen Song gab, machte der außergewöhnliche Name der Band die Runde – und die Storys, die über sie in der Presse auftauchten. Demnach waren die beiden Musiker, die sich für dieses Projekt neue Namen gaben – Bobby Tijuana und 'Big Dog' Doug LaTrine –, US-Amerikaner aus Tucson, Arizona, die aufgrund ihrer antiamerikanischen Texte einen schweren Stand in den USA hatten und deshalb angeblich nur in Deutschland eine Plattenfirma für ihr Material begeistern konnten. Willie Nelson persönlich soll sie aus einer gemeinsamen Tournee herausgeworfen haben, so das ungewöhnlich aufwendige und vollmundige Promo-Material der Band. Storys, die die deutschen Medien gerne aufnahmen und weitergaben, und die der Band zu einem sehr guten Start verholfen haben. So war die allererste Tour, die im Herbst stattfand, bereits nahezu ausverkauft, ohne dass überhaupt ein Tonträger erschienen war. Als Band engagierten Tijuana und LaTrine Musiker der Osnabrücker Skandal-Comedy-Truppe Die angefahrenen Schulkinder und daraus erwuchs im Lauf der Zeit eine gleichberechtigte Band, in der die Osnabrücker ihren vom Rock beeinflussten Stil immer mehr in die von Country-Musik beeinflussten Songs von Tijuana und LaTrine einbringen konnten. Der erste Tonträger erschien Anfang 1987, mit der LP/CD "The Record that Took 300 Million Years to Make". Der Titel war eine Idee ihres ersten Managers Gisbert Wegener. Plattenfirma war Happy Valley Records von Mick Franke aus Osnabrück, der die Band auch produzierte. Es folgten in den nächsten Jahren ca. 300 Konzerte, zwei Tourneen durch Texas, 1989 eine Aufsehen erregende Tour durch die DDR nach offizieller Einladung durch die FDJ, sowie mehrere LP- und CD-Veröffentlichungen. Darunter auch die LP "Cliff Barnes and the Fear of Winning", die als erste Kooperation zwischen einem DDR- und BRD-Label in die Geschichte eingehen sollte. Das DDR-Label war KPM-Records, das die Musiker der Band City betrieben, das BRD-Label Happy Valley Records.

Einer der größten Erfolge der Band – vornehmlich in der deutschen Independent-Szene – war eine Hommage an Nancy und Ronald Reagan, die offiziell Nancy & Ronnie in the White House genannt wurde, intern aber mit F***ing in the White House durchging. Ebenso bekannt war die Coverversion des Led-Zeppelin-Titels Whole Lotta Love, die den berühmten Riff noch um einiges verlangsamte und mit einer Dobro-Intro würzte. Sehr beliebt auch das legendäre "I´m an Asshole"-T-Shirt sowie das eigene, bilinguale Fanzine, The Cactus News.

2001 gab es eine Wiedervereinigung für eine CD-Veröffentlichung mit zum Teil neuen Musikern und einige Konzerte, u. a. im Vorprogramm von Tony Joe White. Davor hatten Tijuana, Rebellius und Praed eine unter dem Namen Illegal Artists in Austin (Texas) eingespielte CD weltweit veröffentlicht.

Der Stil von Cliff Barnes and the Fear of Winning kann als "Independent mit Country-Touch" oder vage als Alternative Country bezeichnet werden. Der Name der Band ist an eine Figur aus der Fernsehserie Dallas angelehnt.

Achim Färber und Deko Pellmann, die beiden Schlagzeuger von Cliff Barnes and the Fear of Winning, standen, bzw. im Fall von Pellmann: stehen, im übrigen in Diensten von Phillip Boa & The Voodooclub, und auch Rebellius hat auf einer CD von Boa einige Bass-Tracks eingespielt.

Im Jahr 2009 taten sich Tijuana Giddens und Rebellius wieder zusammen, um die Band "Artland Country Club" aus der Taufe zu heben. Ihr Musikstil erscheint noch mehr Roots-orientiert, das Klangbild ist geprägt von akustischen Gitarren, aber auch Saxofon, Marimbafon und Perkussion. Der "Artland Country Club" stellte 2010 sein selbst entwickeltes Pedal Power System vor – ein Stromerzeugungs-System, das mithilfe von vier Fahrrädern die elektrische Energie erzeugt, die die Band für ihre Auftritte benötigt.

2014 – 25 Jahre nach dem Fall der Berliner Mauer, den Cliff Barnes and the Fear of Winning damals hautnah in der Ex-DDR miterlebten – gibt es eine weitere Reunion der Band, deren Kern aus Robert "Tijuana" Giddens, Marcus Praed und Heinz "Henry" Rebellius besteht.

Diskografie

 Nancy and Ronnie (7 Inch; 1986, Outatune Records)
 The Record That Took 300 Million Years To Make (1987, Happy Valley Records)
 Spike! (1988, Happy Valley Records)
 Guns, Love and a Cactus in You Heart (1989, Happy Valley Records)
 Cliff Barnes and the Fear of Winning (1989, KPM Records (DDR-Label))
 Live at the World (1991, Intercord Record Service)
 Godsatwork (2001, Ulftone)
 WORLD2HOT (2016,  Timezone)

Weblinks

 Offizielle Website

 Cliff Barnes and the Fear of Winning bei Facebook

Alternative-Country-Band
Deutsche Band
Kultur (Quakenbrück)


When it comes to your new business venture, it is important to seek advice on how best to structure your business from a taxation point of view. One of the structures we recommend to our clients is using a Discretionary Family Trust with a Corporate Trustee.
The main reasons for using discretionary family trusts is they allow for flexibility of distributions of income and the main benefit of using corporate trustees is they offer protection of your non-business assets.
Listed below are the main advantages and disadvantages with structuring your business this way.
1. Ultimate asset protection when a corporate trustee. Not only are the principal's personal assets protected from creditors of the trust, but the business is protected from the principal's personal creditors. Unlike a company or unit trust where the shares or units of the principal are assets of the principal which form part of the principal's bankrupt estate.
2. Less regulation than a company.
3. Flexible distributions allow income splitting.
4. Income can be distributed to a bucket company to be taxed at the corporate tax rate.
5. The trust deed can allow flexible distributions of capital.
6. The trust can employ the principals and provide salary packaging.
7. The trust can employ the principals and provide employer sponsored superannuation.
8. The trustee can vary distributions among family member according to their needs.
9. The trust deed can be tailored to suit the needs of the principals and other beneficiaries.
10. No need to lodge annual returns and other forms with ASIC.
11. The 50% CGT discount is available.
12. Easy to manufacture a controlling individual.
13. Easy to introduce new beneficiaries, provided they are within the range of objects.
14. Able to stream income to minimise tax.
15. Loans can be made to beneficiaries without tax implications unless an unpaid present entitlement to a company exists.
16. Section 65 and 109 of ITAA 1936 do not apply.
17. Generally tax free distributions can be made to beneficiaries without CGT event E4 happening.
18. Generally easy to wind up.
19. On a winding up, there is no equivalent to Section 47 of ITAA 1936 for companies.
20. Control can be easily transferred by changing trustee and/or the appointor.
21. The general value shifting rules should not apply.
1. They are complex and not many people understand precisely how they work.
4. Ultimate beneficiary statement rules apply.
5. Cannot distribute losses to beneficiaries. Losses are trapped in the trust.
6. Complex trust loss rules apply.
7. Cannot transfer losses to other trusts unless comply with complex and restrictive consolidation rules.
8. May need to elect to be a 'family trust' to satisfy trust loss rules or to be able to distribute franked dividends to beneficiaries without adverse tax implications.
9. No perpetual existence, normally must be wound up within 80 years.
10. More difficult to satisfy conditions for the small business CGT concessions, in particular the controlling individual test each year to obtain the 15 year exemption.
11. Amendments to the trust deed could constitute a resettlement for CGT and stamp duty purposes.
12. If required to make a family trust election, then flexibility of distribution is restricted.
13. The trustees can be personally liable for the debts of the trust in some circumstances.
14. ATO dislikes trusts, so they have forever being targeted.
15. Beneficiaries do not have a transferable interest.
16. If a new partner is to be admitted to the business, it is not easy to give them a fixed interest.
17. Additional stamp duty and land tax implications depending on the state.
18. Income accumulated in the trust is taxed at the top marginal rate.
19. It is difficult for a beneficiary of a discretionary trust (that is not a family trust) to satisfy the 45 day holding period rule where the trust receives a franked dividend.
Please contact us if you require any further information or to request a quote to establish this type of structure.


text:
Gretchen Whitmer remakes Michigan DEQ again, but leaves oversight panels intact
Michigan Gov. Gretchen Whitmer issued an executive order Wednesday to remake the Michigan Department of Environmental Quality into the Department of Environment, Great Lakes, and Energy.
February 20, 2019 Jim Malewitz Michigan Environment Watch
Gov. Gretchen Whitmer
Editor's Note: This story was updated February 21 to include new comments from Senate Majority Leader Mike Shirkey.
LANSING — Michigan Gov. Gretchen Whitmer is trying again to reshuffle the state's environmental department to move quicker to respond to water contamination and climate change.
The Democrat on Wednesday issued an amended executive order to transform the Department of Environmental Quality (DEQ) into the Department of Environment, Great Lakes, and Energy (EGLE).
It comes a week after Republican lawmakers, in a rare move, killed an earlier executive order from Whitmer that would have abolished a pair of business-friendly panels they created last year to oversee the DEQ.
Whitmer's latest order, effective April 22, is nearly identical to the original, but leaves intact the two oversight panels — the Environmental Rules Review Committee and the Environmental Permit Review Commission.
Gretchen Whitmer's plan to fix Michigan roads: Nearly triple gas tax
Whitmer kills Michigan marijuana licensing board in favor of new agency
What's next after Republicans kill Whitmer's environmental shakeup?
Michigan Republicans kill Gov. Gretchen Whitmer's environmental overhaul plan
Few love Michigan's DEQ. But are oversight panels worth Whitmer-GOP showdown?
Gretchen Whitmer reshapes Michigan environmental watchdog agency
Opinion: Michigan's DEQ needs reform. Oversight boards are a common sense solution.
A statement from Whitmer's office said the panels would remain pending a legal review from Attorney General Dana Nessel, a fellow Democrat. Whitmer requested the review earlier this month after Republicans first voiced outrage about her effort to eliminate them.
"Every Michigander deserves safe, clean drinking water, and I'm not going to let partisan politics slow down the important work that needs to get done right now to protect public health," Whitmer said in a statement.
"That's why I'm taking action to sign this new executive order so we can start cleaning up our drinking water, protect the Great Lakes, and take action to address climate change."
On Thursday, Republican Senate leaders said they would not hold hearings to scrutinze the new order, meaning it would stand.
"The Governor has presented a revised plan for the Department that takes into account many of the concerns expressed by our caucus and I appreciate her willingness to extend this act of bipartisanship," Senate Majority Leader Mike Shirkey said in a statement. "The newly issued executive order preserves the ability for citizens to defend their rights against the overreach of bureaucracy and provides our caucus opportunity for policy development."
Rep. James Lower, a Republican who sponsored the resolution to reject Whitmer's first order, applauded her latest effort on Wednesday.
"I'm glad Gov. Whitmer finally realized she needed to come to the table and work with us on this issue," he said in a statement.
"Now that all parties are at the table, including those affected by environmental regulations, I'm confident we can find a lot of common ground."
Under the state constitution, the Legislature can reject an executive order if a majority in both chambers vote to "disapprove" within 60 days. That's what Republicans did the first time.
Whitmer announced the new order via an emailed press release, in contrast to the public signing ceremony that marked her first order on Feb. 4.
Whitmer's planned shakeup comes nearly five years after residents of Flint were exposed to high levels of toxic lead in their drinking water, a crisis largely attributed to failures in state government, including at the DEQ.
The order doesn't add new funding for an environmental agency that has cut 25 percent of its employees since 2002.
Whitmer, who campaigned on a pledge to prioritize water, contends the reorganization will help the agency respond more quickly to environmental threats.
The order would create a "Clean Water Public Advocate," "Environmental Justice Public Advocate" within the new agency, and an "Office of Climate and Energy."
The public advocates would accept, investigate and analyze complaints related to drinking water and environmental justice problems, and work within state government to address them.
The order would also create an interagency team — composed of agency directors across state government — to fix policies that disproportionately pollute low-income and minority communities from power plants and factories.
But Republicans will hold on to the commissions they created to watchdog the environmental agency, which Democrats have dubbed "polluter panels" and Whitmer called needless bureaucracy that would slow Michigan's response to environmental threats.
Republicans counter that the commissions — backed by groups such as the Michigan Chamber of Commerce — bolster transparency and check the power of the environmental agency, which some contend is overzealous.
Lawmakers created the boards last year, months before a frantic lame duck session in which they passed legislation making it tougher to craft state regulations stricter than those of the federal government and weakening standards for cleaning up toxic sites across Michigan.
Among the citizen boards Whitmer will no longer nix: the Environmental Rules Review Committee, which has power to "oversee all rulemaking" of the DEQ and has held one organizational meeting.
Half of the 12 seats on the panel are slotted for business representatives. Former Gov. Rick Snyder appointed all members last year; another appointment for Whitmer doesn't open until late 2020.
A separate Environmental Permit Review Commission resolves permitting disputes at the agency. Aggrieved parties trying to, for instance, alter floodplains, drill for oil, mine minerals — or do most anything requiring regulator's permission — could seek relief.
Feb. 27, 2019: Seven things to know about Gov. Gretchen Whitmer's debt-free college plan
Jan. 22, 2019: Whitmer administration changing tone around Michigan marijuana regulation
The permit commission does not require members to come from specific professions, but Democrats object to its makeup, since it's almost entirely composed of engineers and consultants who contract with people and companies seeking environmental permits.
Environmental advocates offered support for Whitmer's revision on Wednesday while chiding Republicans for forcing her hand.
"We applaud Gov. Whitmer for demonstrating her continued commitment to the health of Michiganders by putting safe, affordable drinking water and public health at the forefront of her agenda," Lisa Wozniak, executive director at the Michigan League of Conservation Voters, said in a statement. "We urge the state Legislature to support this common-sense reorganization that puts public health first and not quibble over unnecessary layers of bureaucracy that will only delay, block or slow down real contamination clean up efforts."
In his statement, Lower blamed Whitmer for the dispute.
"The original executive order went too far," he said. We made our concerns clear and Gov. Whitmer initially was unwilling to work with us to correct her mistake."
One item Shirkey and other Republicans called for but did not get in the new order: A more detailed definition of "environmental justice."
Environmental justice is the idea that low-income and minority communities frequently face disproportionate burdens — health risks and lower quality of life — from pollution from power plants, factories and elsewhere than more affluent communities. Parts of Whitmer's plan echoed recommendations from the Michigan Environmental Justice Work Group, which Snyder assembled following the Flint water crisis.
Confusing some folks around the Capitol on Wednesday afternoon: The advocacy group Clean Water Action announced the latest executive action before Whitmer did.
Sen. Ed McBroom, a Republican who chairs the Senate Oversight Committee, said Wednesday he found that "problematic."
"Certainly begs some questions about separation between executive branch departments and any interest group," he told Bridge.
McBroom said he welcomed Whitmer's revisions, but he questioned whether they would do much to fix Michigan's most pressing environmental problems.
"We're still going to need to work very hard as a Legislature and in the governor's office to attack these problems together."
Good luck getting anything substantial done on these issues.
One Question<<<<< How did Grantham and the republican get away with selling the Michigan state Fairgrounds? Like Detroit's gulf club it is deed restricted and can not be sold or event transferred!
You don't know what you're talking about.
Helen Handbasket
MDEQ has been judge and jury on assessing fines way out of reach, and over language in "permits" that they issued! We need an "oversight" panel to keep them in check!
Gwarners
What was your experience? Anything more than a slap on the wrist is too much.
Figure why recycling programs are going out, and landfills are getting rich. Start there.
Hmmm...EPA allowed the MDEQ to be administrator for EPA in the state of Michigan. What the establishment of an oversight panel is attempting to do is insert oligarchy rule over an entity created by the people of the state and empowered by EPA. Thus it becomes, in practice, an attempt to bypass Article VI of the Constitution (otherwise known as the supremacy clause) and seize power by the oligarchy which is, in fact, the power of the federal government. The constitutionality of these panels should be challenged in the federal courts.
Al Churchill
Faith---you are certainly right. Perhaps Attorney General Nessel will litigate the issue.
Cicero, the Roman lawyer and statesman, stressed that natural justice means that one must never do harm and must always serve the "common good".
The "common good" is not served when oversight panels are composed of people who are motivated, firstly, by "self interest and financial gain. One of the primary responsibilities of government, at all levels, is to make sure that the public interest, the "common good" prevails over self interest of factions (Teddy Roosevelt, the progressives and their breaking up of the Gilded Age trusts) .
At the federal level, the Republicans have filled roughly 50% of the regulatory cabinet head positions with people from industries that they are supposed to regulate. A look at environmental regulations, rolled back, alone demonstrates the futility of serving the "common good" through the self interest of appointing those being regulated to agencies being regulated. It needs to be emphasized that the Republicans are now doing in Michigan, what they have tried to do at the federal level since the administration of Grover Cleveland. They have captured too many of the regulatory agencies and the public pays the price.
Do not give the Democrats a pass. Their weak-kneed, sissy response to the Republicans turning regulatory agency regulation into an industry, rather than a public responsibility, shows just how far they have strayed from being the party of middle class America.
Summing up, the Governor, lacking backbone, acted in a manner more appropriate to an oligarchy than a democratic republic with individual rights and adherence to the "common good".


text:
package com.ama.benchmark;

import org.springframework.stereotype.Component;

/**
 * Created by emrah.pekesen on 10.05.2016.
 */
@Component
public interface IMapper {
    void checkMappingAndReturnAvgInMiliseconds(long times);
}


Having a daily job and running your business at the same time is very tough. Moreover, it becomes tougher when you have a child. Time is limited; you only have 24 hours a day so that you really need to make a good use of time you have. Here are the 10 must-have business tools for me to manage my life, family, business and as well as my daily job.
1. Gmail – around 3 years ago I made the transition from Yahoo Mail to Gmail (yes I'm kind of late adopter). Since then I've never regret moving to Gmail.
Gmail is still the best email application I've ever used. Not only because it is a cloud based, but also you can access all your mails across multiple devices. I used Gmail to manage several emails that I owed. Another good thing of Gmail is you can use Gmail Meter to track your email traffic and which kind of emails will give you interesting data.
2. Trello – This is one of the two most important tools I use. Basically I use this tool to manage projects. I've been using it for 2 years. I use to manage my households, business, and as well as authority site.
3. Evernote – This is the third most important cloud based app that I use everyday. I use this tool to do a lot of things, such as checking my task manager, doing research, taking notes, writing blog posts while I'm on the road, keeping track of receipts, scanning business card, and many more.
4. Google Drive – I use Google Drive for my cloud storage that can be accessed via multiple devices. I use it to back-up the data of work, business, personal stuffs. I also use Google Drive to share photos with my wife. Google Drive also integrates well with Trello and some of other cloud apps I use.
5. Pipedrive – I use Pipedrive as my main CRM. Basically I use this tool to track the sales of my business. Around 6 months ago, I started to track all my sales; for example: where the sales came from, at which stage the sales is now, the deal is done well or not, and many more. My sales number actually increased after I started to track sales.
6. Google Analytics – I use Google Analytics to track the visitor's number of websites. I use it to analysis my websites' traffic everyday. Although I'm still not very good about analytics, I think that it's never too late to learn and it may have a good impact on your business in the future.
7. Wave – Initially I used to use a conventional Ms. Excel file to make invoice for my customers. However, since 2 years ago, I have migrated to use Wave. It is cloud based, and can be currently accessed via browser and iOS. I also use Wave for my business bookkeeping, and this is free!
8. Mailchimp – This is rather important I started quite on this. I use Mailchimp as my email marketing application and also auto-responding application. By using an email marketing application, it can help you to track your newsletters and EDMs, also to build relationship with your subscribers.
9. Joinme – I use this tool to hold an online meeting. It is way easier to use rather than Gotomeeting. Joinme has a local line for my clients to give a call and discuss about their projects. You can check out my post here to see how I used Joinme.
10. Feedly – I used this tool to catch up with industry news. It's also functioned as my main RSS reader if I wish to follow a blog. I also use this to manage my blog comment campaigns.