text:
create-* commands actually end up creating
unit tests automatically for you. For example say you run the create-controller command as follows:
Not only will Grails create a controller at
grails create-controller com.yourcompany.yourapp.simple
grails-app/controllers/com/yourcompany/yourapp/SimpleController.groovy, but also an unit test at
test/unit/com/yourcompany/yourapp/SimpleControllerTests.groovy. What Grails won't do however is populate the logic inside the test! That is left up to you.
As of Grails 1.2.2,the suffix of
Test is also supported for test cases.
Running TestsTest are run with the test-app command:
The above command will produce output such as:
grails test-app
Whilst reports will have been written out the
------------------------------------------------------- Running Unit Tests… Running test FooTests...FAILURE Unit Tests Completed in 464ms … -------------------------------------------------------Tests failed: 0 errors, 1 failures
target/test-reports directory.
You can force a clean before running tests by passing
-cleanto the
Targeting TestsYou can selectively target the test(s) to be run in different ways. To run all tests for a controller named
SimpleController you would run:
This will run any tests for the class named
grails test-app SimpleController
SimpleController. Wildcards can be used...
This will test all classes ending in
grails test-app *Controller
Controller. Package names can optionally be specified...
or to run all tests in a package...
grails test-app some.org.*Controller
or to run all tests in a package including subpackages...
grails test-app some.org.*
You can also target particular test methods...
grails test-app some.org.**
This will run the
grails test-app SimpleController.testLogin
testLogin test in the
SimpleController tests. You can specify as many patterns in combination as you like...
grails test-app some.org.* SimpleController.testLogin BookController
Targeting Test Types and/or PhasesIn addition to targeting certain tests, you can also target test types and/or phases by using the
phase:type syntax.
Grails organises tests by phase and by type. A test phase relates to the state of the Grails application during the tests, and the type relates to the testing mechanism.Grails comes with support for 4 test phases (To execute the JUnit
other) and JUnit test types for the
integrationphases. These test types have the same name as the phase.Testing plugins may provide new test phases or new test types for existing phases. Refer to the plugin documentation.
integration tests you can run:
grails test-app integration:integration
phase and
type are optional. Their absence acts as a wildcard. The following command will run all test types in the
unit phase:
The Grails Spock Plugin is one plugin that adds new test types to Grails. It adds a
grails test-app unit:
spock test type to the
integration and
functional phases. To run all spock tests in all phases you would run the following:
To run the all of the spock tests in the
grails test-app :spock
functional phase you would run...
More than one pattern can be specified...
grails test-app functional:spock
grails test-app unit:spock integration:spock
Targeting Tests in Types and/or PhasesTest and type/phase targetting can be applied at the same time:
This would run all tests in the
grails test-app integration: unit: some.org.**
integration and
unit phases that are in the page
some.org or a subpackage of.
9.1 Unit TestingUnit testing are tests at the "unit" level. In other words you are testing individual methods or blocks of code without considering for surrounding infrastructure. In Grails you need to be particularity aware of the difference between unit and integration tests because in unit tests Grails does not inject any of the dynamic methods present during integration tests and at runtime.This makes sense if you consider that the methods injected by Grails typically communicate with the database (with GORM) or the underlying Servlet engine (with Controllers). For example say you have service like the following in
As you can see the service takes advantage of GORM methods. So how do you go about testing the above code in a unit test? The answer can be found in Grails' testing support classes.
class MyService { def otherService String createSomething() { def stringId = otherService.newIdentifier() def item = new Item(code: stringId, name: "Bangle") item.save() return stringId } int countItems(String name) { def items = Item.findAllByName(name) return items.size() } }
The Testing FrameworkThe core of the testing plugin is the
grails.test.GrailsUnitTestCase class. This is a sub-class of
GroovyTestCase geared towards Grails applications and their artifacts. It provides several methods for mocking particular types as well as support for general mocking a la Groovy's MockFor and StubFor classes.Normally you might look at the
MyService example shown previously and the dependency on another service and the use of dynamic domain class methods with a bit of a groan. You can use meta-class programming and the "map as object" idiom, but these can quickly get ugly. How might we write the test with GrailsUnitTestCase ?
OK, so a fair bit of new stuff there, but once we break it down you should quickly see how easy it is to use the methods available to you. Take a look at the "testCreateSomething()" test method. The first thing you will probably notice is the
import grails.test.GrailsUnitTestCaseclass MyServiceTests extends GrailsUnitTestCase { void testCreateSomething() { // Mock the domain class. mockDomain(Item) // Mock the "other" service. String testId = "NH-12347686" def otherControl = mockFor(OtherService) otherControl.demand.newIdentifier(1..1) {-> return testId } // Initialise the service and test the target method. def testService = new MyService() testService.otherService = otherControl.createMock() def retval = testService.createSomething() // Check that the method returns the identifier returned by the // mock "other" service and also that a new Item instance has // been saved. def testInstances = Item.list() assertEquals testId, retval assertEquals 1, testInstances.size() assertTrue testInstances[0] instanceof Item } void testCountItems() { // Mock the domain class, this time providing a list of test // Item instances that can be searched. def testInstances = [ new Item(code: "NH-4273997", name: "Laptop"), new Item(code: "EC-4395734", name: "Lamp"), new Item(code: "TF-4927324", name: "Laptop") ] mockDomain(Item, testInstances) // Initialise the service and test the target method. def testService = new MyService() assertEquals 2, testService.countItems("Laptop") assertEquals 1, testService.countItems("Lamp") assertEquals 0, testService.countItems("Chair") } }
mockDomain() method, which is one of several provided by
It adds all the common domain methods (both instance and static) to the given class so that any code using it sees it as a full-blown domain class. So for example, once the
def testInstances = [] mockDomain(Item, testInstances)
Item class has been mocked, we can safely call the
save() method on instances of it. Invoking the
save() method doesn't really save the instance to any database but it will cache the object in the testing framework so the instance will be visible to certain queries. The following code snippet demonstrates the effect of calling the
save() method.
The next bit we want to look at is centered on the
void testSomething() { def testInstances=[] mockDomain(Song, testInstances) assertEquals(0, Song.count()) new Song(name:"Supper's Ready").save() assertEquals(1, Song.count()) }
mockFor method:
This is analagous to the
def otherControl = mockFor(OtherService)
otherControl.demand.newIdentifier(1..1) {-> return testId }
MockFor and
StubFor classes that come with Groovy and it can be used to mock any class you want. In fact, the "demand" syntax is identical to that used by Mock/StubFor, so you should feel right at home. Of course you often need to inject a mock instance as a dependency, but that is pretty straight forward with the
createMock() method, which you simply call on the mock control as shown. For those familiar with EasyMock, the name
otherControl highlights the role of the object returned by
mockFor() - it is a control object rather than the mock itself.The rest of the
testCreateSomething() method should be pretty familiar, particularly as you now know that the mock
save() method adds instances to
testInstances list. However, there is an important technique missing from the test method. We can determine that the mock
newIdentifier() method is called because its return value has a direct impact on the result of the
createSomething() method. But what if that weren't the case? How would we know whether it had been called or not? With Mock/StubFor the check would be performed at the end of the
use() closure, but that's not available here. Instead, you can call
verify() on the control object - in this case
otherControl. This will perform the check and throw an assertion error if it hasn't been called when it should have been.Lastly,
testCountItems() in the example demonstrates another facet of the
mockDomain() method:
It is normally quite fiddly to mock the dynamic finders manually, and you often have to set up different data sets for each invocation. On top of that, if you decide a different finder should be used then you have to update the tests to check for the new method! Thankfully the
def testInstances = [ new Item(code: "NH-4273997", name: "Laptop"), new Item(code: "EC-4395734", name: "Lamp"), new Item(code: "TF-4927324", name: "Laptop") ] mockDomain(Item, testInstances)
mockDomain() method provides a lightweight implementation of the dynamic finders backed by a list of domain instances. Simply provide the test data as the second argument of the method and the mock finders will just work.
GrailsUnitTestCase - the mock methodsYou have already seen a couple of examples in the introduction of the
mock..() methods provided by the
GrailsUnitTestCase class. Here we will look at all the available methods in some detail, starting with the all-purpose
mockFor(). But before we do, there is a very important point to make: using these methods ensures that any changes you make to the given classes do not leak into other tests! This is a common and serious problem when you try to perform the mocking yourself via meta-class programming, but that headache just disappears as long as you use at least one of
mock..() methods on each class you want to mock.
General purpose mocking that allows you to set up either strict or loose demands on a class.This method is surprisingly intuitive to use. By default it will create a strict mock control object (one for which the order in which methods are called is important) that you can use to specify demands:
mockFor(class, loose = false)
Notice that you can mock static methods as well as instance ones simply by using the "static" property after "demand". You then specify the name of the method that you want to mock with an optional range as its argument. This range determines how many times you expect the method to be called, so if the number of invocations falls outside of that range (either too few or too many) then an assertion error will be thrown. If no range is specified, a default of "1..1" is assumed, i.e. that the method must be called exactly once.The last part of a demand is a closure representing the implementation of the mock method. The closure arguments should match the number and types of the mocked method, but otherwise you are free to add whatever you want in the body.As we mentioned before, if you want an actual mock instance of the class that you are mocking, then you need to call
def strictControl = mockFor(MyService) strictControl.demand.someMethod(0..2) { String arg1, int arg2 -> … } strictControl.demand.static.aStaticMethod {-> … }
mockControl.createMock(). In fact, you can call this as many times as you like to create as many mock instances as you need. And once you have executed the test method, you can call
mockControl.verify() to check whether the expected methods were actually called or not.Lastly, the call:
will create a mock control object that has only loose expectations, i.e. the order that methods are invoked does not matter.
def looseControl = mockFor(MyService, true)
mockDomain(class, testInstances = )Takes a class and makes mock implementations of all the domain class methods (both instance- and static-level) accessible on it.Mocking domain classes is one of the big wins from using the testing plugin. Manually doing it is fiddly at best, so it's great that mockDomain() takes that burden off your shoulders.In effect,
mockDomain() provides a lightweight version of domain classes in which the "database" is simply a list of domain instances held in memory. All the mocked methods (
save() ,
get() ,
findBy*() , etc.) work against that list, generally behaving as you would expect them to. In addition to that, both the mocked
save() and validate() methods will perform real validation (support for the unique constraint included!) and populate an errors object on the corresponding domain instance.There isn't much else to say other than that the plugin does not support the mocking of criteria or HQL queries. If you use either of those, simply mock the corresponding methods manually (for example with
mockFor() ) or use an integration test with real data.
mockForConstraintsTests(class, testInstances = )Highly specialised mocking for domain classes and command objects that allows you to check whether the constraints are behaving as you expect them to.Do you test your domain constraints? If not, why not? If your answer is that they don't need testing, think again. Your constraints contain logic and that logic is highly susceptible to bugs - the kind of bugs that can be tricky to track down (particularly as save() doesn't throw an exception when it fails). If your answer is that it's too hard or fiddly, that is no longer an excuse. Enter the
mockForConstraintsTests() method.This is like a much reduced version of the
mockDomain() method that simply adds a
validate() method to a given domain class. All you have to do is mock the class, create an instance with field values, and then call
validate(). You can then access the errors property on your domain instance to find out whether the validation failed or not. So if all we are doing is mocking the
validate() method, why the optional list of test instances? That is so that we can test unique constraints as you will soon see.So, suppose we have a simple domain class like so:
Don't worry about whether the constraints are sensible or not (they're not!), they are for demonstration only. To test these constraints we can do the following:
class Book { String title String author static constraints = { title(blank: false, unique: true) author(blank: false, minSize: 5) } }
You can probably look at that code and work out what's happening without any further explanation. The one thing we will explain is the way the errors property is used. First, it does return a real Spring
class BookTests extends GrailsUnitTestCase { void testConstraints() { def existingBook = new Book(title: "Misery", author: "Stephen King") mockForConstraintsTests(Book, [ existingBook ]) // Validation should fail if both properties are null. def book = new Book() assertFalse book.validate() assertEquals "nullable", book.errors["title"] assertEquals "nullable", book.errors["author"] // So let's demonstrate the unique and minSize constraints. book = new Book(title: "Misery", author: "JK") assertFalse book.validate() assertEquals "unique", book.errors["title"] assertEquals "minSize", book.errors["author"] // Validation should pass! book = new Book(title: "The Shining", author: "Stephen King") assertTrue book.validate() } }
Errors instance, so you can access all the properties and methods you would normally expect. Second, this particular
Errors object also has map/property access as shown. Simply specify the name of the field you are interested in and the map/property access will return the name of the constraint that was violated. Note that it is the constraint name , not the message code (as you might expect).That's it for testing constraints. One final thing we would like to say is that testing the constraints in this way catches a common error: typos in the "constraints" property! It is currently one of the hardest bugs to track down normally, and yet a unit test for your constraints will highlight the problem straight away.
mockLogging(class, enableDebug = false)Adds a mock "log" property to a class. Any messages passed to the mock logger are echoed to the console.
mockController(class)Adds mock versions of the dynamic controller properties and methods to the given class. This is typically used in conjunction with the
ControllerUnitTestCase class.
mockTagLib(class)Adds mock versions of the dynamic taglib properties and methods to the given class. This is typically used in conjunction with the
TagLibUnitTestCase class.
9.2 Integration TestingIntegration tests differ from unit tests in that you have full access to the Grails environment within the test. Grails will use an in-memory HSQLDB database for integration tests and clear out all the data from the database in between each test.One thing to bear in mind is that logging is enabled for your application classes, but that is different from logging in tests. So if you have something like this:
the "starting tests" message is logged using a different system to the one used by the application. Basically the
class MyServiceTests extends GroovyTestCase { void testSomething() { log.info "Starting tests" … } }
log property in the example above is an instance of
java.util.logging.Logger, which doesn't have exactly the same methods as the
log property injected into your application artifacts. For example, it doesn't have
debug() or
trace() methods, and the equivalent of
warn() is in fact
TransactionsThe integration tests run inside a database transaction by default, which is then rolled back at the end of the tests. This means that data saved during the tests is not persisted to the database. If you actually want to check transactional behaviour of your services and controllers, then you can disable a test's transaction by adding a
transactional property to your test case:
class MyServiceTests extends GroovyTestCase { static transactional = false void testMyTransactionalServiceMethod() { … } }
Testing ControllersTo test controllers you first have to understand the Spring Mock Library.Essentially Grails automatically configures each test with a MockHttpServletRequest, MockHttpServletResponse, and MockHttpSession which you can then use to perform your tests. For example consider the following controller:
The tests for this would be:
class FooController { def text = { render "bar" } def someRedirect = { redirect(action:"bar") } }
In the above case the response is an instance of
class FooControllerTests extends GroovyTestCase { void testText() { def fc = new FooController() fc.text() assertEquals "bar", fc.response.contentAsString } void testSomeRedirect() { def fc = new FooController() fc.someRedirect() assertEquals "/foo/bar", fc.response.redirectedUrl } }
MockHttpServletResponse which we can use to obtain the
contentAsString (when writing to the response) or the URL redirected to for example. These mocked versions of the Servlet API are, unlike the real versions, all completely mutable and hence you can set properties on the request such as the
contextPath and so on.Grails does not invoke interceptors or servlet filters automatically when calling actions during integration testing. You should test interceptors and filters in isolation, and via functional testing if necessary.
Testing Controllers with ServicesIf your controller references a service (or other Spring beans), you have to explicitly initialise the service from your test.Given a controller using a service:
The test for this would be:
class FilmStarsController {
def popularityService def update = {
// do something with popularityService
class FilmStarsTests extends GroovyTestCase { def popularityService void testInjectedServiceInController () { def fsc = new FilmStarsController() fsc.popularityService = popularityService fsc.update() } }
Testing Controller Command ObjectsWith command objects you just supply parameters to the request and it will automatically do the command object work for you when you call your action with no parameters:Given a controller using a command object:
You can then test it like this:
class AuthenticationController { def signup = { SignupForm form -> … } }
Grails auto-magically sees your call to
def controller = new AuthenticationController() controller.params.login = "marcpalmer" controller.params.password = "secret" controller.params.passwordConfirm = "secret" controller.signup()
signup() as a call to the action and populates the command object from the mocked request parameters. During controller testing, the
params are mutable with a mocked request supplied by Grails.
Testing Controllers and the render MethodThe render method allows you to render a custom view at any point within the body of an action. For instance, consider the example below:
In the above example the result of the model of the action is not available as the return value, but instead is stored within the
def save = { def book = Book(params) if(book.save()) { // handle } else { render(view:"create", model:[book:book]) } }
modelAndView property of the controller. The
modelAndView property is an instance of Spring MVC's ModelAndView class and you can use it to the test the result of an action:
def bookController = new BookController()
def model = bookController.modelAndView.model.book
Simulating Request DataIf you're testing an action that requires request data such as a REST web service you can use the Spring MockHttpServletRequest object to do so. For example consider this action which performs data binding from an incoming request:
If you wish the simulate the 'book' parameter as an XML request you could do something like the following:
def create = {
[book: new Book(params['book']) ]
The same can be achieved with a JSON request:
void testCreateWithXML() { def controller = new BookController() controller.request.contentType = 'text/xml' controller.request.content = '''<?xml version="1.0" encoding="ISO-8859-1"?> <book> <title>The Stand</title> … </book> '''.getBytes() // note we need the bytes def model = controller.create() assert model.book assertEquals "The Stand", model.book.title }
void testCreateWithJSON() { def controller = new BookController() controller.request.contentType = "text/json" controller.request.content = '{"id":1,"class":"Book","title":"The Stand"}'.getBytes() def model = controller.create() assert model.book assertEquals "The Stand", model.book.title }
With JSON don't forget theFor more information on the subject of REST web services see the section on REST.
classproperty to specify the name the target type to bind too. In the XML this is implicit within the name of the
<book>node, but with JSON you need this property as part of the JSON packet.
Testing Web FlowsTesting Web Flows requires a special test harness called
grails.test.WebFlowTestCase which sub classes Spring Web Flow's AbstractFlowExecutionTests class.
Subclasses of For example given this trivial flow:
WebFlowTestCase must be integration tests
You need to tell the test harness what to use for the "flow definition". This is done via overriding the abstract
class ExampleController { def exampleFlow = { start { on("go") { flow.hello = "world" }.to "next" } next { on("back").to "start" on("go").to "subber" } subber { subflow(action: "sub") on("end").to("end") } end() } def subFlow = { subSubflowState { subflow(controller: "other", action: "otherSub") on("next").to("next") } … } }
If you need to specify the flow id you can do so by overriding the getFlowId method otherwise the default is
class ExampleFlowTests extends grails.test.WebFlowTestCase { def getFlow() { new ExampleController().exampleFlow } … }
If the flow under test calls any subflows, these (or mocks) need to be registered before the calling flow :
class ExampleFlowTests extends grails.test.WebFlowTestCase { String getFlowId() { "example" } … }
Once this is done in your test you need to kick off the flow with the
protected void setUp() { super.setUp() registerFlow("other/otherSub") { // register a simplified mock start { on("next").to("end") } end() } registerFlow("example/sub", new ExampleController().subFlow) // register the original subflow }
startFlow method:
To trigger and event you need to use the
void testExampleFlow() { def viewSelection = startFlow() … }
signalEvent method:
Here we have signaled to the flow to execute the event "go" this causes a transition to the "next" state. In the example a transition action placed a
void testExampleFlow() { … signalEvent("go") assert "next" == flowExecution.activeSession.state.id assert "world" == flowScope.hello }
hello variable into the flow scope.
Testing Tag LibrariesTesting tag libraries is actually pretty trivial because when a tag is invoked as a method it returns its result as a string. So for example if you have a tag library like this:
The tests would look like:
class FooTagLib { def bar = { attrs, body -> out << "<p>Hello World!</p>" } def bodyTag = { attrs, body -> out << "<${attrs.name}>" out << body() out << "</${attrs.name}>" } }
Notice that for the second example,
class FooTagLibTests extends GroovyTestCase { void testBarTag() { assertEquals "<p>Hello World!</p>", new FooTagLib().bar(null,null).toString() } void testBodyTag() { assertEquals "<p>Hello World!</p>", new FooTagLib().bodyTag(name:"p") { "Hello World!" }.toString() } }
testBodyTag, we pass a block that returns the body of the tag. This is handy for representing the body as a String.
Testing Tag Libraries with GroovyPagesTestCaseIn addition to doing simply testing of tag libraries like the above you can also use the
grails.test.GroovyPagesTestCase class to test tag libraries.The
GroovyPagesTestCase class is a sub class of the regular
GroovyTestCase class and provides utility methods for testing the output of a GSP rendering.
As an example given a date formatting tag library such as the one below:
GroovyPagesTestCase can only be used in an integration test.
This can be easily tested as follows:
class FormatTagLib {
def dateFormat = { attrs, body ->
out << new java.text.SimpleDateFormat(attrs.format) << attrs.date
You can also obtain the result of a GSP using the
class FormatTagLibTests extends GroovyPagesTestCase { void testDateFormat() { def template = '<g:dateFormat format="dd-MM-yyyy" date="${myDate}" />' def testDate = … // create the date assertOutputEquals( '01-01-2008', template, [myDate:testDate] ) } }
applyTemplate method of the
GroovyPagesTestCase class:
class FormatTagLibTests extends GroovyPagesTestCase { void testDateFormat() { def template = '<g:dateFormat format="dd-MM-yyyy" date="${myDate}" />' def testDate = … // create the date def result = applyTemplate( template, [myDate:testDate] ) assertEquals '01-01-2008', result } }
Testing Domain ClassesTesting domain classes is typically a simple matter of using the GORM API, however there are some things to be aware of. Firstly, if you are testing queries you will often need to "flush" in order to ensure the correct state has been persisted to the database. For example take the following example:
This test will actually fail, because calling save does not actually persist the
void testQuery() { def books = [ new Book(title:"The Stand"), new Book(title:"The Shining")] books*.save() assertEquals 2, Book.list().size() }
Book instances when called. Calling
save merely indicates to Hibernate that at some point in the future these instances should be persisted. If you wish to commit changes immediately you need to "flush" them:
In this case since we're passing the argument
void testQuery() { def books = [ new Book(title:"The Stand"), new Book(title:"The Shining")] books*.save(flush:true) assertEquals 2, Book.list().size() }
flush with a value of
true the updates will be persisted immediately and hence will be available to the query later on.
9.3 Functional TestingFunctional tests involve making HTTP requests against the running application and verifying the resultant behaviour. Grails does not ship with any support for writing functional tests directly, but there are several plugins available for this.
Canoo Webtest- http://grails.org/plugin/webtest
G-Func- http://grails.org/plugin/functional-test
Selenium-RC- http://grails.org/plugin/selenium-rc
WebDriver- http://grails.org/plugin/webdriver
Geb- http://grails.org/plugin/geb
Common OptionsThere are options that are common to all plugins that control how the Grails application is launched, if at all.
-inline option specifies that the grails application should be started inline (i.e. like
run-app).This option is implicitly set unless the
baseUrl or
war options are set
-war option specifies that the grails application should be packaged as a war and started. This is useful as it tests your application in a production like state, but it has a longer startup time than the
-inline option. It also runs the war in a forked JVM, meaning that you cannot access any internal application objects.
Note that the same build/config options for the run-war command apply to functional testing against the WAR.
grails test-app functional: -war
-https option results in the application being able to receive https requests as well as http requests. It is compatible with both the
-inline and
-war options.
Note that this does not change the test base url to be https, it will still be http unless the
grails test-app functional: -https
-httpsBaseUrl option is also given.
-httpsBaseUrl causes the implicit base url to be used for tests to be a https url.
This option is ignored if the
grails test-app functional: -httpsBaseUrl
-baseUrl option is given.
baseUrl option allows the base url for tests to be specified.
This option will prevent the local grails application being started unless
grails test-app functional: -baseUrl=http://mycompany.com/grailsapp
-inline or
-war are given as well. If you want to use a custom base url, but still want to test against the local Grails application you must specify one of either the
-inline or
-war options.


text:
(YouTube link for mobile viewing)
The way that we learn is rapidly changing, and the tools that are used in educational environments are changing just as quickly. The above video demonstrates how social learning, direct communication and on-demand media can empower professors, students and educational organizations – all through the use of BlackBerry® solutions. The video highlights how Wilfrid Laurier University partnered with Research In Motion® (RIM®) to provide BlackBerry® smartphones to MBA students, giving them access to mobile learning tools and better ways to collaborate with their classmates. The University faculty were also given BlackBerry smartphones, and the school and the Student Union have developed mobile apps.
Of particular note is BlackBerry pushcast software, which has been designed to allow creation and distribution of rich-media content to a variety of individual users and groups. The key relevance of BlackBerry pushcast software to education is the fact that beyond the text, videos, and photos, the solution additionally offers testing, quizzes, and tracking. Finally, the solution is designed to be secure, and to allow users to use it confidently in the most rigorous of academic scenarios.
Education, however, is just the beginning. BlackBerry pushcast software is being used around the world by a wide variety of industries for everything from weekly sales reports to training videos for new employees. Find out more about BlackBerry pushcast!
How do you think BlackBerry technology could positively impact education?

subset: commoncrawl


text:
Articles › Foreign Language
The Use of Works of Art in a 2nd Semester German Course by Dagmar Jaeger
This VoiceThread shows how students can engage with a work of art in an active, personal and innovative way while practicing new vocabulary and grammar structures in the target language. This conversation also fosters collaboration among students inside and outside the language classroom.
Note that comments begin after the assignment description, on slide 5.
I selected art works by Austrian artists that depict houses. I wanted students to engage with the work of art in a way that goes beyond merely talking about what you see. The doodling function provided an excellent way to engage with the work of art by diagramming the imagined daily routine in and around the house. The students made it "their" house.
The discussion of art was already part of my lesson plan for my second semester German course. I was looking for ways to engage my students with works of art that go beyond merely talking about what they see in the image. Also, it was important to me that students use the newly acquired vocabulary and grammar related to the home.
First, in the conversation students see three different images of houses. Students are asked to choose their favorite house and - recording their voice - say briefly why they like the house the best. Students then describe a typical daily routine in and around "their" house, using the recording and doodling function.
Second, I asked students to listen to the daily routine of one of their peers, selecting the image of a house they did not choose. In a short essay, students then fill in their peers' narratives about the daily routine by imagining how the life of a fictive person or family in that house would look like.
Third, students read their short essays to each other in groups of 3 or 4, making everyone guess which house they wrote about. In the group, students ask each other questions about the narrative.
To get students used to VoiceThread, you might want to split up the first assignment and ask students to explain why they like the house they chose in a separate VoiceThread.
The VoiceThread


text:
Bands of clouds sweep around Venus in this ultraviolet view from above one of the planet's poles by the Venus Express orbiter. Clouds blanket the entire planet, contributing to the planet's super-heated surface temperatures. [ESA/VIRTIS/INAF-IASF/Obs. de Paris-LESIA]
You are here
Moon and Venus
The solar system is offering a nice treat for the holiday weekend: a conjunction between the Moon and the planet Venus. This evening, look for them quite low in the southwest beginning not long after sunset. Venus is the brilliant "evening star" to the left of the crescent Moon.
Venus is one of the most beautiful objects in the night sky. In fact, it was named for the Roman goddess of love and beauty. Yet it's one of the least beautiful places to visit you'll ever come across.
Its surface is wrapped in a thick, toxic atmosphere. The pressure at the surface is about 90 times greater than the pressure at the surface of Earth. And the atmosphere is made of carbon dioxide, which traps heat, roasting the planet with an average surface temperature of around 850 degrees Fahrenheit.
The atmosphere is topped by an unbroken layer of bright clouds, which help make Venus such a beautiful sight. But they, too, are nasty — they're made of tiny droplets of sulfuric acid. Anything that goes through the clouds needs pretty good shielding to survive.
So even though Venus is our closest planetary neighbor, only a few spacecraft have ever landed there — and none of them has survived for more than about an hour. They confirm that Venus's beauty is best admired from afar.
And you can admire that beauty for about 90 minutes after sunset right now. Venus is to the left of the Moon this evening, and well below it tomorrow evening. More tomorrow.
Script by Damond Benningfield, Copyright 2011
- ‹ Previous
- Next ›
Get Premium Audio
Listen to today's episode of StarDate on the web the same day it airs in high-quality streaming audio without any extra ads or announcements. Choose a $8 one-month pass, or listen every day for a year for just $30.


text:
Please note that going forward, no applications will be processed during the COVID-19 crisis. We will get back to you with more instructions about the next step once our Montreal studio has been re-opened.
Working at Keywords Studios is an opportunity to meet people from around the world that share your interests and passions. It is a rich workplace in a booming city. Living in Montreal is a chance to discover the city's diversity, festivals, conventions (like Comiccon), world-class restaurants and so much more.
Your mission
Save the world of video games from all manner of linguistic mistakes that dare to threaten the quality of the best games on the planet. Embark on an epic quest that we could only complete with your help!
- Proofread texts and video game content (spelling, syntax, typography).
- Check texts for consistency and recommend changes where necessary.
- Write error reports.
- Perform minor translations.
- Ensure subtitles match the audio tracks.
- Have a sharp eye.
The Keywords group operates in 15 cities around the globe. Our services range from quality assurance (QA) to translation and customer service, among others. Our Montreal office already has several hundred employees and we are constantly on the lookout for new team members that will help us grow and reach new heights.
From free snacks to outings and team activities and the chance to test out new video game consoles not yet released to the public, working with us means new benefits and adventures every day.
The chosen candidate must either be a Canadian citizen, a permanent resident or a Temporary Foreign Worker with an Open Work permit or in the process of requesting a Working Holiday Visa.
Please make sure that your contact information, including your personal email address, is included on either your CV or your cover letter. Only retained candidates will be contacted. Your CV will be saved in our files for a period of 6 months.
Good luck and we look forward to meeting you!
Do you have what it takes?
- Proficiency in English and Hungarian (spoken and written).
- Ability to juggle multiple tasks while managing your time efficiently.
- Comfortable with digital technologies (computers, video game consoles, touchscreens).
- An interest in the video game industry.
- Experience in a relevant or related field.
- Experience in a similar position (an asset).
- Relocation packages available in certain cases
- $14.25 - $16.75CAD per hour, depending on shift time
- Free fruit daily
- Free Friday coffee
- Consoles and arcade games in the cafeteria
- Amazing colleagues
- Working in a fun and fast-paced industry
- Working on a variety of consoles and AAA games!
- Potential for full-time, permanent openings with growth opportunities
- Partnerships with STM, Telus, and BIXI (among others)
- And so much more


text:
E-bike and E-scooter Pilot Program
The Department of Parks and Recreation has issued a Park Directive (PDF) that establishes a 10-month Pilot Program allowing certain e-bikes and e-scooters on select park trails in the Anacostia Tributaries Trail System. The pilot program will enable the DPR to study the impact of allowing low-powered motorized vehicles on paved bicycle and pedestrian trails.
The pilot program allows for e-bikes and e-scooters whether they are personally- owned or provided by commercial bike-share compaines. VeoRide, is a commercial bikeshare service with electric vehicles now operating in the greater College Park/University of Maryland area.
Montgomery County is also conducting a similar pilot program on the Sligo Creek, Northwest Branch, Long Branch, Rock Creek and Matthew Henson trails.
The following maps show where the pilot program provides access, and a few areas where e-bike and e-scooter use is NOT permitted.
We welcome your comments or questions on the Prince George's Parks Open Town Hall forum.
As of April 2019
Little Paint Branch Trail Extension
- The 2.2 mile project (from Cherry Hill Road to Beltsville Community Center on Sellman Road) is 99% complete.
- Final construction activities include, punch-list items, installing additional signs and striping, and fencing.
- Watch for announcement of a ribbon-cutting event.
Paint Branch Trail Flooding Issues
- The existing Little Paint Branch Trail (just south of Cherry Hill Road) is being compromised by flood waters. In February, Environmental Quality Resources (EQR) stabilized 3 trail washout areas.
- Compacted dirt and gravel is still in place along one 30-foot section of missing pavement. Other washed out areas have been fully restored.
- The trail underpass at US Route 1, near the University of Maryland, floods frequently and leaves the trail muddy and covered with debris. The underpass below the CSX railroad and Metrorail overpasses near Lake Artemesia, also floods frequently. Department of Parks and Recreation is aware of these problem areas. As the rainiest year on record in Prince George's County, these areas were constantly flooded. Maintenance staff worked to make them passable as soon after a flood event as possible; however, standing water and long periods of heavy rain resulted in a number of closures. Department of Parks and Recreation is working with local partners and consultants to seek short-term and long-term solutions at these locations. Each location has numerous government agencies/entities with jurisdiction, making matters extremely complicated.
- The Henson Creek trail has areas where flooding has washed out the stream bank and trail pavement. Department of Parks and Recreation is working on repair strategies that will be long-lasting, as this trail has had numerous washouts over the past 10 to 15 years.
Prince George's County has 165 miles of trail in our park system. Our trail network includes:
- Paved multi-use trails for walking, biking, running, skating, routine transportation, daily exercise and weekend recreation (85 miles);
- Natural surface trails for hiking, loving nature, mountain biking and horseback riding (47 miles);
- Loop trails in neighborhood parks for walking, jogging, staying healthy and fit, and learning to ride a bike (33 miles, mostly paved); and,
- Water trails along the Patuxent and Potomac Rivers for canoeing and kayaking.
Our trails traverse many settings. Urban and suburban greenways run through our stream valley parklands, rails-to-trails conversions follow the old trolley lines, and a mixed assortment of trails have been built in our regional parks and conservation lands.
Prince George's park trails are great for family outings, hanging with friends, bird watching, getting access to fishing holes, exploring forests and wetlands, connecting to our history and decompressing from urban life.
Trail Hours and Operations
- Paved trails are open from dawn to dusk for pedestrians and recreational uses, unless lighting is provided and extended hours are posted.
- For cyclists, who have a headlamp and are just passing through, new rules allow access on all paved trails from 5 am to midnight.
- Natural surface trails are open from dawn to dusk, unless otherwise posted.
- The Rhode Island Avenue Trolley Trail is policed by local police in Hyattsville, Riverdale Park and College Park.
- Trails are not plowed or maintained for safe passage under snow and icy conditions.
Etiquette on the Trail
- Be courteous to other trail users.
- Pedestrians have the right-of-way.
- Stay to the right; pass on the left.
- When on roadways, remember to ride with traffic, but walk and run against traffic.
- Bicyclists should ride at speeds that are safe for current conditions: generally 10-15 miles per hour.
- Bicyclists stopping along the trail, should move off the pavement to avoid accidents and blocking the path for other users.
- Pedestrians and cyclists traveling two-abreast must yield to on-coming and overtaking traffic.
- When approaching or overtaking pedestrians, give courteous but audible, advance warning using voice, bell or horn to avoid startling.
- With the exception of motorized wheelchairs, motorized vehicles are not allowed on the trail.
- Pets should be kept on a short leash, and people must clean up after their pets.
- Horses should be kept on the grass shoulder, when possible. @(Model.BulletStyle == CivicPlus.Entities.Modules.Layout.Enums.BulletStyle.Decimal ? "ol" : "ul")>
Tips to Stay Safe
- If traveling alone, tell friends and family the route you'll be taking.
- Be sure to carry identification (which includes name, phone number, and pertinent medical information), and record your bicycle serial number.
- Carry a mobile phone.
- Don't wear earphones.
- Wear reflective material, and carry a whistle.
- Bicyclists should always wear a helmet; helmet use is required by state law for those under age 16.
- Prior to using a new trail, take the time to familiarize yourself with the trail and plan your route.
- Stay alert, be observant about your surroundings.
- Use discretion when acknowledging strangers, and follow your intuition about unfamiliar people and areas. @(Model.BulletStyle == CivicPlus.Entities.Modules.Layout.Enums.BulletStyle.Decimal ? "ol" : "ul")>


text: Hello! My name is Conan and I invite everyone to try out Bodis.com Domain Parking. We've just relaunched our service with some great features: -Best and highest paying ad provider in the industry -Full IDN support -Hourly reporting -XML and Javascript API -Bodis.com interface in over 15 languages -Regional Support -Excellent ad coverage in every country, incl. Eastern Europe and Asia. and much more... Please check us out at Bodis.com for more information about our parking service. We monetize over 150k domains actively and growing. Our strengths are traffic names and international traffic, but we are good in almost every category so I recommend everyone gives us a try. Looking forward to seeing you all on our service and I will answer any questions that any of you have. Regards, Conan Bodis.com


text:
Conservative Treatment
Your dentist will work carefully to preserve as much healthy tissue as possible. Some offices have dental lasers that allow for highly precise contouring.
Minimal Discomfort
Local anesthesia will be used to completely numb the treatment area, and many dentists also offer sedation options.
Better Results
If a crown does not contact enough dental tissue, it can fail. A poor fit can also result in decay developing under the restoration.


text:
Gov. Hickenlooper has a duty to protect Colorado's air
By Eva J. Henry and Charles "Chaz" Tedesco
Guest Commentary
As elected officials, we take very seriously our obligation to protect the health and welfare of the residents in our communities. That means trying to create a robust economy, ensuring public safety and trying to make sure our air is safe to breathe.
Vitally important negotiations are going on between staff of the state health department, the oil and gas industry, conservationists and other interested parties that will dramatically impact the quality of the air we breathe. These negotiations will determine how much air pollution the oil and gas industry can emit.
In keeping with Gov. John Hickenlooper's proclamation that he wants to make Colorado the healthiest state in the nation, it only follows that our state should have the strongest rules in the U.S.
Read more…


text: Even in this tough retail climate, designers have something to be excited about. The newly appointed White House social secretary, Desiree Rogers, is a huge fashion fan. The 49-year-old Wellesley College and Harvard Business School grad counts Isabel Toledo, Valentino, Carolina Herrera, Oscar de la Renta, Bottega Veneta and Viktor & Rolf as favorites. "I come from a city that is social," says the recently relocated Chicagoan. "Work is important, but it's also important to play hard. It reinvigorates you. It connects you." Whether Viktor & Rolf's upside-down dresses and twisted trenchcoats will replace the pantsuit as Washington's de facto uniform remains to be seen.


text:
visitant :: identificació
|Servei de Biblioteques
|Sobre el DDD
|Català English Español
|Pàgina inicial > Articles > Articles publicats > The Extended Prevalence of Infection in the ICU Study : EPIC II
|Context: Infection is a major cause of morbidity and mortality in intensive care units worldwide. However, there is still relatively little information about the global epidemiology of such infections. Objective: To provide an up-to-date picture of the extent and patterns of infection in intensive care units around the world. Design: One-day point prevalence study on May 8, 2007. Setting: A total of 1265 intensive care units from 76 countries. Patients: All patients present on one of the participating units on the study day. Main outcome measures: Demographic, physiologic, bacteriological, and therapeutic data were collected, along with outcome data at intensive care unit and hospital discharge. Results: On the day of the study, 51% of patients were considered to be infected. Seventy-one percent of all patients were receiving antibiotics. Sixty-four percent of infections were of respiratory origin, and 70% of infected patients had positive microbiological isolates; Gram-negative organisms were isolated from 62% of infectious episodes, Gram-positive organisms from 47%, and fungi from 19%. Gram-negative organisms were much less prevalent in North America, Europe and Oceania than in other regions. Patients who had longer intensive care unit stays prior to the study day had higher rates of infection, especially infections due to resistant staphylococci, Acinetobacter, Pseudomonas species and fungi. Intensive care unit (25 versus 11%) and hospital (33% versus 15%) mortality rates were more than double in infected than in non-infected patients (both P<0. 001). In multivariable analysis, infection was independently associated with an increased risk of hospital mortality (odds ratio 1. 52 [1. 37-1. 69], P<0. 001). Conclusions: Infections are very common in contemporary intensive care unit patients, and risk of infection increases with duration of intensive care unit stay. In this large cohort, infection was independently associated with an increased risk of hospital death.
|Premi a l'excel·lència investigadora. 2010
|Tots els drets reservats
|article ; recerca ; acceptedVersion
|Publicat a:
|JAMA, Vol. 302, Núm. 21 (2009) , p. 1-49, ISSN 0098-7484
49 p, 235.4 KB


text: ATTENTION: All the information on the contents and advertisement messages are based on general scientific knowledge, experiences and reports from clients. GladiatorPLUS does not promise any healing. GladiatorPLUS is a suppliment to be taken and not a medication. GladiatorPLUS is an optimal therapy accompaniment based on its excellent contents. It however does not mean that you should stop going to the veterinary or therapist.


text:
127 / Pulau Baguk, Singkil, Aceh
Chosen as one of the best youth of Pulau Banyak, Singkil, Aceh Province, Desi Irdawati got her university scholarship in Bandung, West Java. She took...
126 / Sukolilo Timur, Bangkalan, East Java
Indonesian language teacher and librarian of SMP 2 Labang (public middle school), Mohammad Kurdi, is very passionate to improve the literate interest...
125 / Yenwapnour, Raja Ampat, West Papua
Been born with half European and half Carribean blood, a Marine Biologist, Arno Brival really loves cultural diversity. Been working for 4 years as...
124 / Pulau Balai, Singkil, Aceh
Balai Island is the main island amongst 70 islands of Banyak Islands, Aceh Province. Blessed with beautiful beaches, coral reefs, pristine jungles...
123 / Catak Gayam, Jombang, East Java
Mrs. Mazidatul has been a teacher of Arabic language and manager of school library at MI Unggulan Assalam for 5 years now. The students are very...
122 / Bunggo Wedung, Demak, Central Java
Mrs.Zuliana has been a high school teacher since 2004. Besides being a Physics teacher, she is also the head of school library. At the library, they...
121 / Sukawati, Gianyar, Bali
Mrs. Gung Asri is an Elementary school teacher since 2005. The SD (Elementary School) Saraswati, Sukawati, was established in 2015, and the teachers...
120 / Gondangan, Temanggung, Central Java
Abdurrohman was a teacher in a private school, but his concern about children education and environment awareness in his village encouraged him to go...
119 / Wirotho Agung, Tebo, Jambi
Mr. Wasit has been teaching Bahasa Indonesia and being head of library at SMP (Junior HS) Negeri 30 Wirotho Agung for 5 years now. He leads project...
118 / Sawinggrai, Raja Ampat, West Papua
Mr. Jonas came the first time to Raja Ampat in 2015 and worked with an International NGO in Abore island. He fell in love with the nature of Papua...
117 / Melinggih Kelod, Gianyar, Bali
The library will have a "Waste for Lessons" program, in which the students trade recyclable waste for English Lessons. Ms. Fauziana will be...
116 / Sambinasi Barat, Ngada, East Nusa Tenggara
The children here already planted mangroves and want to do more projects for the environment in the future! There are fires in the grassland near the...
Generous donations from supporters like you have empowered more than 100 schools across Indonesia with eco-education and books. Join the movement by donating today.
025 / Gili Trawangan, North Lombok, East Nusa Tengara
For the last 2 years, Egi Wahyuni opens a Saturday class for the local children of Gili Trawangan to learn about the... Read More
043 / Batu Kota, Bitung, North Sulawesi
Helen loves beach so much, that it breaks her heart every time she finds lots of trash on the beach. Local community... Read More
127 / Pulau Baguk, Singkil, Aceh
Chosen as one of the best youth of Pulau Banyak, Singkil, Aceh Province, Desi Irdawati got her university scholarship... Read More
126 / Sukolilo Timur, Bangkalan, East Java
Indonesian language teacher and librarian of SMP 2 Labang (public middle school), Mohammad Kurdi, is very passionate to... Read More
125 / Yenwapnour, Raja Ampat, West Papua
Been born with half European and half Carribean blood, a Marine Biologist, Arno Brival really loves cultural diversity.... Read More
124 / Pulau Balai, Singkil, Aceh
Balai Island is the main island amongst 70 islands of Banyak Islands, Aceh Province. Blessed with beautiful beaches,... Read More
085 / Sei Siur Dusun IV Panton, Langkat, North Sumatra
Mrs. Fathin has been working at Yayasan Pendidikan Al-Islam since 2008, now she is managing the boarding school as vice... Read More
123 / Catak Gayam, Jombang, East Java
Mrs. Mazidatul has been a teacher of Arabic language and manager of school library at MI Unggulan Assalam for 5 years... Read More
122 / Bunggo Wedung, Demak, Central Java
Mrs.Zuliana has been a high school teacher since 2004. Besides being a Physics teacher, she is also the head of school... Read More
121 / Sukawati, Gianyar, Bali
Mrs. Gung Asri is an Elementary school teacher since 2005. The SD (Elementary School) Saraswati, Sukawati, was... Read More
120 / Gondangan, Temanggung, Central Java
Abdurrohman was a teacher in a private school, but his concern about children education and environment awareness in... Read More
119 / Wirotho Agung, Tebo, Jambi
Mr. Wasit has been teaching Bahasa Indonesia and being head of library at SMP (Junior HS) Negeri 30 Wirotho Agung for 5... Read More
118 / Sawinggrai, Raja Ampat, West Papua
Mr. Jonas came the first time to Raja Ampat in 2015 and worked with an International NGO in Abore island. He fell in... Read More
117 / Melinggih Kelod, Gianyar, Bali
The library will have a "Waste for Lessons" program, in which the students trade recyclable waste for English Lessons.... Read More
116 / Sambinasi Barat, Ngada, East Nusa Tenggara
The children here already planted mangroves and want to do more projects for the environment in the future! There are... Read More
115 / Bandarbaru, Deli Serdang, North Sumatra
This village is stuck in their old habits, which badly affect the environment. Our green books want to change that!... Read More
114 / Jatimulyo, Demak, Central Java
Villagers here are still polluting the river by using it as waste disposal, place to wash their clothes in and even as... Read More
113 / Gunungsari, Banjarnegara, Central Java
After losing the Reading Garden, he used to go to as a child, Mr. Suparno took action and started his own one. There... Read More
112 / Berarue, Barru, South Sulawesi
A student postponed his studies, just to get these children away from smoking cigarettes to reading books! There is... Read More
111 / Sidodadi, Banyuwangi, East Java
Once a month, this school gets visited by a mobile library, which the students are very enthusiastic about. Their... Read More
110 / Detusoko Barat, Ende, East Nusa Tenggara
In this Youth Centre in Detusoko, the children have to recycle plastic and paper to join the English course. Mr.... Read More
109 / Gotong Royong, Langkat, North Sumatra
Mrs. Janine is teaching children about the environment and sustainability. She is hoping that they will apply what they... Read More
108 / Sirau, Banyumas, Central Java
Ibu Purwati loves her job as library administrator. The library was awarded as one of the best in the district. The... Read More
107 / Wateswinangun, Lamongan, East Java
Mr. Zulkifli spends only half of his day working at the market, so he can spend more time in the Reading Club. In his... Read More
106 / Kolono, Konawe Selatan, Southeast Sulawesi
Andri hopes to create one reading club in each village someday and to engage the locals in the environmental issues. In... Read More
105 / Malaka, North Lombok, West Nusa Tenggara
"The community doesn't have good environmental education. That's why they don't know the dangers of... Read More
104 / Sibang Kaja, Badung, Bali
These kids will spend their time after school for creative games, practicing English and reading our green books. Rima... Read More
103 / Tanjung, Kampar, Riau
This village doesn't have a main dump site so people end up burning their garbage. Another problem is the ongoing... Read More
102 / Srimulyo, OKU Timur, South Sumatra
The school doesn't have enough funding to provide the library with new books, only to pay the teachers' salaries.... Read More
101 / Parakancanggah, Banjarnegara, Central Java
To earn money, the community here started to cultivate mushrooms and they would love to learn about composting. The... Read More
100 / Kuta Male, Tanah Karo, North Sumatra
Jhon works with the NGO The Kukang Program to give education to local communities about wildlife, nature and the... Read More
099 / Kaliasem, Buleleng, Bali
The village near Lovina beach is witnessing the damage of the coral reef and ocean pollution with plastic first... Read More
098 / Cikahuripan, Bandung Barat, West Java
This Reading club works together with elementary schools in the village to advocate for forest rehabilitation. They... Read More
097 / Sugihwaras, Bojonegoro, East Java
Mr. Rondi works as library manager and social worker to educate his community about sustainability. Especially... Read More
096 / Pandat, Pandeglang, Banten
This community has a reading program: Kids choose a book, read it and then share it with other kids to discuss it. They... Read More
095 / Klumpit, Tuban, East Java
Most of the local people work as limestone miners in the mountains, which causes huge environmental damage. The area... Read More
094 / Kalibaru Wetan, Banyuwangi, East Java
The village used to be surrounded by forest. The locals had to cut it down to survive as farmers. The local... Read More
093 / Ensaid Panjang, Sintang, West Kalimantan
Pak Riyanto dedicates most of his time to the community library where he teaches the kids about the environment. The... Read More
092 / Bangunjiwo, Bantul, DI Yogyakarta
Rifqi is still a student, but he wants to motivate the kids in his community and raise environmental awareness. The... Read More
091 / Gondosari, Kudus, Central Java
This elementary school is located in proximity of 2 cigarette manufacturing plants, which pollute the air. A lot of... Read More
090 / Pondok Kahuru, Serang, Banten
Mrs. Mafudoh's goal is to motivate students to read books and to apply what they have read in their community. The... Read More
089 / Medan Krio, Deli Serdang, North Sumatra
The kids here have been upcycling plastic bottles into artwork and they clean the school together every friday. Pak... Read More
088 / Sidomulyo, Bantul, DI Yogyakarta
This learning center provides free lessons to kids, whose parents can't afford any private tutoring. Mrs. Eva, the... Read More
087 / Gampong Jambo Timu, Lhokseumawe, Aceh
Mrs. Meutia Hasan created a community center called Rumoh Baca. Children come here regularly to read, play, and to... Read More
086 / Sangketan, Tabanan, Bali
This community is lacking motivation to live sustainably even though they already have some knowledge about it. Once... Read More
084 / SMA Cahaya (Grade 11), Medan, North Sumatra
Irene Panggabean, is one of grade 11 students of SMA Cahaya Medan, North Sumatera. She is the coordinator of the class... Read More
083 / Tasikmadu, Malang, East Jawa
Dzul Qornain is a 5th-grade teacher at SD Muhammadiyah 4 Malang, East Java. A school that has a beautiful environment... Read More
082 / Lihunu, Minahasa Utara, North Sulawesi
These kids already engage in activities like reading or snorkeling, so they can protect their coasts in the... Read More
081 / Keboguyang, Sidoarjo, East Java
The Lapindo Mud Disaster took place not far from here, so these kids know the effects it had first hand. Mrs. Imadul... Read More
080 / Ketosari, Purworejo, Central Java
Mrs. Maharani, who opened this library, wants to teach kids to grow herbs and is excited for more Eco-Activities!... Read More
079 / Bungbulang, Garut, West Java
Mr. Ayi Hadiyat is a religion education teacher at SMA 7 Garut. Also he runs a library called TBM Matahari Bungbulan,... Read More
078 / Pasir Putih, Manokwari, West Papua
Mrs. Kambuaya is an Indonesian language teacher at SMP Negeri 19 Manokwari. In addition to teaching, she also runs a... Read More
077 / Penggage, Musi Banyuasin Regency, South Sumatera
Mr. Mardan, was born in Bengkulu. In 2019, he was assigned as a teacher for 6th grade at MIN 2 Musi Banyuasin, one of... Read More
076 / Petukangan Selatan, South Jakarta
Mr. Viki Iswanto is managing a library that is serving up 2000 children from kindergarten, elementary, junior high and... Read More
075 / Dangin Puri Kangin, Kota Denpasar, Bali
Mr. I Made Apriwan is a book aficionado. He played a big role in reviving the library in his school. He set up the... Read More
074 / Cimareme, Bandung Barat, West Java
There is trash everywhere in the area where Budi Permana lives due to the lack of knowledge about the danger of trash... Read More
073 / Wilayut, Sidoarjo, East Java
Ratih is one of activists of Gerobak Pustaka Wilayut Community, which is located at Wilayut Village, Sidoarjo, East... Read More
072 / Gombong, Kebumen, Central Java
After earning a degree in library science, Mr. Welly Riswanto received the library manager position in Gombong's High... Read More
071 / Pernasidi, Banyumas, Central Java
Mrs. Ratna Dewi, a full time library manager at Elementary School 3 Pernasidi holds a Bachelors degree in library... Read More
070 / Pagerharjo, Pati, Central Java
Mrs. Fitri and her sister enjoy to have children around. Thus in 2013 they decided to establish a library called TBM... Read More
069 / TBM Sabilul Huda, Ciamis, West Java
Mr. Zezen loves to read. As he has accumulated a lot of books, he decided to set up a library, so more people could... Read More
068 / Desa Kalisada, Buleleng, Bali
After retiring from her job and moving to Singaraja, Mrs. Marshall decided to help the children in Buleleng regency and... Read More
067 / Teku, Banggai Regency, Central Sulawesi
Maryati likes to play with kids. In fact, she has just built her own small public library next to her rented... Read More
066 / Kutabanjarnegara, Banjarnegara, Central Java
Mrs. Siti Rokhyati Agustiani is the head of library at a Junior High School and the university tutor of the library... Read More
065 / SMA Cahaya, Medan, North Sumatra
Herianto Tamba is a teacher at Cahaya public high school in Medan, North Sumatra. His first introduction with education... Read More
064/ Pucangro, Lamongan, East Java
Mrs. Munasyarotul Fadlilati enjoys teaching kids, one of the reasons that made her open the Bintang Brilliant Reading... Read More
063 / Kobak Rante Village, Bekasi, West Java
Soleh lives at Kobak Rante Village, Bekasi, West Java. The school where he teaches is located near the landfill.... Read More
062 / Tebet Barat, Jakarta
Mrs. Marhamah is a manager of the orphanage in Tebet, a district in South Jakarta. They look after 43 children from the... Read More
061 / Batu Katak, Langkat, North Sumatra
The newly opened Tiger House in North Sumatra is an educational project of Czech non-profit Green Life, aimed at... Read More
060 / Karyawangi, Bandung Barat, West Java
Mr. Dedi Diyana is a Physical Education teacher who's also been a library manager for 4 years. The elementary school... Read More
059 / Watu Weri, Lembor Selatan, East Nusa Tenggara
Ms. Amber Clifton works at Pante Hera Turtle Conservation set up by Wicked Adventures, an ethical tour operator based... Read More
058 / Wonosalam, Demak, Central Java
Mrs. Munasichah is one of the two school librarians. The school encourages its students to read more by organizing a... Read More
057 / Sidorejo, Madiun, East Java
Mr. Irwan, a construction worker and farmer believes that books can help widen the horizon and change the mindset... Read More
056 / Saumlaki, West Southeast Maluku
Mr. Laban is a kindergarten teacher that believes in introducing the principles of sustainable lifestyle since early... Read More
055 / Wonorejo, Jember, East Java
Ms. Hastuti works as public elementary school principal in East Java, and she is really keen to change the fact that in... Read More
054 / Ambon, Maluku
Mr. Stanley, the founder of Heka Leka gives lectures twice a week at Politeknik Negeri Ambon and Pattimura University.... Read More
053 / Raja Ampat, West Papua
Ms. Warda Amir decided to join the NGO Yayasan Kalabia Indonesia so she could do something beneficial to her... Read More
052 / Wae Kelambu, Komodo, East Nusa Tenggara
Sr. Ronelyn, the headmaster of the Catholic school, applied for our "green books" because it is mission impossible... Read More
051 / Karang Panggung, Musi Rawas, South Sumatra
Mr. Pungky works for an NGO called Animals Indonesia. Their mission is to protect endangered species and rehabilitate... Read More
050 / Widodomartani, Sleman, Yogyakarta
Originally from Sumbawa, Mr. Nanang Sujatmiko got married in Yogyakarta and decided to settle there after earning a... Read More
049 / Kauman, Ketapang, West Kalimantan
After finishing her study, Mrs. Desy Jayanti moved back to her home village and decided to open a small library in the... Read More
048 / Barong Tongkok, Kutai Barat, East Kalimantan
Mrs. Adriana Hubung has worked as a librarian at SDK 4 WR Soepratman Barong Tongkok, an elementary school with... Read More
047 / Caringin, Bogor, West Java
When Mrs. Heni worked in Hong Kong, she always put away some money so she could buy her favorite books. She collected... Read More
046 / Saumlaki, West Southeast Maluku
Latdalam is a remote village located one hour from the regency capital of Maluku Tenggara Barat. Despite moving to the... Read More
045 / Rantemenduruk, Toraja Utara, South Sulawesi
The school libraries in the vicinity only provide access to boring textbooks. Therefore, Mr. Martinus--an environmental... Read More
044 / Sanur, Despasar, Bali
Mrs. Eni converted her house into a co-working establishment called Sanur Space. Numerous local communities use her... Read More
042 / Nongan, Karangasem, Bali
There are 6 elementary schools, 5 pre-schools, 1 vocational school, and 2 kindergartens in the vicinity, but zero... Read More
041 / Gondek, Jombang, East Java
After finishing his study in English literature, Mr. Babrak moved back to Jombang and decided to be a farmer. In 2008... Read More
040 / Iboih, Sabang, Aceh
Iboih Village is located on Pulau Weh, with abundant pristine rainforests and fringed by coral reefs. Originally a... Read More
039 / Painan Sago, South Pesisir, West Sumatra
When on a scholarship in USA, Ms. Mega noticed that the schools there provided students with all kinds of books, not... Read More
038 / Muara Pawan, Ketapang, West Kalimantan
Mrs. Dini followed her husband to this remote village that is reachable only by plane or boat. She is a teacher at a... Read More
037 / Karangbong, Probolinggo, East Java
Mr. Edi Kurniawan Farid, the library manager who teaches Arabic in Zainul Hasan junior high reminisced the time when he... Read More
036 / Ubud, Gianyar, Bali
Bali Children's Project has a library program located in Penestanan Kaja, Ubud, where children of all ages come to... Read More
035 / Sunter Agung, North Jakarta
After finishing his studies, Mr. Acbar Dheny converted some space in his house into a small library. Initially, people... Read More
034 / Mlaten, Mojokerto, East Java
The plan to make this region as an industrial area of East Java costs environmental damages; smoke from steel factories... Read More
033 / Kedung Banteng, Jombang, East Java
Mrs Wiwik left behind Surabaya's big city life and office job and moved to her husband's village to pursue the dream... Read More
032 / Jember Lor, Jember, East Java
Mr. Iman Suligi is a true book aficionado. Not only he established a community library in his premises, he has also... Read More
031 / Kawisanyar Kebomas, Gresik, East Java
This Junior High School was built in a swampy area where people used to dispose their rubbish. Sadly, it keeps... Read More
030 / Pd. Ranggon, East Jakarta
Mr. Fadli and his wife Olga built their house without cutting down the existing trees and named it Green House. They... Read More
029 / Ambore, Rote Island, East Nusa Tenggara
Rote Island, located between Sumba and Timor is entering international spotlight thanks to its epic waves. However, its... Read More
028 / Wates, Semarang, Central Java
TBM Rumah Mentari, operated by Ibu Mita and her friends, promote reading and storytelling to local children 6 times a... Read More
027 / Gn. Leutik, Bogor, West Java
Due to low income and lack of education of the residents in the surrounding areas of Gn. Leutik, they started to do... Read More
026 / Nanggulan, Klaten, Central Java
Mr. Ari Pujianto and Mr. Daniel Tukiman took the initiative in solving Nanggulan's problem by establishing Bimbingan... Read More
024 / Sungai Gelam, Muaro Jambi Regency, Jambi
There are 24 students from SD 121/IX Jerambah Bolong that are being taught by Fatma Dewi about Zero Waste School... Read More
023 / Labuan Bajo, West Manggarai, East Nusa Tenggara
Despite being a touristic hotspot, Labuan Bajo has been lacking a proper children community education center and... Read More
022 / Keramas, Gianyar, Bali
The Slukat Learning Center is a non-profit organization in Keramas village, Gianyar, Bali. With its motto "home for... Read More
021 / Tinambung, Polewali, West Sulawesi
Mr. M. Rahmat Muchtar established Bendipustaka Pa'issangang - a horsecart library - and goes around the villages four... Read More
020 / Lebungnala, Lampung, South Sumatra
Mr. Sugeng is a former elementary school librarian from Java who migrated to Lebungnala in the neighbouring island of... Read More
019 / Denpasar, Bali
This orphanage in downtown Denpasar, Bali currently doesn't have environmental education on the list. Therefore we want... Read More
018 / Jombang, East Java
Rumah Baca & Belajar Lentera Ilmu in Desa Keras near Jombang, East Java is an already well-established library for kids... Read More
017 / Sukorejo, Sidoarjo, East Java
Dubbed to be "poisoning people with literacy" in his community, Mr M. Fauzi always brings along a selection of books on... Read More
013 / Sibang Kaja, Badung, Bali
This Eco-Library is located at the Multispecies Education Centre in Banjar Saren, Bali, which runs both a community... Read More
016 / Makassar Strait, West & South Sulawesi
Using a traditional ba'go boat, Perahupustaka Pattingalloang goes far into the sea and deep into the rivers to reach... Read More
015 / Denpasar, Bali
"Every day is a holiday in Bali" surely is not applicable to the natives who live in poverty and have to work on the... Read More
014 / Serang Brobahan, Purbalingga, Central Java
This Eco-Library would be an additional collection to Kudapustaka, a horse-powered mobile library visiting local... Read More
012 / Katimpun, Palangkaraya, Central Kalimantan
Katimpun village faces serious problems due to illegal gold mining, unsustainable fishing methods, and poor waste... Read More
011 / Mendoyo, Jembrana, Bali
The Eco-Library will be a section in the already established library of SMPN 1 Mendoyo, in Kabupaten Jembrana, West... Read More
010 / Batu Karas, Pangandaran, West Java
The Eco-Library will be operated by grassroots community movement CLEAR and placed in learning centre Bale Tau, an... Read More
007 / Legian, Badung, Bali
This project is carried out in cooperation with the Soul Surf Project Bali, a non-profit organization providing lessons... Read More
009 / Banda Naira, Maluku
This project is carried out in cooperation with Yayasan Warna-Warni and Sabrina from Naira Dive. She and her friend... Read More
008 / Kuta, Central Lombok, West Nusa Tenggara
This Eco-Library had to be moved to a different location, because the Library manager couldn't find enough time to run... Read More
006 / Manubara, Pesisir, East Nusa Tenggara
Luckily soon after the Kererobo project has been cancelled we found out through our East Sumbanese ambassador Ibu Rani... Read More
005 / Bawonahono, Nias Selatan, North Sumatera
We carried out this project in cooperation with Indonesian non-profit ISCP. They strive for protection of nature and... Read More
004 / Kererobo, South West Sumba
The financial target has been successfully reached and the books sourced nevertheless this project has been... Read More
003 / Petiwung, Central Lombok
This project was carried out in cooperation with the Czech non-profit Kintari and Elementary School SD MI Nurulhaq.... Read More
002 / Patawang, East Sumba, East Nusa Tenggara
Ibu Desi is the principal of the local Junior High School. She kindly provides her own premises to the readers' circle... Read More
001 / Weekarou, West Sumba, East Nusa Tenggara
Our trial project. We learned that an enthusiastic library manager is a necessary element for the successful operation... Read More
Schools to Sponsor
Eco-Education Program
Environmental Books


text:
Lake Washington School District has a strong and active middle school band program, with classes for everyone from beginners to students with years of experience.
Transfer Options
Want to attend a different school than the one in your neighborhood?
Lake Washington School District offers three options to parents who are looking for alternatives to their assigned neighborhood school.
Choice Schools
One option is to investigate Choice Schools, which are open to residents from all over the district. Each choice school has an application process. The Choice School section has more information on applying to choice schools, as well as information on each school. Parents must provide transportation for their student who attends a Choice School.
In-District Variance (Transferring schools within Lake Washington School District)
Another option is to receive an approved variance to another school in the Lake Washington School District, known as an In-District Variance. You can apply for an In-District Variance to any school within the district that has been determined to be "Open." Please note that at the Elementary Level, though a school may be identified as "Open," there may be grade levels within the school that are at enrollment capacity and those grade levels may be "Closed." Applications to these schools are not guaranteed acceptance. Refer to the Closed Schools List to determine whether a school you may be interested in is available for an In-District Variance request.
Between District Transfers
Public school students in Washington state may request a transfer from their "home" district, where they reside, to attend school in another public school district, where they do not reside. That is known as an inter-district transfer or out-of-district transfer.


text:
Can we start a campaign to change the Stack Overflow podcast introduction music?
The saxophone number is very cheesy and would want something that does not sound like it came from a 4th grade music class...
With the announcement of a possible new format to the podcast. Can we start a grassroots movement to change the music or possibly creating their own theme song.


text:
Job Voyager
This visualization shows stacked time series of reported occupations in the United States Labor Force from 1850-2000. The data has been normalized: for each census year, the percentage of the polled labor force in each occupation is shown. The data is originally from the United States Census Bureau and was provided by the University of Minnesota Population Center (ipums.org).
The categorization scheme used was devised in 1950. As a result, some category names may seem outdated and more modern occupations may be missing.
Data for the 1890 census is missing. All visualized values for that year have been interpolated. Also, some categories suffer from missing data in 1940, in which case you may notice some steep drops for that year.
The visualization design was inspired by the Name Voyager.


text:
Ethereal Dress & Blouse
highly refined; delicate
A perfect pattern for your feminine darling. This sophisticated design that can be created as a blouse or dress finishing at any length with or without sleeves. A dress to be worn all year long by the sweetest of girls.
Pattern Size Range: 18mo - 8/9yr
**This purchase is for a PDF pattern**
**No refunds or exchanges are permitted**
*E-pattern has a maximum of 2 downloads and is non transferable via email*


text:
And the Oscar for best social media moment of the night goes to Ellen DeGeneres for breaking Twitter.
DeGeneres tweeted what some have dubbed the best selfie ever, and the tweet knocked the service offline for a few minutes before recovering.
In 30 minutes, the tweet got more than 700,000 retweets and nearly 200,000 favorites.
DeGeneres' tweet is now the most retweeted ever, easily surpassing President Barack Obama's four more years tweet posted after his second-term win in 2012. That tweet had 778,000 retweets.
By Monday morning, at the time of this posting, Ellen's "Best photo ever" had more than 2.6 million retweets and was still growing. It also had more than 1.3 million favorites — and those figures aren't even counting all of the mentions and Internet shares and memes that instantly followed.


text: He was not in the trades, but he was a union truck driver and a jack of all trades. He built his own house back in the 60's. I had such great times with him, back in 1990 or so I helped in put a new roof on his house and put an apartment on as well. I think that alot of my work ethic today comes from him. He did everything with us, camping, snowmobiling, hunting, fishing. He faught hard for the last 10 years he had Lukemia had chemo 3 times and since this last time in the fall he hasnt been doing well. Had been really sick for the past 3 weeks, I live 4 hrs away and had planned on going home last weekend, but moved the trip to the weekend before cause I had a bad feeling. Glad I did that because we talked and spent some good time together when he was in the hospital. He got moved home on 8/22 and hospice came in. We went home again this past weekend and he was really out of it, but I am glad I got to sit and cry and talk to him while he slept. He pasted away on 8/27. Sorry I keep rambling on just makes me feel better to talk about it. RIP Pops


text:
They may not actually "work" like that folded Leica but these papercraft reproductions of SLRs, Super8s, and Roliflexes are unique in that they're themselves constructed from analogue technologies.
Artist Jennifer Collier has stitched and bonded them together from maps, love letters, newspapers and other material evocative of the item they inspire. [Jennifer Collier via Unpluggd]


text: Considering how much time you spend staring at your computer, your desktop wallpaper is actually one of the most important aesthetic decisions you can make. There are infinite options. Will you choose a beautiful sunset or a screen capture from your favorite 1990's Nickelodeon show? Here's the image I'm currently using on the desktop of my laptop to get your gears turning. Upload your favorites in the discussion below so we can all see what you spend your day looking at.