text:
Q: Travis checkstyle warning I started using CheckStyle in combination with Gradle and Travis CI. Now I want that the Build will be marked as "warning" if there are style errors. Can you help me making these settings?
.travis.yml:
language: java
sudo: false
jdk:
    - oraclejdk8
    - oraclejdk7

build.gradle:
apply plugin: 'java'
apply plugin: 'checkstyle'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.+'
    checkstyle group: 'com.puppycrawl.tools', name: 'checkstyle', version: '6.1.1'
    compile group: 'com.github.lalyos', name: 'jfiglet', version: '0.0.5'
}
jar {
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    manifest {
        attributes 'Main-Class': 'io.github.laufi.heisserdraht.Main'
    }
}

My Checkstyle configuration is the regular Google configuration:

<property name="severity" value="warning"/>

<!-- Checks for whitespace                               -->
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="FileTabCharacter">
        <property name="eachLine" value="true"/>
    </module>

<module name="TreeWalker">
    <module name="OuterTypeFilename"/>
    <module name="IllegalTokenText">
        <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
        <property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
        <property name="message" value="Avoid using corresponding octal or Unicode escape."/>
    </module>
    <module name="AvoidEscapedUnicodeCharacters">
        <property name="allowEscapesForControlCharacters" value="true"/>
        <property name="allowByTailComment" value="true"/>
        <property name="allowNonPrintableEscapes" value="true"/>
    </module>
    <module name="LineLength">
        <property name="max" value="100"/>
        <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
    </module>
    <module name="AvoidStarImport"/>
    <module name="OneTopLevelClass"/>
    <module name="NoLineWrap"/>
    <module name="EmptyBlock">
        <property name="option" value="TEXT"/>
        <property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
    </module>
    <module name="NeedBraces"/>
    <module name="LeftCurly">
        <property name="maxLineLength" value="100"/>
    </module>
    <module name="RightCurly"/>
    <module name="RightCurly">
        <property name="option" value="alone"/>
        <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
    </module>
    <module name="WhitespaceAround">
        <property name="allowEmptyConstructors" value="true"/>
        <property name="allowEmptyMethods" value="true"/>
        <property name="allowEmptyTypes" value="true"/>
        <property name="allowEmptyLoops" value="true"/>
        <message key="ws.notFollowed"
         value="WhitespaceAround: ''{0}'' is not followed by whitespace."/>
         <message key="ws.notPreceded"
         value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
    </module>
    <module name="OneStatementPerLine"/>
    <module name="MultipleVariableDeclarations"/>
    <module name="ArrayTypeStyle"/>
    <module name="MissingSwitchDefault"/>
    <module name="FallThrough"/>
    <module name="UpperEll"/>
    <module name="ModifierOrder"/>
    <module name="EmptyLineSeparator">
        <property name="allowNoEmptyLineBetweenFields" value="true"/>
    </module>
    <module name="SeparatorWrap">
        <property name="tokens" value="DOT"/>
        <property name="option" value="nl"/>
    </module>
    <module name="SeparatorWrap">
        <property name="tokens" value="COMMA"/>
        <property name="option" value="EOL"/>
    </module>
    <module name="PackageName">
        <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
        <message key="name.invalidPattern"
         value="Package name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="TypeName">
        <message key="name.invalidPattern"
         value="Type name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="MemberName">
        <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
        <message key="name.invalidPattern"
         value="Member name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="ParameterName">
        <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
        <message key="name.invalidPattern"
         value="Parameter name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="LocalVariableName">
        <property name="tokens" value="VARIABLE_DEF"/>
        <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
        <property name="allowOneCharVarInForLoop" value="true"/>
        <message key="name.invalidPattern"
         value="Local variable name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="ClassTypeParameterName">
        <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
        <message key="name.invalidPattern"
         value="Class type name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="MethodTypeParameterName">
        <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
        <message key="name.invalidPattern"
         value="Method type name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="NoFinalizer"/>
    <module name="GenericWhitespace">
        <message key="ws.followed"
         value="GenericWhitespace ''{0}'' is followed by whitespace."/>
         <message key="ws.preceded"
         value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
         <message key="ws.illegalFollow"
         value="GenericWhitespace ''{0}'' should followed by whitespace."/>
         <message key="ws.notPreceded"
         value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
    </module>
    <module name="Indentation">
        <property name="basicOffset" value="2"/>
        <property name="braceAdjustment" value="0"/>
        <property name="caseIndent" value="2"/>
        <property name="throwsIndent" value="4"/>
        <property name="lineWrappingIndentation" value="4"/>
        <property name="arrayInitIndent" value="2"/>
    </module>
    <module name="AbbreviationAsWordInName">
        <property name="ignoreFinal" value="false"/>
        <property name="allowedAbbreviationLength" value="1"/>
    </module>
    <module name="OverloadMethodsDeclarationOrder"/>
    <module name="VariableDeclarationUsageDistance"/>
    <module name="CustomImportOrder">
        <property name="thirdPartyPackageRegExp" value=".*"/>
        <property name="specialImportsRegExp" value="com.google"/>
        <property name="sortImportsInGroupAlphabetically" value="true"/>
        <property name="customImportOrderRules" value="STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE"/>
    </module>
    <module name="MethodParamPad"/>
    <module name="OperatorWrap">
        <property name="option" value="NL"/>
        <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
    </module>
    <module name="AnnotationLocation">
        <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
    </module>
    <module name="AnnotationLocation">
        <property name="tokens" value="VARIABLE_DEF"/>
        <property name="allowSamelineMultipleAnnotations" value="true"/>
    </module>
    <module name="NonEmptyAtclauseDescription"/>
    <module name="JavadocTagContinuationIndentation"/>
    <module name="SummaryJavadocCheck">
        <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
    </module>
    <module name="JavadocParagraph"/>
    <module name="AtclauseOrder">
        <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
        <property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
    </module>
    <module name="JavadocMethod">
        <property name="scope" value="public"/>
        <property name="allowMissingParamTags" value="true"/>
        <property name="allowMissingThrowsTags" value="true"/>
        <property name="allowMissingReturnTag" value="true"/>
        <property name="minLineCount" value="2"/>
        <property name="allowedAnnotations" value="Override, Test"/>
        <property name="allowThrowsTagsForSubclasses" value="true"/>
    </module>
    <module name="MethodName">
        <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
        <message key="name.invalidPattern"
         value="Method name ''{0}'' must match pattern ''{1}''."/>
    </module>
    <module name="SingleLineJavadoc"/>
</module>

A: You may have a look at Violations Gradle Plugin, but that can only fail the build and not warn. Your .travis.yml will need something like:
...
script:
  - ./build.sh
  - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then bash ./gradlew check -PdiffFrom=$TRAVIS_PULL_REQUEST_BRANCH -PdiffTo=$TRAVIS_BRANCH ; fi'
...

And in the build.gradle set:
...
 diffFrom = project.properties.diffFrom // Can be empty (ignored), Git-commit or any Git-reference
 diffTo = project.properties.diffTo // Same as above
 diffMaxViolations = 99 // Will fail the build if number of violations, in the diff within from/to, is higher
...

There are more details in the readme.
Another idea is to use Violation Comments to GitHub to report the violations as comments in the pull request.


text:
A Car-Sized Asteroid Had a Near-Miss with Earth
Asteroids ploughing into Earth is something we hope to avoid. Imagine if such an impact happened in one of our major cities, the effects would be catastrophic. That's why there are such inventions as NASA's ion engine, for instance.
So when an asteroid roughly the size of a car rushed close by to our planet on Sunday and nobody noticed until after the fact, the news is rather worrying.
It came a mere 1,830 miles (2,950 km) by Earth, as per Business Insider.
SEE ALSO: WHAT IS THE PROBABILITY OF A HUGE CIVILIZATION-ENDING ASTEROID IMPACT?
As far as has been recorded, the asteroid's flight was the closest one to fly by Earth ever. It was caught by a NASA-funded program, which has named the asteroid 2020 QG.
Even if the asteroid had had an impact with Earth, given its size it wouldn't have made any huge damage – what's worrying is that no one saw it coming until it had already passed by.
"The asteroid approached undetected from the direction of the sun," Paul Chodas, the director of NASA's Center for Near Earth Object Studies, told Business Insider. "We didn't see it coming."
It was the Palomar Observatory that first noticed the asteroid's path.
As Chodas mentioned "Yesterday's close approach is closest on record, if you discount a few known asteroids that have actually impacted our planet."
2020 QG flew over the Southern Hemisphere, and Tony Dunn on Twitter created a simulation to show its speed – 7.7 miles per second (12.4 km per second) – and it looks impressively close to Earth.
Once the telescope readings came through they showed that the asteroid was about the size of a car, somewhere between six feet (two meters) and 18 feet (5.5 meters) wide.
If this asteroid had made impact with Earth, it would have most likely blown up in the atmosphere and not had a bigger effect on people than hearing some distant traffic sounds.
The issue with this asteroid was that it came from the sun's direction, and as Chodas told Business Insider, "There's not much we can do about detecting inbound asteroids coming from the sunward direction, as asteroids are detected using optical telescopes only (like ZTF), and we can only search for them in the night sky."
"The idea is that we discover them on one of their prior passages by our planet, and then make predictions years and decades in advance to see whether they have any possibility of impacting."
Nach The Kissing Booth dreht Netflix den nächsten romantischen Film
Global ADAS Front Camera Market (2020-2026) | Latest COVID19 Impact Analysis | Know About Brand Players: Magna …
Điên Thì Có Sao tung ảnh gia đình Kim Soo Hyun nhưng fan lại chăm chăm "thay váy cưới" giúp Seo Ye Ji
Japan teen arrested after asking undercover police officer to join sex industry
ヒトラーに盗られたうさぎ
Iran installs new centrifuges as nuclear deal impasse continues

redpajama_set_name: RedPajamaCommonCrawl


Album Review of Men's Needs, Women's Needs, Whatever by The Cribs.
With each album, the Cribs have gotten a little sharper and more focused, and nowhere is this clearer than on the brilliantly named Men's Needs, Women's Needs, Whatever, the band's major-label debut. The Cribs enlisted Franz Ferdinand's Alex Kapranos as producer, and it's a good match: while he doesn't impose too much of Franz's clockwork precision on the band, Kapranos reins in the Cribs' more shambling tendencies just enough to make Men's Needs, Women's Needs, Whatever their most listenable, and diverse, work yet. The album kicks off with a slew of bouncy, angular songs about awkward relationships and killer crushes that sound like state-of-the-art British indie circa the late 2000s -- in particular, "Our Bovine Public"'s ridiculously catchy melody and punchy drums feel like the results of an experiment to fuse together Maxïmo Park, the Futureheads, and Good Shoes in some secret lab.


The regular opening times of Superdrug Queensway in Crawley are Monday to Friday 8:30AM-6PM, on Saturday 8:30AM-6PM, on Sunday 10:30AM-4:30PM. View the actual opening times of Superdrug Queensway in Crawley in our branch locator.
For more information about opening times on Sunday or late night shopping make sure to view the information in the designated blocks. If this Superdrug isn't nearby your location you can use the 'Map & Directions' tab to find the fastest route to Queensway in Crawley. This location's coordinates are specifically 51.1153 latitude, -0.185565 longitude. To contact this Chemist by phone you can dial 01293527113 during business hours.


I can get a bit nitpicky about words sometimes. That's part of what editors do. But I've always used the word awesome a bit too liberally.
Stories have always brought me great joy. For some people, going to a church inspires and serves as a place of worship. For me, that feeling comes from being in a library or a bookstore.
You see, libraries and bookstores are full of good — even great — ideas. They are full of impressive thoughts and courageous plans. They offer plenty of options for funny asides and inspiring tales, for sad stories and compassion-inducing insights. Yes, there are some not-so-great ideas (and *gasp* some not-so-great books) around. But for the most part, there are just so many amazing ideas contained inside those walls, ideas that have been brought to fruition by the brave souls who were willing to work with those ideas.
Good ideas take time. They take work. They require love and attention. You won't always get them right the first time. Sometimes they can be tinkered with, and other times, you might have to start all over again. What's almost always true is that good ideas need time to grow.
When I'm searching for inspiration, I tend to turn to books. So, true to form, I'm going to suggest some books for you (or the children in your life) to read. Enjoy!
What do you do when you find a little nugget of an idea? You carry it with you, of course. Even if someone might make fun of it, even if it might not work out quite how you thought it would, it's still worth nurturing the idea. Because you'll be amazed by what it can eventually turn into.
Instead of cursing and getting angry when things go wrong (because really, you get some funny looks when your toddler does it), Salzberg says you should look at the opportunities the mistake presents. I'm a bit of an obsessive perfectionist, so although this one is geared toward littles, it still speaks to me. The "turn that mistake into a masterpiece" message is presented in such a fun way, everyone will love it.
No need to hide those natural talents! This book is all about not squashing that little impulse inside that drives you toward your joy, even in the face of opposition from those you trust and look up to. This lovely read has charming illustrations, and the message in the author's other book (Rosie Revere, Engineer) works quite well alongside this one.
She's famous for being inspirational, and her latest ode to joyful curiosity is no different. It's full of liberating ideas, interesting anecdotes and encouraging perspectives on curiosity. This is a definite must-read title not only for those right-brain creatives but also for the left-brain pragmatists. Because, according to Gilbert, we all have the potential to create something wonderful.
I love reading Gladwell's work. He has wonderful insights into the world, and he really gets you excited about the marvels — both big and small — that the world has to offer. If nothing else, he lists some other marvelous ideas that might get you thinking and wondering and, before you know it, coming up with another really great idea. Brilliant.
Kleon has a book and journal based on the same name, but I love the journal idea — and not just because it's fun to say "creative kleptomaniacs". (I must admit, I haven't bought the journal yet. I just like the idea of it.) The premise of the short, easy-to-read book is that nothing is original, that every great idea stands on the shoulders of other great ideas. The journal takes that premise and carries it forward while asking you questions to get you thinking. You never know what prompt might jog your brain for your next assignment.
There are opportunities for inspiration all around you, at pretty much any time. That in and of itself is pretty cool. But being in the presence of a really great idea, whether it comes in the form of a book, a movie or an ad? Now that's truly awesome.
Need another book recommendation? Did I leave your favorite book off the list? I could go on for ages about wonderful books, so feel free to send me a message!


Basic custom imprint setup & PDF proof included! 13-month wall calendar features dramatic photos with motivational quotations that will inspire you to reach the next level, all year long.
This high-quality custom motivational calendar will proudly display your message for the entire year!


text:
Q: Getting meta proper content from url I am trying to get meta proper content from url but facing some problem
i want to grab "og:url" content detail, here is my code
 Sub GrabCanonicalUrl3()
    Const Url$ = "https://www.justdial.com/Ambala/Beauty-Parlours-in-Naraingarh"
    Dim S$

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", Url, False
        .Send
        S = Replace(Replace(.responseText, "<!--", ""), "-->", "")
    End With

    With New HTMLDocument
        .body.innerHTML = S
        MsgBox .querySelector("meta[property='og:url']").getAttribute("content")
    End With
End Sub

facing this earror

Object variable or block variable not set

MsgBox .querySelector("meta[property='og:url']").getAttribute("content")

I want to get url (og:url) link from inner HTML . but not
please help me out

A: Try this code
Sub Test()
    Dim obj As Object, sResp As String
    With CreateObject("MSXML2.xmlHttp")
        .Open "GET", "https://www.justdial.com/Ambala/Beauty-Parlours-in-Naraingarh", False
        .send
        sResp = .responseText
    End With
    With CreateObject("HTMLFile")
        .write sResp
        For Each obj In .all(2).getElementsByTagName("meta")
            If obj.getAttribute("Property") = "og:url" Then Debug.Print obj.Content: Exit For
        Next obj
    End With
End Sub

redpajama_set_name: RedPajamaStackExchange


I have never really been someone who enjoyed art as a kid. I liked the creative aspect, and I liked to make things look pretty. Truth be told, the vision in my head rarely made it to the final product. However, I vividly remember loving to color and draw, up until around age eleven. I have no idea why I stopped. Fast forward to the last few years when adult coloring books became popular. I thought I'd give those a try, and all it did was stress me out—the designs were too intricate and all of a sudden there were too many colors to pick from. What if I messed up? How in the world was this supposed to be relaxing? I just didn't understand. And then, at BroadwayCon 2018, I met Andrea Koehler of Coloring Broadway and The Coloring Project. Magically, I was hooked on coloring again. I found it engaging and relaxing, and –get this—ENJOYABLE. Andrea and I talked about many things during our conversation, but what I took away was why coloring works for me, mindful activities, and the combination of the creative and the collaborative involved in this project.
S: How did these coloring pages come to be?
A: My why behind these pages is the mindfulness component that can be found in musical lyrics. I'm very picky in which lyrics we choose to highlight. Obviously, it has its connection to Broadway, but the point isn't to call out a single show. "Hello, Dolly!" is a great line, but there isn't much meaning to ponder behind that particular statement (or is there?). The reason I love the coming together of mindfulness and musical theatre is that musical theatre gives you all of these wonderfully inspirational lyrics.
S: I agree. I like that they're not show specific.
A: And you don't have to know it's from a show to know the line is meaningful. However, finding they lyrics was easier with some shows, and harder with others. For example, Hamilton was easier to create than SpongeBob because Hamilton's lyrics are full of meaningful snippets that are more easily understood out of context. And I don't want to get pigeon-holed. I want to cover the breadth of Broadway keeping the focus on the mindfulness of the lyrics. We currently have a list of most-requested shows to pull from in the future. The number one suggestion at BroadwayCon was The Great Comet. I have to balance what people want with what will be most popularly purchased from a business perspective. We want to create a 2017-2018 season coloring book or coloring set.
S: So, let me tell you, I am not a colorer, but your pages changed that! They relieved stress. And my friends laughed at me and said, "You did that? You don't do art." Now I have gone out and bought markers and pencils and I keep coloring!
A: May I suggest the extra fine Sharpies? They're really good for coloring. My step-son asked if we could color with Sharpies one day and I caved, and now I will never go back.
S: Is there a right way to color?
A: No, there's totally not. Use whatever you like to use. I want it to be easy for everyone. That's actually why I currently make coloring pages. A book has lots of pages and there can be a pressure to complete all of the pages before you move on. With the collections we've made, you can pick and choose and change which pages you're working on.
S: That is exactly the issue I had with deciding between some of your pages, and why I like the coloring pages. Is there a difference between Coloring Broadway and The Coloring Project?
A: Coloring Broadway came out of The Coloring Project. I have a 20-year background in training and development, and the last four-five years I spent doing leadership training and personal development in a corporate setting. That's why I'm big on self-awareness. The only way we grow as a humanity is by understanding who we are and how we're showing up to a situation. If we never look at how we function, we won't grow individually or as a humanity (If we don't know, we can't grow :P). And then in April 2015, I picked up a coloring book. It was all I wanted to do for two weeks. I realized it was a tool, and for many things. Calming, creativity, and a way to create space for thought. Your brain has space to think when you're coloring—you're not getting any little red or beeping notifications, which can keep thoughts from being allowed to occur. It's a tool for thinking and for focus. Our brains have been "untrained" from being able to focus and do deep work. We think about a zillion things at once. You listen better when you're doodling or doing a non-cognitive activity – it keeps your "monkey mind" focused and allows you the space to listen or think. Coloring is a non-cognitive activity. I created The Coloring Project to blend mindfulness as an activity with coloring. With The Coloring Project, I created a coloring book, The Power of Positive Coloring, that has a mindfulness activity that goes with each of the illustrations. . It has prompts to get them thinking while they color, something like, "While you're coloring the word 'Inspire' think about what inspires you." Coloring Broadway happened because one of my illustrators and I both love Broadway. It's a very niche audience, but it took on a life of its own.
S: I mean, give Broadway people something, and we will run with it.
A: Being at BroadwayCon was unreal. It was a great setting for us. We sold about half of what we brought with us, and we met with a bunch of different people and got great feedback. We're already planning for next year.
S: That's you and Tatro and Dr. Drama and other creators, right?
A: Yes! I love the Broadway makers. We're a fun group.
S: I'm excited for whatever you come up with. I can't believe I didn't lead with this, but how did you get into theatre?
A: My mom was a ballerina and I grew up in dance. At 13, I quit dancing (self-esteem and body issues) and did all academics for my entire high school career. My friend group was friends with the theatre group at another high school and we pretty much followed them wherever they went. We saw their shows and sang all of the showtunes. That was my way in. Another way of connecting to how I felt that wasn't dancing.
S: Do you have an intended audience? Has it changed?
A: Broadway fans. Always Broadway fans, but there are multiple audiences. There's kids, who are just starting to connect with theatre, and the teens in their fandoms, and the adults who want a souvenir. My audience is anyone who wants to extend their theatrical experience. You can buy a poster or a magnet and have nice memories, but through coloring, it can reconnect you to what moved you while you were in the theatre. And you get to create alongside what you know from the show with your own creative mentality.
S: Again, coloring wasn't my thing until I saw your designs. What makes your designs different?
A: For the most part, the quotes that stand on their own. Everyone wants to hear the messages of the images. And our illustrator, Justine Fisher, has a wonderful sense of design and we tease out what the theme of the quote is. We match the theme of the quote to a design. My favorite one of hers is The Room Where It Happens. It's not overly complex, and it holds meaning and is accomplishable in a short amount of time. The designs are created to be completed within 1-2 hours of beginning. I've made it take longer than that, but it can be done in a reasonable amount of time.
S: Does it start with the quote or the design?
A: Usually, it starts with the quote. Sometimes it starts with the music. When I brought up Hamilton, Justine hadn't heard it yet. The emotion behind her experience listening is what drove her illustrations. She has an incredible ability to convey the message through different mediums within the visual realm.
S: For you as a creator, is there pressure on you for your pages to be liked, or do you just create what you enjoy?
A: It's different since I'm not the illustrator. Justine and I will sit with the quote and talk it out. She has a different aesthetic than I do, and that's where I find pressure. As long as she and I are pleased with it, I'm not terribly concerned.
A: My challenge is to finish the statement, "I am." Finish it in as many ways as you can. Explore all of the sides of that statement that apply to you. This is the beginning of self-awareness, which I am very passionate about. Learning about yourself and accepting all that you are is key. Take five minutes. If you can do that beyond five minutes, great, but start with five minutes.
I am currently obsessed with Andrea's Coloring Broadway pages, and message her every time I complete a new one. We had more fun than necessary during this interview, which is the best kind of fun. I've already taken her challenge, and it's amazing to own the many things that I am. My students have begun to undertake this challenge, too, and are learning so much about themselves. It's a joy to watch, and I can't wait to hear how you all complete this exercise in comments. Because I know you totally need these coloring pages (and those to come), follow Andrea at @ColoringBWAY on Twitter and @coloringbroadway on Instagram. You can find her Etsy shop, The Coloring Project, with both Broadway and non-Broadway coloring options.


text:
project_path: /web/_project.yaml
book_path: /web/updates/_book.yaml
description: The Page Lifecycle API brings app lifecycle features common on mobile operating systems to the web. Browsers are now able to safely freeze and discard background pages to conserve resources, and developers can safely handle these interventions without affecting the user experience.

{# wf_updated_on: 2019-03-01 #}
{# wf_published_on: 2018-07-24 #}
{# wf_tags: performance #}
{# wf_blink_components: Blink #}
{# wf_featured_image: /web/updates/images/generic/new-in-chrome.png #}
{# wf_featured_snippet: The Page Lifecycle API brings app lifecycle features common on mobile operating systems to the web. Browsers are now able to safely freeze and discard background pages to conserve resources, and developers can safely handle these interventions without affecting the user experience. #}

# Page Lifecycle API {: .page-title }

{% include "web/_shared/contributors/philipwalton.html" %}

Modern browsers today will sometimes suspend pages or discard them entirely when
system resources are constrained. In the future, browsers want to do this
proactively, so they consume less power and memory. The [Page Lifecycle
API](https://wicg.github.io/page-lifecycle/spec.html), shipping in Chrome 68,
provides lifecycle hooks so your pages can safely handle these browser
interventions without affecting the user experience. Take a look at the API to
see whether you should be implementing these features in your application.

## Background {: #background}

Application lifecycle is a key way that modern operating systems manage
resources. On Android, iOS, and recent Windows versions, apps can be started and
stopped at any time by the OS. This allows these platforms to streamline and
reallocate resources where they best benefit the user.

On the web, there has historically been no such lifecycle, and apps can be kept
alive indefinitely. With large numbers of web pages running, critical system
resources such as memory, CPU, battery, and network can be oversubscribed,
leading to a bad end-user experience.

While the web platform has long had events that related to lifecycle states
— like [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load),
[`unload`](https://developer.mozilla.org/en-US/docs/Web/Events/unload), and
[`visibilitychange`](https://developer.mozilla.org/en-US/docs/Web/Events/visibilitychange)
— these events only allow developers
to respond to user-initiated lifecycle state changes. For the web to work
reliably on low-powered devices (and be more resource conscious in general on
all platforms) browsers need a way to proactively reclaim and re-allocate system
resources.

In fact, browsers today already do [take active measures to conserve
resources](https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API#Policies_in_place_to_aid_background_page_performance)
for pages in background tabs, and many browsers (especially Chrome) would like
to do a lot more of this — to lessen their overall resource footprint.

The problem is developers currently have no way to prepare for these types of
system-initiated interventions or even know that they're happening. This means
browsers need to be conservative or risk breaking web pages.

The [Page Lifecycle API](https://wicg.github.io/page-lifecycle/spec.html)
attempts to solve this problem by:

* Introducing and standardizing the concept of lifecycle states on the web.
* Defining new, system-initiated states that allow browsers to limit the
  resources that can be consumed by hidden or inactive tabs.
* Creating new APIs and events that allow web developers to respond to
  transitions to and from these new system-initiated states.

This solution provides the predictability web developers need to build
applications resilient to system interventions, and it allows browsers to more
aggressively optimize system resources, ultimately benefiting all web users.

The rest of this post will introduce the new Page Lifecycle features shipping in
Chrome 68 and explore how they relate to all the existing web platform states
and events. It will also give recommendations and best-practices for the types
of work developers should (and should not) be doing in each state.

## Overview of Page Lifecycle states and events

All Page Lifecycle states are discrete and mutually exclusive, meaning a page
can only be in one state at a time. And most changes to a page's lifecycle state
are generally observable via DOM events (see [developer recommendations for each
state](#developer-recommendations-for-each-state) for the exceptions).

Perhaps the easiest way to explain the Page Lifecycle states — as well as
the events that signal transitions between them — is with a diagram:

### States {: #states}

The following table explains each state in detail. It also lists the possible
states that can come before and after as well as the events developers can
use to observe changes.

    State
    Description

    Active

A page is in the active state if it is visible and has
      input focus.

        Possible previous states:

        passive
          (via the focus event)

        Possible next states:

        passive
          (via the blur event)

    Passive

A page is in the passive state if it is visible and does
      not have input focus.

        Possible previous states:

        active
          (via the blur event)

        hidden
          (via the
          visibilitychange event)

        Possible next states:

        active
          (via the focus event)

        hidden
          (via the
          visibilitychange event)

    Hidden

A page is in the hidden state if it is not visible and has not
      been frozen.

        Possible previous states:

        passive
          (via the
          visibilitychange event)

        Possible next states:

        passive
          (via the
          visibilitychange event)

        frozen
          (via the freeze event)

        terminated
          (via the pagehide event)

    Frozen

In the frozen state the browser suspends execution of

      freezable

      tasks in the page's

      task queues until the page is unfrozen. This means things like
      JavaScript timers and fetch callbacks do not run. Already-running
      tasks can finish (most importantly the
      freeze callback), but they may be limited in what they
      can do and how long they can run.

Browsers freeze pages as a way to preserve CPU/battery/data usage; they
      also do it as a way to enable faster

      back/forward navigations — avoiding the need for a full page
      reload.

        Possible previous states:

        hidden
          (via the freeze event)

        Possible next states:

        active
          (via the resume event, then the
          pageshow event)

        passive
          (via the resume event, then the
          pageshow event)

        hidden
          (via the resume event)

    Terminated

A page is in the terminated state once it has started being
      unloaded and cleared from memory by the browser. No

      new tasks can start in this state, and in-progress tasks may be
      killed if they run too long.

        Possible previous states:

        hidden
          (via the pagehide event)

        Possible next states:

        NONE

    Discarded

A page is in the discarded state when it is unloaded by the
      browser in order to conserve resources. No tasks, event callbacks, or
      JavaScript of any kind can run in this state, as discards typically
      occur under resource constraints, where starting new processes is
      impossible.

In the discarded state the tab itself
      (including the tab title and favicon
      ) is usually visible to the user even though the page is gone.

        Possible previous states:

        frozen
          (no events fired)

        Possible next states:

        NONE

### Events {: #events}

Browsers dispatch a lot of events, but only a small portion of them signal a
possible change in Page Lifecycle state. The table below outlines all events
that pertain to lifecycle and lists what states they may transition to and from.

    Name
    Details

        focus

A DOM element has received focus.

        Note:
        A focus event does not necessarily signal a state change.
        It only signals a state change if the page did not previously have
        input focus.

        Possible previous states:

        passive

        Possible current states:

        active

        blur

A DOM element has lost focus.

        Note:
        A blur event does not necessarily signal a state change.
        It only signals a state change if the page no longer has input focus
        (i.e. the page did not just switch focus from one element to
        another).

        Possible previous states:

        active

        Possible current states:

        passive

        visibilitychange

The document's

      visibilityState value has changed. This can
      happen when a user navigates to a new page, switches tabs, closes a tab,
      minimizes or closes the browser, or switches apps on mobile operating
      systems.

        Possible previous states:

        passive

        hidden

        Possible current states:

        passive

        hidden

        freeze

      *

The page has just been frozen. Any

      freezable task in the page's task queues will not be started.

        Possible previous states:

        hidden

        Possible current states:

        frozen

        resume

      *

The browser has resumed a frozen page.

        Possible previous states:

        frozen

        Possible current states:

        active
          (if followed by the

          pageshow event)

        passive
          (if followed by the

          pageshow event)

        hidden

        pageshow

A session history entry is being traversed to.

This could be either a brand new page load or a page taken from the
        page navigation cache. If the page
        was taken from the page navigation cache, the event's
        persisted property is true, otherwise it is
        false.

        Possible previous states:

        frozen
          (a resume
          event would have also fired)

        Possible current states:

        active

        passive

        hidden

        pagehide

A session history entry is being traversed from.

If the user is navigating to another page and the browser is able to add
      the current page to the page navigation
      cache to be reused later, the event's persisted property
      is true. When true, the page is entering the
      frozen state, otherwise it is entering the terminated state.

        Possible previous states:

        hidden

        Possible current states:

        frozen
          (event.persisted is true,
          freeze event follows)

        terminated
          (event.persisted is false,

          unload event follows)

        beforeunload

The window, the document and its resources are about to be unloaded.
      The document is still visible and the event is still cancelable at this
      point.

        Warning:
        The beforeunload event should only be used to alert the
        user of unsaved changes. Once those changes are saved, the event should
        be removed. It should never be added unconditionally to the
        page, as doing so can hurt performance in some cases. See the
        legacy APIs section
        for details.

        Possible previous states:

        hidden

        Possible current states:

        terminated

        unload

The page is being unloaded.

        Warning:
        Using the unload event is never recommended because it's
        unreliable and can hurt performance in some cases. See the
        legacy APIs section
        for more details.

        Possible previous states:

        hidden

        Possible current states:

        terminated

*
  Indicates a new event defined by the Page Lifecycle API

### New features added in Chrome 68 {: #new-features-added-in-chrome-68}

The chart above shows two states that are system-initiated rather than
user-initiated: [frozen](#state-frozen) and [discarded](#state-discarded).
As mentioned above, browsers today already occasionally freeze and discard
hidden tabs (at their discretion), but developers have no way of knowing when
this is happening.

In Chrome 68, developers can now observe when a hidden tab is frozen and
unfrozen by listening for the [`freeze`](https://wicg.github.io/page-lifecycle/spec.html#sec-api)
and [`resume`](#event-resume) events on `document`.

```
document.addEventListener('freeze', (event) => {
  // The page is now frozen.
});

document.addEventListener('resume', (event) => {
  // The page has been unfrozen.
});
```

In Chrome 68 the `document` object also now includes a
[`wasDiscarded`](https://wicg.github.io/page-lifecycle/spec.html#sec-api)
property. To determine whether a page was discarded while in a hidden
tab, you can inspect the value of this property at page load time (note:
discarded pages must be reloaded to use again).

```
if (document.wasDiscarded) {
  // Page was previously discarded by the browser while in a hidden tab.
}
```

For advice on what things are important to do in the `freeze` and `resume`
events, as well as how to handle and prepare for pages being discarded, see
[developer recommendations for each state](#developer-recommendations-for-each-state).

The next several sections offer an overview of how these new features fit into
the existing web platform states and events.

## Observing Page Lifecycle states in code {: #observing-page-lifecycle-states-in-code}

In the [active](#state-active), [passive](#state-passive), and [hidden](#state-hidden)
states, it's possible to run JavaScript code that determines the current
Page Lifecycle state from existing web platform APIs.

```
const getState = () => {
  if (document.visibilityState === 'hidden') {
    return 'hidden';
  }
  if (document.hasFocus()) {
    return 'active';
  }
  return 'passive';
};
```

The [frozen](#state-frozen) and [terminated](#state-terminated) states, on the
other hand, can only be detected in their respective event listener
([`freeze`](#event-freeze) and [`pagehide`](#event-pagehide)) as the state is
changing.

### Observing state changes {: #observing-state-changes}

Building on the `getState()` function defined above, you can observe all Page
Lifecycle state changes with the following code.

```
// Stores the initial state using the `getState()` function (defined above).
let state = getState();

// Accepts a next state and, if there's been a state change, logs the
// change to the console. It also updates the `state` value defined above.
const logStateChange = (nextState) => {
  const prevState = state;
  if (nextState !== prevState) {
    console.log(`State change: ${prevState} >>> ${nextState}`);
    state = nextState;
  }
};

// These lifecycle events can all use the same listener to observe state
// changes (they call the `getState()` function to determine the next state).
['pageshow', 'focus', 'blur', 'visibilitychange', 'resume'].forEach((type) => {
  window.addEventListener(type, () => logStateChange(getState()), {capture: true});
});

// The next two listeners, on the other hand, can determine the next
// state from the event itself.
window.addEventListener('freeze', () => {
  // In the freeze event, the next state is always frozen.
  logStateChange('frozen');
}, {capture: true});

window.addEventListener('pagehide', (event) => {
  if (event.persisted) {
    // If the event's persisted property is `true` the page is about
    // to enter the page navigation cache, which is also in the frozen state.
    logStateChange('frozen');
  } else {
    // If the event's persisted property is not `true` the page is
    // about to be unloaded.
    logStateChange('terminated');
  }
}, {capture: true});
```

The above code does three things:

* Sets the initial state using the `getState()` function.
* Defines a function that accepts a next state and, if there's a change,
  logs the state changes to the console.
* Adds capturing event listeners for all necessary lifecycle events, which
  in turn call `logStateChange()`, passing in the next state.

  Warning!
  This code yields different results in different browsers, as the order
  and reliability of events has not been consistently implemented. To learn
  how best to handle these inconsistencies see
  managing cross-browsers
  differences.

One thing to note about the above code is that all the event listeners are added
to `window` and they all pass
[`{capture: true}`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Syntax).
There are a few reasons for this:

* Not all Page Lifecycle events have the same target. `pagehide`, and
  `pageshow` are fired on `window`; `visibilitychange`, `freeze`, and
  `resume` are fired on `document`, and `focus` and `blur` are fired on their
  respective DOM elements.
* Most of these events do not bubble, which means it's impossible to add
  non-capturing event listeners to a common ancestor element and observe all
  of them.
* The capture phase executes before the target or bubble phases, so adding
  listeners there helps ensure they run before other code can cancel them.

### Managing cross-browsers differences {: #managing-cross-browsers-differences}

The chart in the beginning of this article outlines the state and event flow
according to the Page Lifecycle API. But since this API has just been
introduced, the new events and DOM APIs have not been implemented in all
browsers.

Furthermore, the events that are implemented in all browsers today are not
implemented consistently. For example:

* Some browsers do not fire a `blur` event when switching tabs. This means
  (contrary to the diagram and tables above) a page could go from the active
  state to the hidden state without going through passive first.
* Several browsers implement a [page navigation cache](#page-navigation-cache),
  and the Page Lifecycle API classifies cached pages as being in the frozen
  state. Since this API is brand new, these browsers do not yet implement the
  `freeze` and `resume` events, though this state can still be observed via
  the `pagehide` and `pageshow` events.
* Older versions of Internet Explorer (10 and below) do not implement the
  `visibilitychange` event.
* The dispatch order of the `pagehide` and `visibilitychange` events has
 [changed](https://github.com/w3c/page-visibility/issues/39). Previously
  browsers would dispatch `visibilitychange` after `pagehide` if the page's
  visibility state was visible when the page was being unloaded. New Chrome
  versions will dispatch `visibilitychange` before `pagehide`, regardless of
  the document's visibility state at unload time.
* Safari does not reliably fire the `pagehide` or `visibilitychange` events
  when closing a tab (webkit bugs: [151610](https://bugs.webkit.org/show_bug.cgi?id=151610)
  and [151234](https://bugs.webkit.org/show_bug.cgi?id=151234)), so in Safari
  you may need to _also_ listen to the `beforeunload` event in order to
  detect a change to the hidden state. But since the `beforeunload` event can
  be canceled, you need
  [to wait until after the event has finished propagating](https://github.com/GoogleChromeLabs/page-lifecycle/blob/0.1.1/src/Lifecycle.mjs#L156-L172)
  to know if the state has changed to hidden. __Important__: using the
  `beforeunload` event this way should _only_ be done in Safari, as using this
  event in other browsers can hurt performance. See the
  [legacy APIs](#legacy-lifecycle-apis-to-avoid) section for details.

To make it easier for developers to deal with these cross-browsers
inconsistencies and focus solely on following the [lifecycle state recommendations
and best practices](#developer-recommendations-for-each-state), we've released
[PageLifecycle.js](https://github.com/GoogleChromeLabs/page-lifecycle), a
JavaScript library for observing Page Lifecycle API state changes.

[PageLifecycle.js](https://github.com/GoogleChromeLabs/page-lifecycle)
normalizes cross-browser differences in event firing order so that state changes
always occur exactly as outlined in the chart and tables in this article (and
do so consistently in all browsers).

## Developer recommendations for each state {: #developer-recommendations-for-each-state}

As developers, it's important to both understand Page Lifecycle states *and*
know how to observe them in code because the type of work you should (and should
not) be doing depends largely on what state your page is in.

For example, it clearly doesn't make sense to display a transient notification
to the user if the page is in the hidden state. While this example is pretty
obvious, there are other recommendations that aren't so obvious that are worth
enumerating.

    State
    Developer recommendations

    Active

The active state is the most critical time for the user and thus
      the most important time for your page to be

      responsive to user input.

Any non-UI work that may block the main thread should be deprioritized
      to
      idle periods or
      offloaded to a web worker.

    Passive

In the passive state the user is not interacting with the page,
      but they can still see it. This means UI updates and animations should still
      be smooth, but the timing of when these updates occur is less critical.

When the page changes from active to passive, it's a
      good time to persist unsaved application state.

    Hidden

When the page changes from passive to hidden, it's
      possible the user will not interact with it again until it's reloaded.

The transition to hidden is also often the last state change
      that's reliably observable by developers (this is especially true on
      mobile, as users can close tabs or the browser app itself, and the
      beforeunload, pagehide, and unload
      events are not fired in those cases).

This means you should treat the hidden state as the likely end to the
      user's session. In other words, persist any unsaved application state
      and send any unsent analytics data.

You should also stop making UI updates (since they won't be seen
      by the user), and you should stop any tasks that a user wouldn't want
      running in the background.

    Frozen

In the frozen state,

      freezable tasks in the

      task queues are suspended until the page is unfrozen — which may
      never happen (e.g. if the page is discarded).

This means when the page changes from hidden to frozen
      it's essential that you stop any timers or tear down any connections that,
      if frozen, could affect other open tabs in the same origin, or affect the
      browser's ability to put the page in the
      page navigation cache.

In particular, it's important that you:

Close all open

          IndexedDB connections.

Close open

          BroadcastChannel connections.

Close active
          WebRTC connections.

Stop any network polling or close any open

          Web Socket connections.

Release any held
          Web Locks.

You should also persist any dynamic view state (e.g. scroll position
      in an infinite list view) to

      sessionStorage (or
      IndexedDB via
      commit()) that you'd want restored if the page were
      discarded and reloaded later.

If the page transitions from frozen back to hidden,
      you can reopen any closed connections or restart any polling you
      stopped when the page was initially frozen.

    Terminated

You generally do not need to take any action when a page transitions
      to the terminated state.

Since pages being unloaded as a result of user action always go
      through the hidden state before entering the terminated
      state, the hidden state is where session-ending logic (e.g.
      persisting application state and reporting to analytics) should be
      performed.

Also (as mentioned in the recommendations for
      the hidden state), it's very important for developers to realize
      that the transition to the terminated state cannot be reliably
      detected in many cases (especially on mobile), so developers who depend
      on termination events (e.g. beforeunload,
      pagehide, and unload) are likely losing data.

    Discarded

The discarded state is not observable by developers at the
      time a page is being discarded. This is because pages are typically
      discarded under resource constraints, and unfreezing a page just to allow
      script to run in response to a discard event is simply not possible in
      most cases.

As a result, you should prepare for the possibility of a discard in
      the change from hidden to frozen, and then you can
      react to the restoration of a discarded page at page load time by
      checking document.wasDiscarded.

Once again, since reliability and ordering of lifecycle events is not
consistently implemented in all browsers, the easiest way to follow the advice
in the table above is to use
[PageLifecycle.js](https://github.com/GoogleChromeLabs/page-lifecycle).

## Legacy lifecycle APIs to avoid {: #legacy-lifecycle-apis-to-avoid}

### The unload event {: #the-unload-event}

  Key point:
  Never use the unload event on modern browsers.

Many developers treat the `unload` event as a guaranteed callback and use it as
an end-of-session signal to save state and send analytics data, but doing this
is **extremely unreliable**, especially on mobile! The `unload` event does not
fire in many typical unload situations, including closing a tab from the tab
switcher on mobile or closing the browser app from the app switcher.

For this reason, it's always better to rely on the
[`visibilitychange`](#event-visibilitychange) event to determine when a session
ends, and consider the hidden state the
[last reliable time to save app and user data](#advice-hidden).

Furthermore, the mere presence of a registered `unload` event handler (via
either `onunload` or `addEventListener()`) can prevent browsers from being able
to put pages in the [page navigation cache](#page-navigation-cache) for faster
back and forward loads.

In all modern browsers (including IE11), it's recommended to always use the
[`pagehide`](#event-pagehide) event to detect possible page unloads (a.k.a the
[terminated](#state-terminated) state) rather than the `unload` event. If you
need to support Internet Explorer versions 10 and lower, you should feature
detect the `pagehide` event and only use `unload` if the browser doesn't support
`pagehide`:

```
const terminationEvent = 'onpagehide' in self ? 'pagehide' : 'unload';

addEventListener(terminationEvent, (event) => {
  // Note: if the browser is able to cache the page, `event.persisted`
  // is `true`, and the state is frozen rather than terminated.
}, {capture: true});
```

For more information on page navigation caches, and why the unload event harms them, see:

* [WebKit Page Cache](https://webkit.org/blog/427/webkit-page-cache-i-the-basics/)
* [Firefox Back-Forward Cache](https://developer.mozilla.org/en-US/Firefox/Releases/1.5/Using_Firefox_1.5_caching)

### The beforeunload event {: #the-beforeunload-event}

  Key point:
  Never add a beforeunload listener unconditionally or use it as an
  end-of-session signal. Only add it when a user has unsaved work, and remove
  it as soon as that work has been saved.

The `beforeunload` event has a similar problem to the `unload` event, in that
when present it prevents browsers from caching the page in their
[page navigation cache](#page-navigation-cache).

The difference between `beforeunload` and `unload`, though, is that there are
legitimate uses of `beforeunload`. For instance, when you want to warn the user
that they have unsaved changes they'll lose if they continue unloading the page.

Since there are valid reasons to use `beforeunload` but using it prevents pages
from being added to the page navigation cache, it's recommended that you *only*
add `beforeunload` listeners when a user has unsaved changes and then remove
them immediately after the unsaved changes are saved.

In other words, don't do this (since it adds a `beforeunload` listener
unconditionally):

```
addEventListener('beforeunload', (event) => {
  // A function that returns `true` if the page has unsaved changes.
  if (pageHasUnsavedChanges()) {
    event.preventDefault();
    return event.returnValue = 'Are you sure you want to exit?';
  }
}, {capture: true});
```

Instead do this (since it only adds the `beforeunload` listener when it's
needed, and removes it when it's not):

```
const beforeUnloadListener = (event) => {
  event.preventDefault();
  return event.returnValue = 'Are you sure you want to exit?';
};

// A function that invokes a callback when the page has unsaved changes.
onPageHasUnsavedChanges(() => {
  addEventListener('beforeunload', beforeUnloadListener, {capture: true});
});

// A function that invokes a callback when the page's unsaved changes are resolved.
onAllChangesSaved(() => {
  removeEventListener('beforeunload', beforeUnloadListener, {capture: true});
});
```

Note: The
  PageLifecycle.js
   library provides the convenience methods addUnsavedChanges()
  and removeUnsavedChanges(), that follow all the best practices
  outlined above. They're based on a

  draft proposal to officially replace the
  beforeunload event with a declarative API that can be less easily
  abused and more reliable on mobile platforms.

If you want to use the beforeunload event properly and in a
  way that works cross-browser, the
  PageLifecycle.js
  library is our recommended solution.

## FAQs {: #faqs}

  My page does important work when it's hidden,
  how can I stop it from being frozen or discarded?

There are lots of legitimate reasons web pages shouldn't be frozen while running
in the hidden state. The most obvious example is an app that plays music.

There are also situations where it would be risky for Chrome to discard a page,
like if it contains a form with unsubmitted user input, or if it has a
`beforeunload` handler that warns when the page is unloading.

For the moment, Chrome is going to be conservative when discarding pages and
only do so when it's confident it won't affect users. For example, pages that
have been observed to do any of the following while in the hidden state will not
be discarded unless under extreme resource constraints:

* Playing audio
* Using WebRTC
* Updating the table title or favicon
* Showing alerts
* Sending push notifications

For the current list features used to determine whether a tab can be safely
frozen or discarded, see: [Heuristics for Freezing & Discarding](
https://docs.google.com/document/d/1QJpuBTdllLVflMJSov0tlFX3e3yfSfd_-al2IBavbQM/edit?usp=sharing)
in Chrome.

  Note:
  In the case of pages that update the title or favicon to alert users of unread
  notifications, we currently have a
  proposal to enable
  these kinds of updates from service worker, which would allow Chrome to
  freeze or discard the page but still show changes to the tab title or favicon.

  What is the page navigation cache?

The page navigation cache is a general term used to describe a navigation
optimization some browsers implement that makes using the back and forward
buttons faster. Webkit calls it the
[Page Cache](https://webkit.org/blog/427/webkit-page-cache-i-the-basics/) and
Firefox calls it the
[Back-Forwards Cache](https://developer.mozilla.org/en-US/Firefox/Releases/1.5/Using_Firefox_1.5_caching)
(or bfcache for short).

When a user navigates away from a page, these browsers freeze a version of that
page so that it can be quickly resumed in case the user navigates back using
the back or forward buttons. Remember that adding a `beforeunload` or `unload`
event handler [prevents this optimization from being
possible](#legacy-lifecycle-apis-to-avoid).

For all intents and purposes, this freezing is functionally the same as
the freezing browsers perform to conserve CPU/battery; for that reason it's
considered part of the [frozen](#state-frozen) lifecycle state.

  Why aren't the load or DOMContentLoaded events mentioned?

The Page Lifecycle API defines states to be discrete and mutually exclusive.
Since a page can be loaded in either the active, passive, or hidden state, a
separate loading state does not make sense, and since the `load` and
`DOMContentLoaded` events don't signal a lifecycle state change, they're not
relevant to this API.

  If I can't run asynchronous APIs in the frozen or terminated states,
  how can I save data to IndexedDB?

In frozen and terminated states,
[freezable tasks](https://wicg.github.io/page-lifecycle/spec.html#html-task-source-dfn)
in a page's [task queues](https://html.spec.whatwg.org/multipage/webappapis.html#task-queue)
are suspended, which means asynchronous and callback-based APIs such as IndexedDB
cannot be reliably used.

In the future, we will [add a `commit()` method to
`IDBTransaction`](https://github.com/w3c/IndexedDB/pull/242) objects, which will
give developers a way to perform what are effectively write-only transactions
that don't require callbacks. In other words, if the developer is just writing
data to IndexedDB and not performing a complex transaction consisting of reads
and writes, the `commit()` method will be able to finish before task queues are
suspended (assuming the IndexedDB database is already open).

For code that needs to work today, however, developers have two options:

* __Use Session Storage:__ [Session Storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
  is synchronous and is persisted across page discards.
* __Use IndexedDB from your service worker:__ a service worker can store data in
IndexedDB after the page has been terminated or discarded. In the `freeze` or
`pagehide` event listener you can send data to your service worker via
[`postMessage()`](https://googlechrome.github.io/samples/service-worker/post-message/),
and the service worker can handle saving the data.

  Note:
  While the second option above will work, it's not ideal in situations where
  the device is freezing or discarding the page due to memory pressure since
  the browser may have to wake up the service worker process, which will put
  more strain on the system.

## Testing your app in the frozen and discarded states {: #testing-your-app-in-the-frozen-and-discarded-states}

To test how your app behaves in the frozen and discarded states, you can visit
[chrome://discards](chrome://discards) to actually freeze or discard any of your
open tabs.

This allows you to ensure your page correctly handles the `freeze` and `resume`
events as well as the `document.wasDiscarded` flag when pages are reloaded after
a discard.

## Summary {: #summary}

Developers who want to respect the system resources of their user's devices
should build their apps with Page Lifecycle states in mind. It's critical that
web pages are not consuming excessive system resources in situations that the
user wouldn't expect

In addition, the more developers start implementing the new Page Lifecycle APIs,
the safer it will be for browsers to freeze and discard pages that aren't being
used. This means browsers will consume less memory, CPU, battery, and network
resources, which is a win for users.

Lastly, developers who want to implement the
[best practices](#developer-recommendations-for-each-state) described in this
article but don't want to memorize all the possible state and event transitions
paths can use
[PageLifecycle.js](https://github.com/GoogleChromeLabs/page-lifecycle) to easily
observe lifecycle state changes consistently in all browsers.

{% include "web/_shared/rss-widget-updates.html" %}

redpajama_set_name: RedPajamaGithub


The Trauma and Orthopaedic Clinical Programme (TOP) is led by Mr David Moore and Mr Paddy Kenny as Clinical Leads and Catherine Farrell, appointed in May 2013, as Programme Manager.
The Irish Institute of Trauma and Orthopaedic Surgery are the Advisory Body for the Programme. The Programme also has five Regional Leads, Mr Bill Curtin, Mr Brian Lenihan, Mr Hannan Mullett, Mr Eoin Sheehan and Mr Pat Fleming.
The programme is currently working on a number of projects, including the development of a Trauma and Orthopaedic Model of Care document, setting up a National Spine Service Plan group, encouraging hospitals to contribute data to the Irish Hip Fracture Database, coordinating the contribution of trauma and orthopaedic consultants to the HIQA Health Technology Assessment Process and coordinating the publication of agreed DVT prophylaxis guidelines.
The Trauma and Orthopaedics Programme has also formed a working group with the NCPS office and HSE procurement to launch National Tenders for Trauma and Orthopaedic Implants.
The programme has also been involved in forming a cross programme group to advance the publishing of guideline Integrated Care Pathway (ICP) for Fractured Neck of Femur patients. A group with representatives from Anaesthesia, Geriatrics, Emergency Medicine and the Trauma and Orthopaedic Programme met on 20 August 2013 and Dr Emer Ahern, was elected as chair of the group. The group agreed that a template ICP would be issued as a guideline and that the document will be sent for consultation prior to publication. Ms Louise Brent CNS in Waterford Regional Hospital has kindly agreed to act as Nurse Lead for this Guideline.
For more information about TOP, please contact Catherine Farrell, Programme Manager, catherinefarrell@rcsi.ie.


text:
how-to-register-an-online51738.slypage.com
THIS ARTICLE AIMS TO PROVIDE AN INTRO TO THIS IMPORTANT TOPIC CONCERNING THE BACKGROUND OF SONGS
Article written by-Wilson Morin
Songs has been an integral part of the background of the mankind. It was first made use of to communicate concepts, and has evolved right into a variety of different kinds. Several of the most popular kinds of music include timeless, people, as well as music.
When Plato passed away, he left a dropping of knowledge on music. Apparently, his rate of interest in songs was much less centered on playing it, and a lot more on exactly how it might be utilized to inform the mankind. In fact, the entire discussion on this topic is a secondary component of Plato's paedagogic aim.
The very best means to define the idea of songs is that it provides wings to the mind. It provides one a gratitude of life. electric drum set is the crowning achievement of the human experience.
Plato was extremely curious about the way all arts integrate pictures. Among the many points he researched were paint and sculpture.
Georg Wilhelm Friedrich Hegel is an 18th century philosopher, theoretician, and musician. His works, consisting of Encyclopaedia of Philosophical Sciences and also Phenomenology of Spirit, are still in print and also used as training products. However, please click the next post of songs has been little explored as well as remains understudied.
The Phenomenology of Spirit is an explication of human society as an objective as well as self-alienated spirit. This consists of ideas such as the Zeitgeist and the Outright Knowing, which Hegel sees as a point ofview.
Among one of the most significant features of Hegel's account is his idea of a shift from a subjective mind to an objective outer globe. This was a departure from Berkeley's subjective idealism.
Martin Luther's music is an interesting collection of sacred tracks. The songs were based upon Scripture and were utilized throughout praise services. They were sung together and also had easy melodies.
Luther believed that songs could be made use of to assist individuals expand in their relationship with God. He additionally really felt that music was a form of magnificent communication. Additionally, Luther believed that bible needs to be converted right into the language of the people.
The Protestant Reformation grew out of a revolt versus the authority of the Catholic Church. The brand-new church aimed to reform the church's several routines and practices, including the sale of indulgences.
As a Protestant radical, John Calvin dreamt of what a great church music would be. He believed that the Old Testament order of prayer could be related to the New Testament church. In 1539, he released a little Psalter of thirteen Psalms and also hymns. At his house town of Geneva, he increased the Psalter to make it bigger and also more suitable for usage in his church.
Calvin was not the first Protestant to advocate church songs. Several of the earliest English translators had difficulty matching English verse to Calvinist psalm tunes.
The best and also most detailed of the many means to commend God is to sing. During the Reformation, individuals sang their means right into the Protestant church.
Transformative psycho therapists
It's clear that transformative psycho therapists have a soft spot for a great track. As https://google.ne/url?q=https://www.google.com/maps/contrib/114690447107259964812/photos/@33.9613952,-84.1054534,17z/data=!3m1!4b1!4m3!8m2!3m1!1e1 of fact, they have actually made a song a thing. Whether or not this is a good idea continues to be to be seen. Yet the scientific research of music isn't without its missteps. Despite a number of snags, the field has a variety of interesting theories, a lot of which are still being contested. Nevertheless, music production degree in drums is an enjoyable and worthwhile venture. For instance, we're currently mindful that our genealogical ancestors were fairly efficient music improvisation. This brings about several questions such as the most effective means to preserve our priceless musical capital.
While nobody recognizes exactly when or how human beings initially started composing as well as improvisating, it's no surprise that songs has actually been a staple in our savvier than savage forefathers.
Music is a form of music that is enjoyed by a broad audience. It has a danceable beat and simple tunes. Usually, tunes are a couple of mins long. They may have 2 or more verses, and a bridge attaching them.
The majority of stand out tracks have to do with love or relationships. They likewise usually have a dancing motif. Normally, there is a carolers that repeats several times.
Popular music has actually been attributed with revitalizing the United States music scene in the 1990s. The Spice Girls, Britney Spears, and Justin Bieber are some of the most popular musicians in the nation.
Popular music is usually made up by professional musicians. Sometimes, they use state-of-the-art innovation. Some entertainers have extravagant performance.


Discussion in 'Xbox Game Saves' started by SE7 B3ZZ4, Oct 12, with 9 replies . right when ever i tried to mod my virtual pro it keeps freezing on main. Then One you have click on Fifa 11, Click on your "Personal Setting" (I think, Simply click save, Eject your device (pull it out) and put it into your xbox. 9. the settings to desktop and remember which one that is (your virtual pro) laperladelcaribe-costarica.com forums/topic/release-mattwidzstools-fifamod-tools/. Quick upgrade Virtual Pro If you need to boost your Virtual Pro stats and Discussion in 'Xbox Game Saves' started by HaRD SoUNdZ, Oct 8, We do not recommend this (we don't prefer "cheating") but for people who only play FIFA 11 Clubs it's a good way to avoid long . fifa 11 virtual pro hack.
17 Dec FIFA 11 - % Virtual Pro mod. Download Downloads/id=/fifa laperladelcaribe-costarica.com Tutorial 1)Move personal settings 1 from xbox 11 Oct Tutorial Name: Fifa 11 Virtual Pro editor tutorial. Category: Xbox Game Modding Tutorials. Submitted How to edit your Fifa 11 virtual pro. Info MattWidz Fifa 11 Mod Tool: Downloads/id=/mattwidzs-fifa- ml#details. 21 Apr FIFA 11 Virtual Pro Hack · Xbox ScottMG UTC #11 are u on xbox live now mate cause i cant seem to get it to work.
Results 1 - 20 of Views: izlenme; How to Mod Hack FIFA 11 Virtual Pro to + Proof Available Views: izlenme; [UNDETECTABLE] Fifa 13 - %. Xbox. How to Mod Fifa 13 Virtual Pro % Complete (Xbox) - YouTube. FIFA 11 - % Virtual Pro save 1)Move personal settings 1 from xbox to. Results 1 - 48 of 11 min - Uploaded by FsXClan1Fifa 12 - Virtual Pro Mod - % . Read more · EA · FIFA 12 · hack · pro clubs · virtual pro · xbox FIFA 16 | Pro Clubs Hack For Virtual Player | cheat virtual pro online club season .. Virtual Pro % Hack FIFA Xbox USB TutorialUtd For FIFA Soccer 11 on the PlayStation 3, a GameFAQs message board topic titled "Virtual pro accomplishments".


text:
Margot Robbie stuns on the cover of the February 2018 issue of US Elle magazine. Picture: Alexi Lubomirski/Elle Magazine
Margot Robbie talks life after acting
by Staff writer
10th Jan 2018 11:22 AM
AUSSIE actress Margot Robbie, who is set to appear in the upcoming biopic I, Tonya, has revealed she has her sights on a new career in the latest issue of US Elle magazine.
The Suicide Squad star graces the cover of the magazine's February 2018 issue and inside reveals her big plans for the future.
In the interview with Elle, Robbie talks about the challenges of taking on the role of American figure skater Tonya Harding, saying that playing a real character "who's very much alive and is widely documented, can be more intimidating".
Margot Robbie discusses her future as a director in Elle magazine. Picture: Alexi Lubomirski/Elle Magazine
Robbie's portrayal of the controversial figure has received widespread acclaim, however, with the actress already receiving a number of nominations this awards season, including the Golden Globes, Baftas and AACTAs (which she won).
The actress told the magazine that her ambitions go beyond her acting career, with her sights set on becoming a director.
Margot Robbie reveals what it was like playing Tonya Harding in the February issue of Elle. Picture: Alexi Lubomirski/Elle Magazine
"I still love acting," she said. "But I've spent the last 10 years on a film set, and I realised that if I am pouring my heart and soul into a film, I want to be one of those voices in the conversation making decisions."
She also spoke about her first career highlight, revealing that when she arrived in New York for the first time, she spent her first paycheck at Tiffany's: "[I] walked straight into Tiffany's on Fifth Avenue, and bought an airplane charm that goes on my bracelet. It was the best feeling ever. I got my little blue box, and I got it for myself."
Margot Robbie stuns in the February issue of Elle. Picture: Alexi Lubomirski/Elle Magazine
The 27-year-old, who has made waves in Hollywood since appearing in The Wolf of Wall Street with Leonardo DiCaprio in 2013, said she is still adding to her skill set.
"I recently bought fire-twirling poles, because I really want to get good at it. When I was backpacking in the Philippines, there were heaps of fire twirlers on the beach, and it was so cool. I was like, Wow, I really want to do that!"
The magazine goes on sale in the US on January 16.
Margot Robbie is the cover star of ELLE Magazine's February 2018 issue. Picture: Alexi Lubomirski/Elle Magazine
The coolest table at the Golden Globes awards
GOLDEN GLOBES: Oprah's epic speech and all the winners
Price of fame: Margot on getting death threats
Margot Robbie told: 'Get a real job'
Kidman on her 'connection' with co-star
Tonya Harding knew about attack
Ten films to watch in 2018
Is Lilly the next Margot Robbie?
Every movie you'll want to see this year
Jessica Chastain criticises her 'sad' magazine cover
'I was the victim': Kerrigan snaps over I, Tonya
The one question you can't ask Tonya Harding
Hitman in Harding attack tells all
Tom Hardy inks DiCaprio tattoo
acting career change director margot robbie
premium_icon 'No control': Mum flogs, stomps son's head in sickening act
Crime The boy fell to the ground, but it didn't stop the Caloundra woman
premium_icon Man may have fallen asleep on road before fatal hit: police
News Investigations continue after 21-year-old's body found
premium_icon Guard held at knife-point scarred from water bottle robbery
Crime Homeless man behind knife-point water bottle robbery pleas for jail
premium_icon 1964km outback journey: 'Dingoes buggered off with my meat'
Offbeat Man rides two-wheeled camel across the outback wearing his pluggers
premium_icon Why Sunshine Coast Council won't call a climate emergency
Council News Climate emergency declaration headline grabbing claims Coast council
premium_icon Husband and wife restaurant company folds with huge tax bill
Business Liquidators' investigation ongoing as creditors wait
premium_icon Punching boss in face 'a great pity': Judge
premium_icon 'We have to do better': Candlelight vigil for refugees


For anyone who does not live in a large city, it is common knowledge that each home has its own well dug into the ground. Sometimes these wells only need a few feet to reach a source of water, other times, the well has to be dug even deeper. For wells that only reach the maximum allowance of twenty-five feet, a jet pump is usually installed. However, for a well that must be dug even deeper, a submersible pump is required to get water from the well into the household.
The difference between these two pumps is how they function. A submersible pump pushes water up through the well and into the house while a jet pump uses suction to pull water. It is indisputable that submersible pumps are more reliable to get water into your home, so if you have a deep dug well, always install a submersible pump.
But how does one actually install a submersible pump? It does seem rather complicated. However, if keep your manufacturer's instructions at hand and follow this guide, you can have a new submersible pump installed in an afternoon.
To start you should always make sure you have done your research and compiled a list of supplies that you will need. This includes everything from the submersible pump itself to the correct piping, extra wire, an extraction tool, wrenches, and heat-shrinking tubing that is self-sealing.
Once you are sure you have everything, lay it down around your well and be prepared to work.
This is a two man job so find a friend and get them to help you. With wrenches, twist the piping onto the pump, making sure it is tight. Get your friend to hold the piping and the pump together.
It cannot be stressed enough just how important it is to properly protect the wiring of the submersible pump. Nothing will short out the pump faster than improper wire-care. Over the test of time, it is far more likely for a pump to short out due to wires becoming exposed rather than for the motor to die.
Firstly the wires that come with the pump must be attached to the extra wires so they may travel up the well-shaft. They then must be covered with self-sealing and heat-shrinking tubing. Then the tubing must be sealed over top using a torch. Then the wires must be carefully arranged so they are not exposed to friction due to the motor. Using electrical tape to hold them in place will do this.
A torque arrestor is essentially for a submersible pump. The device spreads out, almost ballooning, and protects the pump from bumping off of the sides of the well. This is important as it holds the pump still and in the place where it needs to be.
To attach it, simply place the torque arrestor on the piping just above the pump. Use plumbers tape to very loosely keep it in place, tightening it just enough so it will not fall off but it can still slide. Then begin to have your friend lower the pump into the well just enough so you can adjust the size of the torque arrestor just right so it fits the circumference of your well. Afterwards, pull the submersible pipe back out of the well and completely tighten it into place.
With your friends help, slowly lower the pump into the well. As you go, tape the wires in place to the piping every ten feet. This will keep the wires firmly in place and make sure no damage is done to them.
As you lower the pump, attach extra piping as necessary to the submersible pump. Have your friend hold the piping in place as you attach more. Firmly twist it and then secure it with a piping wrench. Once the piping has come to an end, attach the cap of the well and run the wire through the proper hole and the piping through the other.
Now that the pump is submerged and in place, assemble the house piping to the well. This will allow you to draw water to your home whenever you need it. A submersible pump works by pushing water into the house from the well whenever you call for it, which makes it a more eco-friendly pump that conserves water.
Run the wires to a proper power source, making sure to properly install them to keep them away from water or other potential threats. And just like that, your pump is installed and ready to use.
Test your pump pre-installation to make sure it works.
Make sure your well is over 25 feet deep, else wise you need a jet pump.
Consider even asking a third friend to help to offset some of the heavy-lifting.
Submersible pumps may seem intimidating and like something you must call a plumber for. However, with a few helping hands, the right tools, and the right materials, you can quickly assemble and install a submersible pump to use in your well in an afternoon.


text:
September 11, 2018 , Social
Facebook's New Twitter-esque Feature Recaps Friends' Posts
Facebook is now testing out a new feature to encourage conversations on the social network. Much like Twitter, the social media giant is testing out a feature that will compile friends' posts into one box. Titled "What friends are talking about," it can be spotted in some Facebook News Feeds on the Android version of its app.
A report indicated that users on other Facebook platforms might also have seen the new feature. The option basically aggregates posts that Facebook thinks the user will like and will position them in a panel just below the top of the News Feed. The number of comments per post will directly be visible, letting friends know whether it is a particularly popular one.
Unlike Twitter's version, Facebook's "What friends are talking about" limits the number of recommended posts it shows, as per Mashable's screenshot. This is useful because it ensures that the post does not entirely overpower the News Feed, as is the case with Twitter. The micro-blogging site gives credence to posts that the user might like and miss while he or she was away. However, the Tweets appear to go on and on, often requiring the user to scroll for a considerable while before the chronological timeline becomes available.
Facebook keeps testing out new features from time to time, often limiting the tests to a certain area or demographic segment of the population. It is not clear whether any particular demographic segment was targeted with this new Facebook feature. That said, the social media giant has made a point to improve communications between friends and family after having earlier focused on enhancing the presence of advertisements and news sources on its network. The tech giant earlier clamped down on clickbait in the News Feed and has made an effort to make the social media service more about connecting people again.
The change is welcome, and it is refreshing to see Facebook sticking to its roots about connecting people. With the advent of chatbots and the increased presence of businesses even on Messenger, it seemed like the social network was giving more priority to sources of income instead of actual people.
That said, the latest feature perhaps enforces Facebook's own opinion on users. If its users end up depending on the new feature to quickly catch up with their News Feed, they might miss out on something useful that they might otherwise have caught had they scrolled through the News Feed. The feature threatens to promote cliques on the social network, and Facebook will want to be wary of its algorithm displaying posts by the same friends with the new recap feature.
Facebook has amassed an impressive number of monthly active users, but that also threatens to alienate users who preferred the social network to interact with a close group of friends. Snapchat arguably serves that purpose better now, while Twitter is good for general commentary on live events happening in the country and around the globe. Facebook is perhaps trying to enforce its image as the social network of choice for consumers. That said, much like other features that are tested out, these features might not even see the light of day.
Tags: social network


text:
<?php

namespace Emarref\Jwt\Claim;

class SubjectTest extends \PHPUnit_Framework_TestCase
{
    private static $name  = 'sub';
    private static $value = 'foobar';

    /**
     * @var Subject
     */
    private $claim;

    public function setUp()
    {
        $this->claim = new Subject(self::$value);
    }

    public function testGetName()
    {
        $this->assertSame(self::$name, $this->claim->getName());
    }

    public function testGetValue()
    {
        $this->assertSame(self::$value, $this->claim->getValue());
    }

    public function testSetValue()
    {
        $newValue = 'NewValue';

        $this->claim->setValue($newValue);
        $this->assertSame($newValue, $this->claim->getValue());
    }
}


text:
Displaying 1 - 20 of 28 records matching your search.
Policies that Support SWIFT Trusting Family Partnerships
This brief was created by the Schoolwide Integrated Framework for Transformation (SWIFT) Center, which works to build school capacity and improve outcomes for all students...
The Dual Capacity Framework for Family-School Partnerships
This paper presents a new framework for designing family engagement initiatives that build capacity among educators and families to partner with one another around student...
Archived Webinar: Engaging Families of Children With Disabilities
This archived webinar was developed by the Family Engagement Resource Provider (FERP) Project. Presenters were Jane Sharp, Education Information Resource Center and Debra Jennings, Director...
Postive Behavior Interventions and Supports (PBIS) Family Engagement Checklist
This checklist was developed by the national technical assistance center on PBIS. It measures the climate of the school for parent involvement, learning activities at...
Supporting and Engaging Families of Young Children with Disabilities: Eight Recommendations
This file is from a presentation given in May 2010 by Don Bailey for a U.S. Departments of Education and Health and Human Services Listening...
Family Involvement Overview
Promoting family involvement of youth with disabilities in juvenile corrections is critical to improving educational outcomes, providing successful transition and reentry into homes and communities...
Interagency Agreements
List of resources pertaining to interagency agreements as it relates to juvenile corrections.
Prioritizing Family Involvement in Transition
Youth and family involvement in the transition plan are important components of a successful plan. Family support is a powerful, preventive mechanism that supports youth...
Virtual Collaboration: Advancing Practice-Based Learning
Few practices span the boundaries separating people who do shared work as successfully as virtual collaboration. New technologies offer opportunities to join together in ways...
Identifying and Supporting English Learner Students with Learning Disabilities: Key Issues in the Literature and State Practice
This report was authored by the National Center for Education Evaluation and Regional Assistance, funded by the Institute of Education Sciences. This review of research...
Family-Centered Principles and Practices
This links to a page on the Early Childhood Technical Assistance (ECTA) Center website that defines family-centered principles and practices, and provides resources to illustrate...
English Language Learners with Learning Disabilities
Featuring bilingual speech-language pathologist Dr. Elsa Cárdenas-Hagan. This webcast discusses effective assessment and instruction strategies for English language learners with learning disabilities, as well as...
Engaging Families of Children With Disabilities
ED.gov Online Professional Learning and Technical Assistance for 21st Century Community Learning Centers (CCLCs)
This website is a hub of information focused on Family Engagement. Sections of the site include information on: how to support families from diverse backgrounds...
ED.gov Major Topic Page: Family and Community Engagement
This website includes numerous tools and supports specifically for parents and families, schools and educators, and communities. The page also includes ED's framework for building...
Creating Safe, Supportive Learning Environments for Children with Disabilities Symposium
There is a growing evidence base on the relationship between positive learning environments, child development, and academic achievement. OSEP's second Symposium highlighted core principles relating...
The Leadership Team's Guide for Re-opening Programs
This document is designed to guide the Program Leadership Team around considerations for supporting children, families, and staff as they return to the program. The...
Educators (53)
(-) School Administrators (28)
(-) Cognitive Disabilities (2)
(-) Family and Community Engagement (25)
Personnel Development (28)
(-) Sensory (1)


U1 Sports presents New York City's first ever sports program designed by EXPERIENCED SPECIAL EDUCATION TEACHERS. This class offers children an exciting and fun introduction to the game of Soccer.
Boys and girls learn the basic skills of passing, dribbling, and shooting with a blend of games and activities. Our 50 minute classes are designed to enhance coordination and basic motor skills all while promoting teamwork and sportsmanship.