text:
[Rudolf Kinau] RUDOLF KINAU, also known as RUDI KINAU (23 March 1887 – 19 November 1975) was a Low German writer.

Early life

He was born in Finkenwerder, a district of the town Hamburg in northern Germany, to Heinrich Wilhelm Kinau and Metta (née Holst). His brothers were Johann Kinau, who was also a writer known as Gorch Fock; and Jakob Kinau.

Career

He began writing his first book in 1916, with the death of his brother Gorch Fock (born Johann Wilhelm Kinau) who was killed in the Battle of Jutland during World War I. He became well known on radio with the series _Hör mal'n beten to_ for the media company Norddeutscher Rundfunk. These speeches appeared in book form, among other _Kamerad und Kameradin_. In all he has written more than 33 books. He has also published radio and theatre plays.[1] In addition, he discussed records, for the national series _Wort und Stimme_ and _Niederdeutsche Stimmen_ in Lower German voices. In addition to a number of literary awards, such as the Fritz Reuter Prize in 1962, he was awarded the Order of Merit of the Federal Republic of Germany There are several streets named after him, e.g. in his home town of Finkenwerder, the _Rudolf-Kinau_ avenue, in Stromaerer Ahrensburg and the Lower Saxon communities Ostrhauderfehn, Tostedt, and Westoverledingen and also in Kellinghausen in the Rudolf-Kinau street and Schleswig-Holstein Wedel, Barmstedt, and in Uetersen the Rudolf Kinau path. In Strande (Kiel Bay) there is also Rudolf Kinau path next to the Gorch-Fock-Straße. His birthplace in Finkenwerder, the Gorch Fock house is now a literature museum, dedicated to the poet and his two brothers. He died on 19 November 1975, aged 88,

List of works

-   _Sünn in de Seils_, Quickborn-Verlag, 1933, ISBN der 8. Auflage von 2004: 3-87651-002-3
-   _Sünnschien un goden Wind - Fofftig mol wat to'n Frein_, Quickborn-Verlag, 1950, ISBN der 8. Auflage von 1981: 3-87651-029-5
-   _Scheune Bries_, Quickborn Verlag, 1954
-   _Bi uns an'n Diek_, Quickborn-Verlag, 1957
-   _Föör jeden wat_, Quickborn-Verlag, 1958, ISBN der Auflage von 1972: 3-87651-008-2
-   _Mien Wihnachtsbook_, Quickborn-Verlag, 1959, ISBN der 25. Auflage von 1983: 3-87651-009-0
-   _Mattgoot - De besten Fisch van'n letzten Fang_, Quickborn-Verlag, 1967
-   _Rund un bunt_, Quickborn-Verlag, 1972
-   _Bi Hus un ünnerwegens_, Quickborn-Verlag, 1975, ISBN der Auflage 1981: 3-87651-047-3
-   _Seuk di wat ut_, Quickborn-Verlag, 1973,
-   _Up Finkwarder tohus - Gedichten, Riemels un wat mehr_, postum erschienen, Quickborn-Verlag, 1976,

[1] _Kamerad und Kameradin. Tornisterschrift des Oberkommandos der Wehrmacht._ 1943 Heft 80. archive.org (in German).

title: Rudolf Kinau

question: Who was Rudolf Kinau?

answer: He was a Low German writer.

question: Summarize everything relating to Rudolf's family.

answer: Rudolf's parents were Heinrich Wilhelm Kinau and Metta (née Holst). His brothers were Johann Kinau, (aka Gorch Fock, the writer) and Jakob Kinau.

question: How old was Rudolf when he started writing his first book?

answer: 29 years old

question: List three of Rudolf Kinau's earliest works.

answer:
- Sünn in de Seils, Quickborn-Verlag, 1933, ISBN der 8. Auflage von 2004: 3-87651-002-3
- Sünnschien un goden Wind - Fofftig mol wat to'n Frein, Quickborn-Verlag, 1950, ISBN der 8. Auflage von 1981: 3-87651-029-5
- Scheune Bries, Quickborn Verlag, 1954

question: Write a ~4 sentence summary.

answer: Rudolf Kinau was a Low German writer born in Finkenwerder, a district of the town Hamburg in northern Germany. He is the brother of writer Johann Kinau, aka Gorch Fock. Rudolf started writing in 1916 when Johann was killed in WWI. He became well-known in radio and has written more than 33 books.


split: train

text:
New weapons in the battle against salmon lice

The best weapon in the battle against salmon lice in the Norwegian aquaculture industry has proved to be the use of what are called “cleaner fish”, fish that eat salmon lice. But these fish often die during breeding. Now, researchers have found a way to help the young fish survive.

The correct cocktail of bacteria, and better feed for young fish are important weapons in the battle against salmon lice.

Salmon lice are currently one of the most pressing challenges in the salmon farming industry, which is one of the largest industries in Norway. Use of pesticides that target salmon lice in food and water has made the lice resistant to some of the chemicals. For this reason, the best weapon is biological, via the use of fish that eat the lice and thereby cleanse salmon farms of the little parasites.

[Vann av ulik kaliber og kvalitet er et viktig element ved forskningsstasjonen SeaLab. Foto: Idun Haugan]

Water of different qualities is an important element at the SeaLab research station. Photo: Idun Haugan

Ballan wrasse is a fish that is widely used by the salmon farming industry as a “cleaner fish”. The wrasse thoroughly inspect infected salmon, helping themselves to any lice that they find. A win-win situation, in other words. Almost.

Transport is stressful

Salmon lice

Salmon lice are the most common parasite found on farmed salmon.

They are roughly 8-12 millimetres in size.

The lice live off of mucus, skin and blood from their host fish.

Lice infestations cost the salmon industry NOK 500 million annually.

Lice from farms are also affecting Norway's wild salmon population, by weakening the wild fish and stunting their growth.

Salmon lice can not survive in fresh water.

The lice are mainly combated using cleaning fish or chemical pesticides.

Pesticide use by salmon farms has led salmon lice to be resistant to some pesticides and chemicals.

(Source: Institute of Marine Research, the Norwegian food safety authority)

You may have seen fishing net buoys placed close to shore, right near the seaweed belt, and wondered what is being fished for in such shallow water. These are nets for collecting live wrasse. Currently, catching and moving wild wrasse is the most common way of bringing cleaner fish to salmon farms. But this is by no means a problem-free solution.

“The fish are often transported long distances, and released into the ocean far away from where they were caught. This means that there is risk of transmitting diseases from place to place,” says Professor Elin Kjørsvik of the Department of Biology at NTNU. She is also the academic leader for the NTNU Centre of Fisheries and Aquaculture.

“Transport is also very stressful for the fish. It isn’t a good way to treat animals, and many of the fish die while being transported,” she adds. “The species and sizes of fish that are caught are also quite random, which means that fish farmers don’t always get the fish that they need.”

For these reasons, researchers are now trying to successfully breed wrasse. This is a much more sustainable solution, but not without its own problems.

Tiny and vulnerable

“The problem with breeding is keeping fish fry alive,” Kari Attramadal, a postdoc at the Department of Biology explains. “Salt water fish larvae are tiny and vulnerable when they hatch and leave the protective environment if the egg for the first time.”

[Disse små rørbitene fungerer som et biofilter, hvor enkelte bakterier fanges opp mens andre får passere. Dermed kan forskerne regulere bakteriecocktailen i vannet som berggyltyngelen klekkes i. Foto: Idun Haugan]

These small sections of tubing act as a bio-filter, catching and stopping some bacteria, while allowing others to pass through. This allows researchers to regulate the bacteria cocktail in the water in which the young ballan wrasse are hatched. Photo: Idun Haugan

“Wrasse larvae are very underdeveloped when the hatch, they are more or less still foetuses,” says Kjørsvik.

Fish fry that hatch in fresh water, such as salmon, are much stronger and more robust, ready to start on the dangerous journey outside the egg.

A mouthful of bacteria

For wrasse, the transition from the relatively sterile environment of the egg out into open water is huge. The fish larvae quickly encounter a multitude of bacteria.

“When the eggs hatch and the fish larvae come in contact with water, they are colonized by bacteria. Because of this, the environment that the fish larvae is in when it first opens its mouth is essential to its strength and chances of survival,” Attramadal explains.

The intestinal flora is just as important in these larvae as it is in humans, and researchers estimate that the immune system in wrasse larvae isn’t fully developed until about three months.

Two essential factors ensure that the larvae have a good start to their lives: feed and water quality. And this is precisely what researchers at NTNU and SINTEF are studying.

Making the right cocktail

Bacteria in the tanks used to raise small fish tend to be much more abundant than in the natural environment of the ocean. Disinfecting and cleaning the water in these tanks is therefore important. But by doing this, the natural bacterial flora dies, which allows for other, more aggressive and opportunistic bacteria to spread. These bacteria are the ones that the fish larvae are most vulnerable to.

[Det jobbes intenst med å lykkes i oppdrett av leppefisk, som er en mer bærekraftig løsning. Foto: Idun Haugan, NTNU]

Researchers are working intensively to successfully breed ballan wrasse, which are a much more sustainable solution than chemicals to control salmon lice infestations. Photo: Idun Haugan

To prevent invasion by these opportunistic, bad bacteria, the environment in the tanks has to be such that the good bacteria are allowed to flourish. Researchers are using artificial selection to make the aggressive, bad bacteria give way to the good ones.

“The solution is to create a stable environment. We do this by adding a bio-filter to the system that contains good bacteria that are well adapted to the environment. These bacteria will fill up the environment so that the bad bacteria don’t have any way to spread,” Kjørsvik says.

The fish larvae need to be protected against bacteria that could potentially harm them, but they need to be exposed to certain bacteria to be able to develop their immune system.

“We have tried to figure out what bacterial flora is best for the young fish to be exposed to, to find the right cocktail,” Attramadal says.

“The way the water is treated makes a huge difference when it comes to survival. The survival rates in environments where we’ve used artificial selection are much higher— the difference was even greater than we’d anticipated,” she concluded.

The feed works miracles

The other fundamental element that researchers have taken into consideration is the food that the young fish are fed.

[Forskerne har blant annet studert utviklingen av skjelettet hos yngel av berggylt. Foto: Idun Haugan, NTNU]

Researchers have also studied the development of the skeleton in young ballan wrasse. Photo: Idun Haugan, NTNU

“Early development is incredibly important in fish, just like in humans. Even in the first week after hatching, we can see the impacts that food has. This is especially true in the case of small, marine fish larvae, where many organs and tissues are developed after they begin eating. It is very important to ensure good growth right from the start. For this, you need the right building blocks,” Kjørsvik says.

Small salt water fish larvae like this can’t eat dry food, they need to eat live prey, which are easier to digest. There are two species that are used as food for young farmed marine fish: rotifers and _Artemia salina_, a species of brine shrimp.

There are, however, other organisms that more closely resemble the natural food sources of these fish, namely copepods.

Researchers have observed that giving wrasse larvae access to copepods during early development practically works miracles.

“Previously, it has been difficult to produce copepods on a large scale, however. But now, we have a found a method to make this possible, which is a fantastic breakthrough when it comes to raising marine fish on the the whole,” Kjørsvik says.

Great results

“When the fish larvae are given the correct food and are raised in the proper water quality, the results are great. The young fish develop much better, and have higher growth and survival rates. They are better at swimming and catching prey, have quicker bone development, and are less likely to develop mutations. They also handle stress much better,” Kjørsvik said. “If we can raise robust fish, maybe we can train them to be even more interested in eating salmon lice. Fish can actually be stimulated to learn. If we can do this, we will have effective, happy working fish.”

Many fish farmers have also shown interest in using lumpsuckers as cleaning fish.

[Elin Kjørsvik (t.v.), faglig leder ved NTNU Senter for fiskeri og havbruk og Kari Attramadal, postdoktor ved Institutt for biologi. Foto: Idun Haugan, NTNU]

Elin Kjørsvik (left), academic leader for NTNU’s Centre of Fisheries and Aquaculture, and Kari Attramadal, a postdoc at the Department of Biology. Photo: Idun Haugan

“Lumpsuckers could potentially be used as the next cleaner fish in the salmon farming industry. They are more at home in the cold temperatures usually found along the coast. But as with every other fish that are bred for the first time, there are many unknown factors that may cause problems. We know very little about early lumpsucker development. One of the greatest challenges in breeding is a period of high mortality at about 2-3 months,” says Kjørsvik.

This is what the two researchers want to study in their next project.

Research-based teaching

The research on ballan wrasse at NTNU and SINTEF was a big part of the research project “Production of Ballan Wrasse”, which was undertaken with the Institute of Marine Research, Nofima, and Nifes. The project was funded by the Norwegian Seafood Research Fund (FHF).

“This type of research is a good example of the university’s role in bringing socially relevant expertise into education through research-based teaching. A total of 16 master’s students have written their theses at NTNU in connection with this three-year research project. Most of them are now working in the fish farming industry, or are continuing their research,” Kjørsvik says.

The project has just ended, and several publications are now in the works. A preliminary summary of the results can be found in the book “Production of Ballan Wrasse”, and on the website www.rensefisk.no

Read more about the group’s research:

RAS and microbial maturation as tools of K-selection of microbial communities improve survival in cod larvae  in the academic journal _Aquaculture._

Effects of moderate ozonation or high intensity UV-irradiation on the microbial environment in RAS for marine larvae in _Aquaculture_.

Recirculation as a possible microbial control strategy in the production of marine larvaein the scientific journal _Aquacultural Engineering._

question: What are salmon lice?

answer: Salmon lice are the most common parasite found on farmed salmon.

question: How are salmon lice combated?

answer: The lice are combated using cleaning fish or chemical pesticides.

question: What are wrasses?

answer: Wrasses are cleaning fish that are used to clean salmon lice.

question: What are research plans for the future?

answer: The scientists plan to breed lumpsucker and use them as the next cleaner fish.

question: Why the salmon industry does not use pesticides only to combat salmon lice?

answer: Because lice became resistant to some pesticides.

question: Write a ~7 sentence summary.

answer: Salmon lice are the most common parasite found on farmed salmon. Lice infestations cost Norway salmon industry NOK 500 million annually. Salmon lice became resistant to some pesticides, so the salmon farming industry started using wrasse as a “cleaner fish”. Since many wrasses die during transport, scientists decided to breed wrasses. They faced another problem - wrasses are tiny, vulnerable and the fish larvae are colonized by bad bacteria, so the scientists had to create a better environment for wrasses. They add a bio-filter to the system that contains good bacteria and feed wrasse larvae with copepods. In the future, the scientists plan to bread lumpsuckers because they are easier to breed since they live in the cold temperatures along the coast.


text:
It's been less than a month since the PROCYON mission announced their plans to fly by asteroid 2000 DP107, but sadly, the flyby is not going to happen. The ion engines ceased working in mid-March; my last update talked about their plans for troubleshooting. Today, reports in Japanese media indicate that these efforts were not successful, so they will not be able to change their course to fly past 2000 DP107. They think that a tiny metal fragment wandered into the space between the two electrical grids used for accelerating the ionized fuel, preventing the engine from working properly. The same report does say that the spacecraft is still functioning, and they'll continue to use it to test out its miniaturized equipment in operation in deep space.

It was a super-mini deep-space mission, so it's not surprising that it ran into challenges, but it's still sad to have lost the opportunity for an asteroid flyby. Better luck next time!

Thanks to Junya Terazono for the news tip and to Paolo for the link to the news story.

question: What is 2000 DP107?

answer: 2000 DP107 is an asteroid.

question: What is the PROCYON mission?

answer: The PROCYON mission was a mission to fly by the 2000 DP107 asteroid.

question: Why was the mission cancelled?

answer: The mission was cancelled because the ion engines stopped working, and efforts at troubleshooting were unsuccessful.

question: Is the spacecraft still functioning?

answer: Yes, and they will continue to test out the miniaturized equipment in operation.

question: Write a ~2 sentence summary.

answer: The PROCYON mission was a mission to fly by the 2000 DP107 asteroid. The mission was cancelled because the ion engines stopped working, and efforts at troubleshooting were unsuccessful.


text:
MAANSHAN IRON & STEEL COMPANY LIMITED, known as MAANSHAN IRON & STEEL or just '''Masteel ''' (in Chinese MAGANG) is a Chinese listed company which engaged in steel manufacturing. The company was based in Ma'anshan, Anhui province. Since its establishment in 1993, it was controlled by the Chinese governments. However, the indirect parent company was changed to central government owned China Baowu Steel Group in June 2019, after the Group acquired 51% stake of Masteel Group, the direct parent company of the listed company from the Anhui provincial government.

History

Predecessor

[former logo] The history of the steel plant could be traced back to “Ma'anshan Iron Mining Plant”, established in 1953.[1] The steel plant was renamed to “Ma'anshan Iron and Steel Company”,[2] ( or transliterated as “Ma'anshan Iron and Steel Corporation”). In the 1950s, it was considered as one of the 5 medium-sized steel plants of the People's Republic of China,[3] behind the top 3 at that time: Anshan, Wuhan and Baotou.[4] In the 1970s, the production process of the Group mainly comprised cooking, sintering, iron smelting, steel smelting and rolling.[5]

Maanshan Iron & Steel Company Limited

In 1993, Maanshan Iron & Steel Company Limited was established to list the steel manufacturing assets in the stock exchanges, auxiliary divisions were not listed.[6] The old “Ma'anshan Iron and Steel Company” was renamed to “Magang Holding Company”, but remained as the parent and the holding company of the listed company. It was one of the first Chinese state-owned enterprises to be a listed company.[7]

In 1998 the parent company was renamed into Magang (Group) Holding Co., Ltd.,[8] but commonly known as Masteel Group.

In the 2010s, the listed company had become a supplier of the train wheels and tires for China Railway High-speed trains such as Fuxing.[9]

In 2016, as part of the national policy to retire old-age steel production facilities as well as scale-down steel production volume, Maanshan Iron & Steel started to retire some of their production line. In 2018, the retirement was completed.[10]

Controversies

In 2015, hundreds[11]{{#tag:ref|According to a self-published news report in _boxun.com_, 5,000 people were involved in January 2016 protest which was held in a square of the former steel plant, with some protesters had blocked the traffic near the gate of the steel plant,[12] while _Financial Times_ reported hundreds of protesters were on the street in 2015.[13] The same _Boxun_ news report also stated the previous protest was held in April 2014, in the form of labour strike.[14] Both sources confirmed the existence of protest(s) but contradicted on details.|group=“nb”}} of lay-off workers protested the closing of a steel plant of the listed company in Hefei, the capital of Anhui province, demanding a fairer compensation.[15][16] The plant was formerly known as “Hefei Iron and Steel” ( or in short )[17] but renamed to “Masteel (Hefei) Iron and Steel” () after became a subsidiary of Maanshan Iron and Steel. It was closed down due to heavy pollution.[18][19] Some part of the Hefei steel plant had become a national monument, as the first steel plant (instead of iron) of the province.[20]

In early 2016, fellow Chinese steel maker and later the parent company Baosteel Group (now China Baowu Steel Group) was accused by US Steel Corporation of stealing commercial secrets. Baosteel rejected these allegations.[21] The United States International Trade Commission (ITC) launched a probe into these allegations in May 2016, which Maanshan Iron and Steel was included in the investigation along with other Chinese steel maker such as Wuhan Iron and Steel,[22] which was also part of China Baowu Steel Group since 2016.

Footnotes

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

[10]

[11]

[12]

[13]

[14]

[15]

[16]

[17]

[18]

[19]

[20]

[21]

[22]

title: Maanshan Iron & Steel

question: What does the text say about the company's predecessor?

answer: The steel plant's history can be traced back to "Ma'anshan Iron Mining Plant," which was established in 1953. The steel plant was renamed to "Ma'anshan Iron and Steel Company." In the 1950s, it was one of the 5 medium-sized steel plants in the People's Republic of China, behind the top three. In the 1970s, the production process consisted mainly of cooking, sintering, iron smelting, steel smelting, and rolling.

question: What does the text say about controversy around the company in 2016?

answer: In early 2016, Baosteel Group, another Chinese steel maker, was accused by US Steel Corporation of stealing commercial secrets. The United States International Trade Commission launched a probe into those allegations, and Maanchan Iron and Steel was included in it, along with another Chinese steel maker.

question: What does the text say about the company's plans for the future?


text:
UNITED NATIONS (Reuters) - The Swedish ambassador to the United Nations said on Tuesday he is concerned about the Trump administration’s plans to review funding for a humanitarian agency that provides aid to Palestinian refugees.

Swedish Ambassador to the United Nations Olof Skoog speaks to reporters ahead of the Security Council consultation on the situation of North Korea's missile test, in Manhattan, New York, U.S., September 15, 2017. REUTERS/Amr Alfiky

“My concern (is) that as we talk about region stability, withdrawing funding for UNRWA would be very negative both in terms of humanitarian needs of over 5 million people but also of course it would be destabilizing for the region,” Olof Skoog said, referring to the U.N. Relief and Works Agency for Palestinian refugees.

The United States is the largest donor to UNRWA, with a pledge of nearly $370 million as of 2016, according to the organization’s website.

Last Tuesday, President Donald Trump said the United States may withhold future aid payments to Palestinians, accusing them of being unwilling to talk peace with Israel. Earlier, his U.N. Ambassador Nikki Haley said the future U.S. funding for UNRWA was under review.

A State Department official later said that no decision had been made on payment.

“We’re just trying to sort out what the exact information is on that,” Skoog said on Tuesday, adding that he has brought the subject up bilaterally with Haley.

Relations between the Palestinians and Washington soured last month after Trump announced the United States would recognize Jerusalem as Israel’s capital, generating outrage across the Arab world and concern among Washington’s Western allies.

Palestinians want East Jerusalem as the capital of a state they seek to establish in the West Bank and Gaza Strip.

Palestinian officials have said Trump’s declaration on Jerusalem meant he could not serve as an honest broker in peace negotiations with Israel that Washington has been trying to revive.

Israeli Prime Minister Benjamin Netanyahu repeated over the weekend his call for UNRWA to be dismantled.

Reporting by Rodrigo Campos; Editing by Susan Thomas

for-phone-onlyfor-tablet-portrait-upfor-tablet-landscape-upfor-desktop-upfor-wide-desktop-up

question: Why was the Swedish ambassador to the UN concerned about the Trump administration's plans to review funding for a humanitarian agency that provides aid to Palestinian refugees?

answer: Scoog was concerned that removing funding from UNRWA would be negative for the humanitarian needs of over 5 million refugees and destabilize the Palestinian region.

question: Are the Trump administration's plans ethical?

answer: If the lives of 5 million refugees were negatively  affected by the withdrawing of funds, it's possible that the plans are unethical.

question: Summarize Olof Scoog's thoughts.

answer: Scoog was concerned that removing funding from UNRWA would be negative for the humanitarian needs of over 5 million refugees and destabilize the Palestinian region.

question: Why were relations soured between Washington and the Palestinians?

answer: Trump declared Jerusalem to be Israel's capital.

question: What could have kept a better relationship between Washington and the Palestinians?

answer: If Trump hadn't declared Jerusalem as the capital of Israel, and just stayed neutral, relations would be better.


text:
When you subscribe we will use the information you provide to send you these newsletters. Sometimes they’ll include recommendations for other related newsletters or services we offer. OurPrivacy Noticeexplains more about how we use your data, and your rights. You can unsubscribe at any time.

Invalid Email

Grieving Debra Parsons will have her mum Doreen for Christmas dinner this year – by scattering her ashes on the turkey then tucking in.

And for dessert she’ll enjoy Christmas Pud...with a dusting of her mum’s last remains too.

Debra, 41, has felt the urge to EAT Doreen’s ashes since she died in May and has had a small
spoonful most days to feel “as close as possible” to her.

But as she faces Christmas without her, the craving has become even stronger.

“It is the only thing that will get me through my first Christmas without mum,” said Debra.

[]

Doreen Brown died in May this year (Image: Sunday Mirror)
[]

The ashes of Doreen Brown in a box (Image: Nicholas Bowman/Sunday Mirror)
“People might think I’m mad or that it’s not a very respectful thing to do but I just can’t stop myself.

“I see it as a positive thing – allowing her to be close to me and also involving her in the family day.

[]

Video Loading

Video Unavailable

Click to play Tap to play

“I feel like she can live on by being inside of me because if she is part of me she can breathe through my body. My breath is her breath.

“It will be my first Christmas without her and I want her to be involved and this is the only way that feels right to me.”

[]

Doreen Brown with her daughter Debra Parsons (Image: Sunday Mirror)
[]

Debra Parsons who plans to eat the ashes of her mother Doreen Brown (Image: Nicholas Bowman/Sunday Mirror)

Doreen Brown died suddenly from an airway obstruction after suffering a chest infection in May.

It was yet another tragedy for mum-of-two Debra, who lost a son at Christmas 1996 when he was born prematurely.

She has struggled for years to cope with her grief – but when Doreen passed away she plunged to an all-time low.

“My mum and I had a really strong bond and one which could never be broken, even by death,” Debra said.

“She has been the one who has helped me through all the other ups and downs of my life and then suddenly she just wasn’t there any more.

“I was distraught.”

[]

For dessert she’ll enjoy Christmas Pud...with a dusting of her mum’s last remains too (Image: Nicholas Bowman/Sunday Mirror)
After the funeral and cremation Debra began to think what she would do with Doreen’s ashes – but rejected the traditional idea of scattering them at a beauty spot her mum loved.

“It wasn’t something I had ever thought about,” she said. “I always thought I would have more time to think about it.

“I knew Mum was ill but never
expected her to pass away when she did. So when she went I had that feeling of huge loss but also of regret over all the things that went unsaid and all the times we would miss in the future.

“I decided I wanted to do something with her ashes that would make a difference to how we remembered her. I didn’t want to just scatter them because that would feel like throwing her away.”

Two months later, one of Debra’s two sisters, who are unaware of her unorthodox
ritual, delivered her share of the ashes to her home.

[]

After the funeral and cremation Debra began to think what she would do with Doreen’s ashes – but rejected the traditional idea of scattering them at a beauty spot her mum loved (Image: Nicholas Bowman/Sunday Mirror)
“At first I kept them in a plastic sandwich bag.

“I wanted to be with them all the time so I had them by my bed or with me around the house.

“Then I got a little box for them so I could have them on display but no matter what I did I just couldn’t get that feeling of closeness.” But one day – when she was missing her mum more than usual – Debra had a moment of inspiration.

“I don’t know what made me do it the first time – it was just an urge. I can’t describe it.

Salty

“I opened the box and licked my fingers and just dipped them into the powder.

“Before I knew what I was doing they were in my mouth and the chalky, salty taste was comforting. I felt confused by what I had done to begin with but the feeling of comfort and closeness it brought was the first bit of solace I’d had since her death.”

Each day, Debra’s urge to eat her mum’s ashes became harder to resist.

And as Christmas nears, she is planning to take her secret to the next level. She added: “I have been having a little taste most days – sometimes on my finger or on a little spoon.

[]

Each day, Debra’s urge to eat her mum’s ashes became harder to resist (Image: Nicholas Bowman/Sunday Mirror)
“But Christ-mas has always been a really difficult time of year since the anniversary of my son’s death is December 28 and as it gets close this year I feel the urge even more. Christmas is a special time of year when you want to be close to the ones you love the most and I feel the loss of those that aren’t here more strongly now than ever.

“But I don’t want to just eat the ashes on my fingers – I’d like my mum to be a part of the celebration this year so I will have her with my Christmas dinner.

“We will have a place laid for her and a picture of her on the table so she can be with us on the very
special day.”

Debra’s fiancé – who we have agreed not to name – has supported her through her grief and they plan to marry next year.

“I am lucky that my loved ones understand what I am doing,” said Debra, of Folkestone, Kent.

“And I know my mum would have been happy for me to do whatever I needed to get over no longer having her in my life.”

question: What does the article say about what Debra Parsons is doing with her mother's remains?

answer: Grieving Debra Parsons will be eating her mother's remains for Christmas dinner this year. She'll scatter her ashes on the turkey, and dust it on the Christmas pudding for dessert. Debra has felt the urge to eat her mother's ashes since she died in May and has had a small spoonful most days to "feel as close as possible to her." As Christmas approaches, the craving has become even stronger. Rejecting the idea of a traditional scattering of ashes, Debra opted to lick her finger and dip it into the ashes. Before she knew what she was doing she had the chalky, salty taste in her mouth and found it comforting. It's the only thing that brings her solace. Everyday, the urge to eat her mother's ashes has grown greater, and she now plans on infusing her Christmas dinner with the ashes.


text:
This was my first short story I had to write for my Creative Writing class back when I was a Junior in high school. I hope you like it!

    "Ooohhhh," Helen groaned. She hurt everywhere. Being in a hospital for six weeks is really something that she wasn't looking forward to. She was about to call for a nurse to change the channel on her tiny tv (golf was not her thing!) when all of a sudden there was a knock on the door. "Come in," she called weakly.

   "Hello, I'm Dr. Bandade, how are you feeling?" He smiled a toothy smile.

   She gave the burly man a sarcastic look. "How do you *think* I'm feeling? I fell out of a five-story window!"

    The doctor pulled up a chair next to her. "Yes about that, how exactly did it happen? On this statement is says that you were pushed?"

    Helen cringed at the very thought of it, not only because it was painful, but she wasn't sure if he would believe her. "Well, it started out as a normal day. I woke up, ate breakfast, completed the daily crossword puzzle in the paper.

    "It was then I noticed that my window was open. A cool breeze swept through, so I decided to close it. I got up and went over to the window.

    "Right as I reached out to grab the handle, Rufus, my cat, rubbed against my leg, causing me to lose my balance. Before I knew it, I was falling out the window!

    "I screamed. I heard people screaming below me. I felt breathless. Panic swept over me.

    "It was only too soon when I came into contact with the ground. I heard bones shattering and I cried out in pain. In the distance, sirens wailed. The ambulance charged down the street.

    "After they put me on the stretcher, they hauled me away to the hospital, where they told me I was lucky to even be alive. They said I broke every bone in my body. I'll be here about six weeks, if not more." Her face fell when she told the doctor this. "And that's all that happened."

    Dr. Bandade looked over at her. "So you fell out accidentally then."

    "No! I was *pushed* out!" she yelled.

    "But you even said that you lost your balance, and no one was with you."

    "Yes there was... Rufus! *He* pushed me out!"

    The doctor rationalized, "But he's a *cat.* He probably didn't realize that rubbing against you to show affection would-"

    But Helen cut him off. "He *deliberately* rubbed too hard and made me lost my balance."

    "What would be the purpose for Rufus to push you?" The doctor raised an eyebrow.

    "He's just evil," she simply said.

    "Oh." He wrote some things down on his clipboard.

    Helen stared at him suspiciously. "What kind of doctor are you anyway, asking me all these questions?"

    "I'm a psychiatrist." He wrote some more things down.

    "What? You think I'm crazy don't you?! I'm telling you, my cat is trying to *kill me!"*

    Before Dr. Bandade could say anything, there was a knock at the door.

    "Excuse me, doctor," the nurse said, "but there's someone here to see her."

    Helen perked up a bit. A visitor to see her!

    The visitor walked into the room.

    "Rufus!" Helen shrieked.

    Standing there was the tabby cat. He was staring at her with glossy green eyes, slanted into slits. His tail twitched as if to say, "I'm *back."*

title: Paranoid?... Or Just Plain Evil?

question: Who pushes Helen out the window?

answer: Her cat, Rufus.

question: What kind of doctor questions her?

answer: A psychiatrist.

question: How did Helen hurt herself?

answer: She fell out the window.

question: What does the psychiatrist ask her?

answer: Whether she fell out accidentally.

question: Write a ~3 sentence summary.

answer: A girl named Helen falls out the window and injures herself. Later she tells the doctor she blames her cat Rufus for the fall. The doctor is skeptical, but then the cat Rufus himself walks in.


text:
[Oceanic Hotel corner of Pakenham Street] The OCEANIC HOTEL is a heritage listed building located on Collie Street on the corner of Pakenham Street in Fremantle, Western Australia.

The building was constructed in 1898[1] an occupies the site where the WELSH HARP HOTEL also known as the COLLIE HOTEL formerly stood.[2]

The two storey truncated corner building is made of painted brick and has zero setback from the pavement. A bull nosed corrugated veranda awning wraps around the building's corner. The roof line is fronted by decorative parapet with four pediments with _1898_ inscribed in the stucco on the corner pediment. The Pakenham Street side of the building features extensive stained glass lead lights in the windows where _Oceanic Hotel_ name appears in the glass.[3]

The building was converted to six strata titled apartments during the 1980s. One of the apartments was extensively refurbished in 2005 winning the architectural firm, spaceagency, the RAIA Residential Award in 2006.[4] It is currently used as holiday apartments.[5]

[1]

[2]

[3]

[4]

[5]

title: Oceanic Hotel

question: when was the Oceanic Hotel built?

answer: It was built in 1898.

question: Why is the Oceanic Hotel a heritage-listed building?

answer: Information not found.

question: Where is the Oceanic Hotel located?

answer: On Collie Street on the corner of Pakenham Street in Fremantle, Western Australia.

question: What are some features of the Oceanic Hotel?

answer: It is a two-story building made of painted brick with a bullnose corrugated veranda with extensive stained glass on the side of the building.

question: Write a ~1 sentence summary.

answer: The article describes a bit of the history of the Oceanic Hotel and describes some of its features.


text:
This section gathers many common errors that you may face while writing PHP scripts.

1.  I cannot remember the parameter order of PHP functions, are they random?
2.  I would like to write a generic PHP script that can handle data coming from any form. How do I know which POST method variables are available?
3.  I need to convert all single-quotes (') to a backslash followed by a single-quote (\'). How can I do this with a regular expression? I'd also like to convert " to \" and \ to \\.
4.  All my " turn into \" and my ' turn into \', how do I get rid of all these unwanted backslashes? How and why did they get there?
5.  How does the PHP directive register_globals affect me?
6.  When I do the following, the output is printed in the wrong order: <?php function myfunc($argument) { echo $argument + 10; } $variable = 10; echo "myfunc($variable) = " . myfunc($variable); ?> what's going on?
7.  Hey, what happened to my newlines?
 <?php echo "This should be the first line."; ?> <?php echo "This should show up after the new line above."; ?>

8.  I get the message 'Warning: Cannot send session cookie - headers already sent...' or 'Cannot add header information - headers already sent...'.
9.  I need to access information in the request header directly. How can I do this?
10. When I try to use authentication with IIS I get 'No Input file specified'.
11. Windows: I can't access files shared on another computer using IIS
12. How am I supposed to mix XML and PHP? It complains about my <?xml tags!
13. Where can I find a complete list of variables are available to me in PHP?
14. How can I generate PDF files without using the non-free and commercial libraries like PDFLib? I'd like something that's free and doesn't require external PDF libraries.
15. I'm trying to access one of the standard CGI variables (such as $DOCUMENT_ROOT or $HTTP_REFERER) in a user-defined function, and it can't seem to find it. What's wrong?
16. A few PHP directives may also take on shorthand byte values, as opposed to only int byte values. What are all the available shorthand byte options?
17. Windows: I keep getting connection timeouts when using localhost, whereas "127.0.0.1" works?

 I CANNOT REMEMBER THE PARAMETER ORDER OF PHP FUNCTIONS, ARE THEY RANDOM?

    PHP is a glue that brings together hundreds of external libraries, so sometimes this gets messy. However, a simple rule of thumb is as follows:

    Array function parameters are ordered as "_needle, haystack_" whereas String functions are the opposite, so "_haystack, needle_".

 I WOULD LIKE TO WRITE A GENERIC PHP SCRIPT THAT CAN HANDLE DATA COMING FROM ANY FORM. HOW DO I KNOW WHICH POST METHOD VARIABLES ARE AVAILABLE?

    PHP offers many predefined variables, like the superglobal $_POST. You may loop through $_POST as it's an associate array of all POSTed values. For example, let's simply loop through it with foreach, check for empty() values, and print them out.

     <?php$empty = $post = array();foreach ($_POST as $varname => $varvalue) {    if (empty($varvalue)) {        $empty[$varname] = $varvalue;    } else {        $post[$varname] = $varvalue;    }}

    print

    "
";if (empty($empty)) {    print "None of the POSTed values are empty, posted:\n";    var_dump($post);} else {    print "We have " . count($empty) . " empty values\n";    print "Posted:\n"; var_dump($post);    print "Empty:\n";  var_dump($empty);    exit;}?>

 I NEED TO CONVERT ALL SINGLE-QUOTES (') TO A BACKSLASH FOLLOWED BY A SINGLE-QUOTE (\'). HOW CAN I DO THIS WITH A REGULAR EXPRESSION? I'D ALSO LIKE TO CONVERT " TO \" AND \ TO \\.

    Assuming this is for a database, use the escaping mechanism that comes with the database. For example, use mysql_real_escape_string() with MySQL and pg_escape_string() with PostgreSQL. There is also the generic addslashes() and stripslashes() functions, that are more common with older PHP code.

      NOTE: DIRECTIVE NOTE: MAGIC_QUOTES_GPC

      The magic_quotes_gpc directive defaults to on. It essentially runs addslashes() on all GET, POST, and COOKIE data. stripslashes() may be used to remove them.

 ALL MY " TURN INTO \" AND MY ' TURN INTO \', HOW DO I GET RID OF ALL THESE UNWANTED BACKSLASHES? HOW AND WHY DID THEY GET THERE?

    Most likely the backslashes magically exist because the PHP directive magic_quotes_gpc is on. This is an old feature of PHP, and should be disabled and not relied upon. Also, the PHP function stripslashes() may be used to strip the backslashes from the string.

      NOTE: DIRECTIVE NOTE: MAGIC_QUOTES_GPC

      The magic_quotes_gpc directive defaults to on. It essentially runs addslashes() on all GET, POST, and COOKIE data. stripslashes() may be used to remove them.

 HOW DOES THE PHP DIRECTIVE REGISTER_GLOBALS AFFECT ME?

    WARNING

    This feature has been _DEPRECATED_ as of PHP 5.3.0 and _REMOVED_ as of PHP 5.4.0.

    First, an explanation about what this ini setting does. Let's say the following URL is used: http://example.com/foo.php?animal=cat and in foo.php we might have the following PHP code:

     <?php// Using $_GET here is preferredecho $_GET['animal'];// For $animal to exist, register_globals must be on// DO NOT DO THISecho $animal;// This applies to all variables, so $_SERVER tooecho $_SERVER['PHP_SELF'];// Again, for $PHP_SELF to exist, register_globals must be on// DO NOT DO THISecho $PHP_SELF;?>

    The code above demonstrates how register_globals creates a lot of variables. For years this type of coding has been frowned upon, and for years it's been disabled by default. So although most web hosts disable register_globals, there are still outdated articles, tutorials, and books that require it to be on. Plan accordingly.

    See also the following resources for additional information:

    -   The register_globals directive
    -   The security chapter about register globals
    -   Handling external variables
    -   Use superglobals instead

      NOTE:

      In the example above, we used an URL that contained a QUERY_STRING. Passing information like this is done through a GET HTTP Request, so this is why the superglobal $_GET was used.

WHEN I DO THE FOLLOWING, THE OUTPUT IS PRINTED IN THE WRONG ORDER:
 <?phpfunction myfunc($argument){    echo $argument + 10;}$variable = 10;echo "myfunc($variable) = " . myfunc($variable);?>

what's going on?
To be able to use the results of your function in an expression (such as concatenating it with other strings in the example above), you need to return the value, not echo it.

HEY, WHAT HAPPENED TO MY NEWLINES?

<?php echo "This should be the first line."; ?><?php echo "This should show up after the new line above."; ?>

In PHP, the ending for a block of code is either "?>" or "?>\n" (where \n means a newline). So in the example above, the echoed sentences will be on one line, because PHP omits the newlines after the block ending. This means that you need to insert an extra newline after each block of PHP code to make it print out one newline.

Why does PHP do this? Because when formatting normal HTML, this usually makes your life easier because you don't want that newline, but you'd have to create extremely long lines or otherwise make the raw page source unreadable to achieve that effect.

 I GET THE MESSAGE 'WARNING: CANNOT SEND SESSION COOKIE - HEADERS ALREADY SENT...' OR 'CANNOT ADD HEADER INFORMATION - HEADERS ALREADY SENT...'.

    The functions header(), setcookie(), and the session functions need to add headers to the output stream but headers can only be sent before all other content. There can be no output before using these functions, output such as HTML. The function headers_sent() will check if your script has already sent headers and see also the Output Control functions.

 I NEED TO ACCESS INFORMATION IN THE REQUEST HEADER DIRECTLY. HOW CAN I DO THIS?

    The getallheaders() function will do this if you are running PHP as an Apache module. So, the following bit of code will show you all the request headers:

     <?php$headers = getallheaders();foreach ($headers as $name => $content) {    echo "headers[$name] = $content
\n";}?>

    See also apache_lookup_uri(), apache_response_headers(), and fsockopen()

 WHEN I TRY TO USE AUTHENTICATION WITH IIS I GET 'NO INPUT FILE SPECIFIED'.

    The security model of IIS is at fault here. This is a problem common to all CGI programs running under IIS. A workaround is to create a plain HTML file (not parsed by PHP) as the entry page into an authenticated directory. Then use a META tag to redirect to the PHP page, or have a link to the PHP page. PHP will then recognize the authentication correctly. This should not affect other NT web servers. For more information, see: » http://support.microsoft.com/kb/q160422/ and the manual section on HTTP Authentication.

 WINDOWS: I CAN'T ACCESS FILES SHARED ON ANOTHER COMPUTER USING IIS

    You have to change the Go to Internet Information       Services. Locate your PHP file and go to its properties. Go to the File Security tab, Edit -<        Anonymous access and authentication control.

    You can fix the problem either by unticking Anonymous       Access and leaving Integrated Window       Authentication ticked, or, by ticking Anonymous       Access and editing the user as he may not have the access right.

 HOW AM I SUPPOSED TO MIX XML AND PHP? IT COMPLAINS ABOUT MY <?XML TAGS!

    In order to embed <?xml straight into your PHP code, you'll have to turn off short tags by having the PHP directive short_open_tags set to 0. You cannot set this directive with ini_set(). Regardless of short_open_tags being on or off, you can do something like: <?php echo '<?xml'; ?>. The default for this directive is On.

 WHERE CAN I FIND A COMPLETE LIST OF VARIABLES ARE AVAILABLE TO ME IN PHP?

    Read the manual page on predefined variables as it includes a partial list of predefined variables available to your script. A complete list of available variables (and much more information) can be seen by calling the phpinfo() function. Be sure to read the manual section on variables from outside of PHP as it describes common scenarios for external variables, like from a HTML form, a Cookie, and the URL.

      NOTE: REGISTER_GLOBALS: IMPORTANT NOTE

      As of PHP 4.2.0, the default value for the PHP directive register_globals is _off_. The PHP community discourages developers from relying on this directive, and encourages the use of other means, such as the superglobals.

 HOW CAN I GENERATE PDF FILES WITHOUT USING THE NON-FREE AND COMMERCIAL LIBRARIES LIKE PDFLIB? I'D LIKE SOMETHING THAT'S FREE AND DOESN'T REQUIRE EXTERNAL PDF LIBRARIES.

    There are a few alternatives written in PHP such as » FPDF and » TCPDF.

 I'M TRYING TO ACCESS ONE OF THE STANDARD CGI VARIABLES (SUCH AS $DOCUMENT_ROOT OR $HTTP_REFERER) IN A USER-DEFINED FUNCTION, AND IT CAN'T SEEM TO FIND IT. WHAT'S WRONG?

    It's important to realize that the PHP directive register_globals also affects server and environment variables. When register_globals = off (the default is off since PHP 4.2.0), $DOCUMENT_ROOT will not exist. Instead, use $_SERVER['DOCUMENT_ROOT']. If register_globals = on then the variables $DOCUMENT_ROOT and $GLOBALS['DOCUMENT_ROOT'] will also exist.

    If you're sure register_globals = on and wonder why $DOCUMENT_ROOT isn't available inside functions, it's because these are like any other variables and would require global $DOCUMENT_ROOT inside the function. See also the manual page on variable scope. It's preferred to code with register_globals = off.

 A FEW PHP DIRECTIVES MAY ALSO TAKE ON SHORTHAND BYTE VALUES, AS OPPOSED TO ONLY INT BYTE VALUES. WHAT ARE ALL THE AVAILABLE SHORTHAND BYTE OPTIONS?

    The available options are K (for Kilobytes), M (for Megabytes) and G (for Gigabytes; available since PHP 5.1.0), and are all case-insensitive. Anything else assumes bytes. 1M equals one Megabyte or 1048576 bytes. 1K equals one Kilobyte or 1024 bytes. These shorthand notations may be used in php.ini and in the ini_set() function. Note that the numeric value is cast to int; for instance, 0.5M is interpreted as 0.

      NOTE: KILOBYTE VERSUS KIBIBYTE

      The PHP notation describes one kilobyte as equalling 1024 bytes, whereas the IEC standard considers this to be a kibibyte instead. Summary: k and K = 1024 bytes.

 WINDOWS: I KEEP GETTING CONNECTION TIMEOUTS WHEN USING localhost, WHEREAS "127.0.0.1" WORKS?

    Prior to PHP 5.3.4, there was a bug in the network resolving code inside PHP that caused localhost in all stream related situations to fail if IPv6 was enabled. To work around this issue you can either use "127.0.0.1" or disable IPv6 resolving in the hosts file.

_ROBJBRAIN AT GMAIL DOT COM_¶

4 YEARS AGO

 There is no error message given if you accidentally use KB, MB or GB instead of K, M or G. From what I can tell the alphabetic characters will be ignored and it will be treated as bytes, so 1GB actually equals 1 Byte. phpinfo() and ini_get() will report what you have written e.g. 1GB, so it will not be clear that there is anything wrong with your setting even though there is.

question: What are PHP scripts?

answer: This information can't be found.

question: Are the parameter order of PHP functions random?

answer: Array function parameters are ordered as "_needle, haystack_" whereas String functions are the opposite, so "_haystack, needle_".

question: Write a ~1 sentence summary.

answer: An essay on PHP scripts.


text:
Was bored, wrote this in about an hour. Constructive criticism and general feedback are both appreciated.

---

Lyra stood in the doorway of the dressing room, her hands placed expressively on either hip. She knew that it was time to speak up. She would give the Master one last chance, but she had a feeling that this would be his final show.

“Ah yes, my sweet Lyra. What do you come about for? You've hardly any makeup on yet! Don't you know the show's about to start? Go get...”

“I'm not performing with you tonight.” she said, as firmly as she could.

“Excuse me?” the Master replied, dumbfounded. His mouth hung slightly agape.

“I'm done with the show. I'm not doing it anymore. You're going to have to find a new assistant.”

At this point, she knew there was no retracting her sentiment. She stood in the doorway, grasping the frame with palms of nervous sweat.

“Well, Lyra, I... Frankly I... I don't think you're in any position to make such brash decisions.” His face  glistened with the same sweat of her palms. “You signed the contract, and the contract says...”

“You drugged me, you bastard.” She was beginning to shudder with pent up rage, anger coursing readily through her heated veins. “I couldn't even speak when I signed that thing. You promised me money, fame, love...”

“...But the promises of a madman are as empty as your pretty little head, aren't they darling?” The nervous sweat had vanished from his face, replaced with only the darkest shades of malevolent confidence. The chuckle that followed was far from hearty.

Not once did Lyra move her gaze from his. She knew he would refuse to release her, and now that he had, she cognized the weight that his refusal carried. This brought her some emotional relief. She knew his triumph would be short-lived.

“Now go put on your things, you filthy slut.” He moved his eyes from hers and peered down into his tobacco pipe. A swift light drew out a large plume of smoke, and a few puffs later he returned his stare. “If you're not ready in five, you're in for one hell of a beating.”

She realized that the only viable response was to feign momentary subservience. “Yes master.” she replied, with an eerie calmness to her tone. She had stopped shaking; her anger had subsided. She knew that she had won, but the Master knew not.

As sharp as he was, he found nothing awry with her sudden obedience, and seemed more than pleased that his threats had done their job. “Yes, good girl. Now off with you!” Elements of playfulness pervaded his own tone, underscoring his outright insanity.

Lyra turned on her heel and walked to her dressing room. The door hung slightly open, and she pushed it the rest of the way in with her body. She knew it would be her final visit, so she made a point to gather the few things she truly cared for.

“Hairbrush, mace, lockpicks...” She briefly ran through a mental list of things to keep. When she got to the end, her suitcase was practically overflowing. She paused and thoughtfully gazed at her sandals.

“This is it.” She said to herself. She reached her hand into the hidden compartment of the suitcase and pulled out “the instrument” – a common knife with a single edged blade sharpened to a razor point. The Master seldom allowed her to use utensils when they ate together, but she had managed to garner the knife following the post-meal alcohol daze of his Friday eve meat feast.

The illumination of the red light in the hallway caught her attention as it reflected off of the blade in her hand. The show was starting - it was time to go. Her stature was firm and her goal clear in her mind as she strutted towards the stage, grasping the instrument for dear life.

She heard the roar of the audience as was blinded by the incessant haze of the overhead lights. Everyone had come to see the Master perform his tricks, fooling them as charmingly as he had her on the night that she was signed into servitude.

“And now...” roared his voice, “put your hands together for my lovely assistant... Lyra!”

The audience was familiar with this routine. Every member applauded her entry with great enthusiasm, for the more they expressed, the more bewildering the Masters tricks would be.

As she walked onto the platform, the applause tapered off abruptly, perhaps with the most acute decrescendo of the century. They saw her dressed casually, not as her usual subservient self. Boos began to replace former cheers, and the master felt a fair mix of anger and embarrassment.

He marched over to her while waving at the audience with a 'just a moment' gesture. “What on great mother earth do you fancy you're doing, you little whore? You're ruining the show! I told you to get your act together! And what the bloody hell are you fumbling with!?”

As her arm shot towards his collar, his eyes widened with terror. She plunged the instrument deep into the front of his neck, and it penetrated his adam's apple with ease. To her, it felt as if she were cutting butter.

He managed to let out a few exasperated gurgles before she slid the knife further up the sides of his neck. As it severed his carotid artery, blood spurted from the resulting wounds in a manner that seemed almost cartoonish. It was an unsettling sight, but she relished in the moment like none other, watching his life slowly drain away, his hatred and cruelty being replaced by emptiness and his consciousness slipping deeper into the void of oblivion.

Most of the members of the audience had left in a panicked frenzy. However, one particular man, deluded as he was, came up onto the stage and began to charge at Lyra, thinking her to be some sort of murderer who needed to be brought to proper justice.

She had very little time to finish her task. She looked the Master in his near-vacant eyes one last time as he lay on the polished hardwood floor of the stage, his brain cells rapidly atrophying. “It's all in your eyes, Master.” she whispered. “It's all in your eyes.”

With that, a swift kick to the head did him in. She hastily recovered the Nekraf from his front suit pocket, a device that could teleport the user to any destination of their choosing. Just before the enraged man grabbed the bottom portion of her blouse, she closed her eyes, pressed the prime button, felt a sharp jolt, and vanished into thin air. He stood around confused for a few more moments, looking up, down and every which way, but ultimately concluded that she truly was gone. In a minutes time, no one was left in the house save for the corpse of the accursed Master himself.

His show was no more, his tricks no longer existent. His mind control was nullified, and most of the audience members had recovered their full wits and were flabbergasted as to what they'd just experienced. Many speculated, but none remembered for sure. The Master was a forgotten man, his show a sullen piece, and his evils finally lain to a well-deserved rest.

Lyra awoke on a sunny beach of crystal blue waters, palm trees surrounding her sunken form. She stood up and looked into the distance, eyes set upon a singular tropical cabana.

“Home.” she said to herself, in near disbelief. “I'm finally home.”

She walked on.

title: The Instrument - 1280 words

question: Summarize the importance of the instrument.

answer: The titular instrument is a sharp dinner knife Lyra has secreted away as a weapon to use against the Master and so win her freedom. She hides it in a secret compartment of her suitcase until the time comes that she uses it to murder the Master onstage during his illusionist performance. The instrument is key to the events of the story; without it, Lyra could not free herself.

question: What does the story say about paradise?

question: Summarize the context of the contract.

answer: The Master charmed Lyra with his show, then drugged and coerced her to sign a contract to be his servant. He promised love, fame, and money, none of which he could deliver. The contract seems to give him control of her life until either its terms are met, he releases her, or he dies.

question: What does the story say about the Master's illusions?

answer: The Master uses mind control to fool his audiences. His show seems to be one of seemingly impossible tricks and feats to amaze the audience. The mind control only wears off after the Master dies, so while he is alive the audiences retain the memory of what they watched.


text:
Drexel fell behind 5-0 at the start of tonight’s game against Delaware, and for quite a while, it didn’t look like they’d be able to crawl out of that hole. With a few minutes remaining in the first half, they were down by 34, and by the break, they’d only managed to cut that to 27 points. But in the second half, they started breaking things open, and soon enough, they had a record-setting comeback on their hands.

With six minutes remaining, Drexel made it a 10-point game. With five minutes remaining, there was this sweet rush to save the ball from going out-of-bounds, followed by a three-pointer to cut the deficit to four:

Finally, with just under two minutes to go, Drexel took the lead. With the game tied and just two seconds remaining, Tramaine Isabell—who’d ultimately finish as Drexel’s leading scorer, with 29 points, all but seven of which came in the second half—was fouled while shooting a three. He made two of three, and that was all that the Dragons needed for an 85-83 win and a place in the DI history books.

question: What is the article about?

answer: The article is about a basketball game, and the player, Drexel.

question: Who is Drexel?

answer: Drexel seems to be the hero of the basketball game against Delaware.

question: What does "...and a place in the DI history books." mean?

answer: The article doesn't indicate what DI stands for.

question: Which team does Drexel play for?

answer: He plays for the Dragons.

question: Write a ~3 sentence summary.

answer: The article is about a basketball game, and the player, Drexel. Drexel is a member of the Dragons. The Dragons make an amazing comeback in the second half, ultimately winning the game 85-83.


text:
DABHA is a town and former Koli Princely State in Gujarat, western India.[1][2]

History

Dabha was a Fifth princely state and taluka, comprising eight more villages, covering twelve square miles in Mahi Kantha.[3]

It had a population of 1,307 in 1901, yielding a state revenue of 4,379 Rupees (mostly from land), paying tributes of 150 Rupees to the Gaikwar Baroda State and 53 Rupees to the nearby Amliyara State.[4]

[1]

[2]

[3]

[4]

title: Dabha, Gujarat

question: What is Dabha?

answer: Dabha is a town in Gujarat, western India.

question: How big is Dabha?

answer: Dabha is covering twelve square miles.

question: What was Dabha population in 1901?

answer: Dabha had a population of 1,307 in 1901.

question: What is taluka?

answer: It is not stated.

question: Write a ~3 sentence summary.

answer: Dabha is a town and former Koli Princely State in Gujarat, western India. It was a Fifth princely state and taluka. It had a population of 1,307 in 1901.


text:
INDONESIAN NATIONAL ROUTE 5 is a road in the national route system that completely lies in the West Java province, and links the Cileunyi subdistrict, located near the city of Bandung in Bandung Regency, West Java, to the subdistrict of Palimanan, located near the city of Cirebon, in Cirebon Regency, West Java.

Route

Cileunyi - Jatinangor - North Sumedang - Jatiwangi - Palimanan

title: Indonesian National Route 5

question: What province does Indonesian National Route 5 lie in?

answer: Indonesian National Route 5 lies in the West Java province.

question: Which two subdistricts does Indonesian National Route 5 link?

answer: Indonesian National Route 5 links the Cileunyi and Palimanan subdistricts.

question: What subdistrict is close to the city of Cirebon?

answer: The subdistrict of Palimanan is close to the city of Cirebon.

question: What city is Cileunyi subdistrict close to?

answer: The Cileunyi subdistrict is close to the city of Bandung.

question: Write a ~1 sentence summary.

answer: Indonesian National Route 5 is a road that links two subdistricts in the Indonesian province of West Java.


text:
"It's finally open!" Joseph shouted as he flipped through the pages of an old tome.

"What's this?" He then said in disgust, "Is this whole thing empty?"

"Wait!" His partner shouted, "I saw something at the beginning."

"impossible." Pouted Joseph "The beginning was the first..."

Joseph never finished that sentence, despite ample time, as he was far too shocked by what he witnessed in the book. With a cautious tone he says,

 "Philip... have I gone mad?"

"I don't think so sir." responded Philip

"So you see it? Writing?"

"Every word sir."

"How can a book write itself?" Joseph said dumbfounded. "I'm more worried that it new your name sir." Philip responded wisely.

There was a short pause.

"Well it seems to like you Philip." Joseph said with undertones of frustration.

"That's great sir! The favor of an old book. I shall treasure it always sir." Philip was chuckling as he said this, but it was met with a sudden realization, which he then announced: "It said you were frustrated Joseph. Why are you frustrated? We got the book..."

"I'm not frustrated!" Joseph responded angrily

"Now it says you're angry sir."

"I bloody am now!" Joseph shouted in resentment of the book held in his hands. "Darn right I'm resentful! What good could come of you?" Joseph asks the thin sheets of tree fiber bound in very dead, but decorated, cow skin.

"So you're saying I won't get an answer?" Joseph asks rhetorically.

"And I didn't say 'darn!' Stop making my words better!"

"Hey," Philip interjects "You didn't actually say anything about it making your words better just now right sir?"

"Of course not!" Joseph shouts again, "It's not even recording the truth!" he states in an insulting manner.

"Well sir, what are we going to do with it?" Philip asks honestly

"Burn it." Joseph responded foolishly. At this time, Joseph was entirely unaware that his fate had been bound like in the bindings of a book. However, some day, near or far, Joseph would realize that should the book burn, than he will share its fate.

"And when, exactly, was I going to learn that tidbit?" Joseph asked. By this point in time, Joseph had taken a great fondness in asking questions with clear and obvious answers. It is rumored that this is derived from an unbearable fear of being wrong, likely because he was often wrong about things as a child.

"You fasting bunt!" Joseph shouted for a third time. Presumably at the tome.

"Do you think it's lying to you sir? You know? To save its own skin?" Philip asks, innocently believing that an inanimate object may have a sense of self preservation.

Then, at great risk of exposing his illiteracy, Joseph announced his latest realization: "That word! 'Inanimate' I bet if we can find what it means, we'll know what this book's up to."

"Hey!" Joseph shouts a fourth time, "I'm not illiterate you bunt." Upon saying this, our cunning and delinquent rogue proceeded ill fortuitously to extrude from his cerebral cortex fundamentals which may then collate the pages of his understanding into a cognitive explanation of the mysterious object held in his finer appendages.

"It said you were cunning!" Philip announced innocently.

"Stop calling me innocent." Philip pouted.

Ignoring Philip, Joseph issued his first logical shout, "I will not be taunted by a fasting dead tree!" At this Joseph shook the book violently, likely wishing it had a neck.

.

.

.

Joseph shuts the book.

 At this time, Joseph believes that the book cannot write if it is shut. What Joseph does not realize, is that not only can the book write, but his curiosity will not allow him to leave it closed for long. In the mean time, Joseph continues to sit there with Philip, not saying a word.

 The two of them had recently burgled a basement. But not just any basement, the basement of a wise and powerful being.

Joseph gives in to his desire for knowledge and opens the book once more.

"It still wrote?" Joseph asked rhetorically.

"And it was about to talk about the wizard!" Philip says with a small chuckle.

.

.

.

Sadly, the adventures of Philip and Joseph then came to an abrupt end. Our hero's did not have the cunning to realize they had remained in the basement for far too long to go unnoticed. They likely did not expect that the wizard's prized book, was perhaps safer if left in its magical chamber. A magical chamber which, no doubt, the wizard will promptly return it to...

title: "What treasured lies within" -First submission, wrote mostly out of curiosity for a new style of thinking.

question: What is the purpose of the book in the story?

answer: The book appears to be a representation of a narrator. It embellishes the truth and represents it all at once, which leads to frustration in the characters. The book points out things that the characters haven't noticed about themselves and their situation, which then makes them aware of themselves and each other. The book's purpose, much like a narrator, is to push forward the story.

question: What can we learn about Joseph's character from the story?

answer: Joseph is amazed by the situation he finds himself in, suggesting that he has a curious nature, however when he is confronted by the book he gets angry quite quickly. Joseph doesn't enjoy being under scrutiny and when the book insults him he gets defensive. Joseph reacts to the book by wishing to but it, but then can't help but reopen it once it was shut indicating he is impulsive.

question: Why are Phillip and Joseph burgling the cellar?

question: What do we learn about Phillip during the story?

answer: Phillip is Joseph's partner in crime. He is inquisitive and the book appears to favor him as it calls him wise. Phillip is also observant as he notices when the book says things that aren't quite true. Phillip is described as being innocent, lending itself to his naivety.


text:
as i was walking down the road i heard the squeal of tires
stopping, then the noise of a van door sliding open. hands
came out and grabbed for me viciously. instantly a bag went over my head. before my heart could start to race with andrealine going throught it i was knocked unconcious.
when i came to i was in an empty room. no furniture, just tan walls, hard wood floors, a window, and a door.
my hands were bound behind my back and my feet were tied together.
the door burst open with a thunderous boom. a balding man with a scraggly beard came into view.
i tried to move o a corner but he closed in and grabbed the collar of my shirt.
it started with a punch to the face. as he kept hitting me he grew more  angry and fierce.
eventually he stopped, and just left with out a word. i noticed the window was open.i wiggled over and weasled my way out.
i didnt know what floor i was on or what was waiting for me on the ground.
i some hoe untied my legs and just started running. my face battered and bruised and bloodied to a point beyond recognition.
a couple yards down the road there was a wal-mart. i ran to it, in hopes my kidnapper would never find me again.
as i was walking through the store begginf people untie my hands or call the police, i realised no one was paying attention to me.
it was like i was a ghost. then this sinking feeling hit me. i could sense his presence. i finally understood how an antelope felt when it was being stalked by a cheetah.
not knowing where to go or what to do i ran. to where i dont know.
i just ran. i saw one of my friends. i ran over to him. thank god he could see me.
he untied my hands and asked "what happened?" i replied "i dont knowbut i got to get out of here."
i ran and hid in a pile of clothes that needed to be hung up.
then i woke up. happy it was over i went back to bed.

title: a night mare i wrote about for a class (i really did dream this)

question: Who was driving the van?

answer: A random man who wants to hurt the narrator.

question: Why did they kidnap the protagonist?

answer: Information can't be found.

question: Describe the story's setting.

answer: The story was set in a random empty room that had no furniture, had tan walls and hardwood floors.

question: Who helped the narrator?

answer: Their friend.

question: Write a ~4 sentence summary.

answer: The narrator walks down the road when they are kidnapped by a random man who brings them to an empty room. He beats up the narrator and then leaves out of nowhere. The narrator escapes and manages to get help from their friend who unties their hands. They hid in a pile of clothes then wakes up and realizes they were dreaming.


text:
-   News

[iPhone]
Not the message you expect from an iPhone thief.
_Photo: Beth Freestone_
An iPhone thief in the U.K. had the audacity to send a message to the phone’s original owner, requesting the iCloud details so they could access their account.

Psychology student Beth Freestone had her handset stolen on a night out in the city of Manchester. Several months later, she then received a message on Facebook from a person claiming to have found the iPhone — but wanting to know how to access its associated accounts.

“Hi, I hope you don’t mind me asking but I was given this phone that I believe you lost and I’m just using it for 2 weeks whilst mine is repaired but I am unable to use it without the password for iCloud is it possible to get it so I can sign out and into my own account,” the message read. “Thank you in advance xx.”

The apparently naive original owner of the iPhone didn’t send the password, but did agree to pay $6.60 (five British pounds) to cover the cost of sending the handset back — only for the thief to keep the money, fail to mail out the iPhone, and then block the device’s owner.

“I just thought she was so cheeky and I was stunned,” Freestone told U.K. newspaper _The Daily Mail_. “I wouldn’t even dream of asking someone that. I would have been asking if they would like me to send it back – not asking for passwords.”

Prior to blocking Freestone on Facebook, one heated message from the thief read: “Phoning the police would do f*** all because I haven’t stolen a phone so don’t try and threaten me and stop calling me off no caller ID it will cost you money when I’m away.”

On another occasion she wrote that: “It will get send [sic] when it gets sent its not a crime as I found it not stole it and am doing you a favour but if you continue to harass me it going in the bin so allow it.”

In a lesson for any iPhone owners out there, Freestone says she didn’t have the Find my iPhone feature activated on her device. The ability to track your iPhone via GPS was first introduced back in 2011, and should be a standard part of anyone’s iDevice security setup.

Source: Daily Mail

question: What request did the iPhone thief sent to the original owner (Beth Freestone)?

answer: The thief requested their iCloud details so they could access their account.

question: How long was Freestone without it before the thief got in touch?

answer: Several months.

question: How did Freestone respond to the thief?

answer: She sent the thief £5 to post her phone to her.

question: What advice does Daily Mail newspaper have for iPhone owners?

answer: The advice is to always the Find my iPhone tracker feature on their phone.

question: Write a ~4 sentence summary.

answer: Beth Freestone has her iPhone stolen. After several months, she received a message from the thief asking her to send the password to her iCloud account. Freestone refuses, opting to send £5 to the thief so that her iPhone can be mailed back. The thief did no such thing, pocketing the money instead, and threatening to bin the phone.


text:
This quick start guide will teach you how to wire up TypeScript with React. By the end, you'll have

-   a project with React and TypeScript
-   linting with TSLint
-   testing with Jest and Enzyme, and
-   state management with Redux

We'll use the create-react-app tool to quickly get set up.

We assume that you're already using Node.js with npm. You may also want to get a sense of the basics with React.

We're going to use the create-react-app because it sets some useful tools and canonical defaults for React projects. This is just a command-line utility to scaffold out new React projects.

    npm install -g create-react-app

We'll create a new project called my-app:

    create-react-app my-app --scripts-version=react-scripts-ts

react-scripts-ts is a set of adjustments to take the standard create-react-app project pipeline and bring TypeScript into the mix.

At this point, your project layout should look like the following:

    my-app/
    ├─ .gitignore
    ├─ node_modules/
    ├─ public/
    ├─ src/
    │  └─ ...
    ├─ package.json
    ├─ tsconfig.json
    └─ tslint.json

Of note:

-   tsconfig.json contains TypeScript-specific options for our project.
-   tslint.json stores the settings that our linter, TSLint, will use.
-   package.json contains our dependencies, as well as some shortcuts for commands we'd like to run for testing, previewing, and deploying our app.
-   public contains static assets like the HTML page we're planning to deploy to, or images. You can delete any file in this folder apart from index.html.
-   src contains our TypeScript and CSS code. index.tsx is the entry-point for our file, and is mandatory.

Running the project is as simple as running

This runs the start script specified in our package.json, and will spawn off a server which reloads the page as we save our files. Typically the server runs at http://localhost:3000, but should be automatically opened for you.

This tightens the iteration loop by allowing us to quickly preview changes.

Testing is also just a command away:

This command runs Jest, an incredibly useful testing utility, against all files whose extensions end in .test.ts or .spec.ts. Like with the npm run start command, Jest will automatically run as soon as it detects changes. If you'd like, you can run npm run start and npm run test side by side so that you can preview changes and test them simultaneously.

When running the project with npm run start, we didn't end up with an optimized build. Typically, we want the code we ship to users to be as fast and small as possible. Certain optimizations like minification can accomplish this, but often take more time. We call builds like this "production" builds (as opposed to development builds).

To run a production build, just run

This will create an optimized JS and CSS build in ./build/static/js and ./build/static/css respectively.

You won't need to run a production build most of the time, but it is useful if you need to measure things like the final size of your app.

We're going to write a Hello component. The component will take the name of whatever we want to greet (which we'll call name), and optionally the number of exclamation marks to trail with (enthusiasmLevel).

When we write something like <Hello name="Daniel" enthusiasmLevel={3} />, the component should render to something like
Hello Daniel!!!
. If enthusiasmLevel isn't specified, the component should default to showing one exclamation mark. If enthusiasmLevel is 0 or negative, it should throw an error.

We'll write a Hello.tsx:

    // src/components/Hello.tsx

    import * as React from 'react';

    export interface Props {
      name: string;
      enthusiasmLevel?: number;
    }

    function Hello({ name, enthusiasmLevel = 1 }: Props) {
      if (enthusiasmLevel <= 0) {
        throw new Error('You could be a little more enthusiastic. :D');
      }

      return (

            Hello {name + getExclamationMarks(enthusiasmLevel)}

      );
    }

    export default Hello;

    // helpers

    function getExclamationMarks(numChars: number) {
      return Array(numChars + 1).join('!');
    }

Notice that we defined a type named Props that specifies the properties our component will take. name is a required string, and enthusiasmLevel is an optional number (which you can tell from the ? that we wrote out after its name).

We also wrote Hello as a function component. To be specific, Hello is a function that takes a Props object, and destructures it. If enthusiasmLevel isn't given in our Props object, it will default to 1.

Writing functions is one of two primary ways React allows us to make components. If we wanted, we _could_ have written it out as a class as follows:

    class Hello extends React.Component<Props, object> {
      render() {
        const { name, enthusiasmLevel = 1 } = this.props;

        if (enthusiasmLevel <= 0) {
          throw new Error('You could be a little more enthusiastic. :D');
        }

        return (

              Hello {name + getExclamationMarks(enthusiasmLevel)}

        );
      }
    }

Classes are useful when our component instances have some state. But we don't really need to think about state in this example - in fact, we specified it as object in React.Component<Props, object>, so writing a function component tends to be shorter. Local component state is more useful at the presentational level when creating generic UI elements that can be shared between libraries. For our application's lifecycle, we will revisit how applications manage general state with Redux in a bit.

Now that we've written our component, let's dive into index.tsx and replace our render of <App /> with a render of <Hello ... />.

First we'll import it at the top of the file:

    import Hello from './components/Hello';

and then change up our render call:

    ReactDOM.render(
      <Hello name="TypeScript" enthusiasmLevel={10} />,
      document.getElementById('root') as HTMLElement
    );

Type assertions

One final thing we'll point out in this section is the line document.getElementById('root') as HTMLElement. This syntax is called a _type assertion_, sometimes also called a _cast_. This is a useful way of telling TypeScript what the real type of an expression is when you know better than the type checker.

The reason we need to do so in this case is that getElementById's return type is HTMLElement | null. Put simply, getElementById returns null when it can't find an element with a given id. We're assuming that getElementById will actually succeed, so we need convince TypeScript of that using the as syntax.

TypeScript also has a trailing "bang" syntax (!), which removes null and undefined from the prior expression. So we _could_ have written document.getElementById('root')!, but in this case we wanted to be a bit more explicit.

Styling a component with our setup is easy. To style our Hello component, we can create a CSS file at src/components/Hello.css.

    .hello {
      text-align: center;
      margin: 20px;
      font-size: 48px;
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif
    }

    .hello button {
        margin-left: 25px;
        margin-right: 25px;
        font-size: 40px;
        min-width: 50px;
    }

The tools that create-react-app uses (namely, Webpack and various loaders) allow us to just import the stylesheets we're interested in. When our build runs, any imported .css files will be concatenated into an output file. So in src/components/Hello.tsx, we'll add the following import.

We had a certain set of assumptions about our Hello component. Let's reiterate what they were:

  -   When we write something like <Hello name="Daniel" enthusiasmLevel={3} />, the component should render to something like
Hello Daniel!!!
.
  -   If enthusiasmLevel isn't specified, the component should default to showing one exclamation mark.
  -   If enthusiasmLevel is 0 or negative, it should throw an error.

We can use these requirements to write a few tests for our components.

But first, let's install Enzyme. Enzyme is a common tool in the React ecosystem that makes it easier to write tests for how components will behave. By default, our application includes a library called jsdom to allow us to simulate the DOM and test its runtime behavior without a browser. Enzyme is similar, but builds on jsdom and makes it easier to make certain queries about our components.

Let's install it as a development-time dependency.

    npm install -D enzyme @types/enzyme enzyme-adapter-react-16 @types/enzyme-adapter-react-16 react-addons-test-utils

Notice we installed packages enzyme as well as @types/enzyme. The enzyme package refers to the package containing JavaScript code that actually gets run, while @types/enzyme is a package that contains declaration files (.d.ts files) so that TypeScript can understand how you can use Enzyme. You can learn more about @types packages here.

We had to install react-addons-test-utils. This is something enzyme expects to be installed.

We also had to make sure esModuleInterop is set to true in the tsconfig.json

Now that we've got Enzyme set up, let's start writing our test! Let's create a file named src/components/Hello.test.tsx, adjacent to our Hello.tsx file from earlier.

    // src/components/Hello.test.tsx

    import * as React from 'react';
    import * as enzyme from 'enzyme';
    import Adapter from 'enzyme-adapter-react-16';
    import Hello from './Hello';

    Enzyme.configure({ adapter: new Adapter() });

    it('renders the correct text when no enthusiasm level is given', () => {
      const hello = enzyme.shallow(<Hello name='Daniel' />);
      expect(hello.find(".greeting").text()).toEqual('Hello Daniel!')
    });

    it('renders the correct text with an explicit enthusiasm of 1', () => {
      const hello = enzyme.shallow(<Hello name='Daniel' enthusiasmLevel={1}/>);
      expect(hello.find(".greeting").text()).toEqual('Hello Daniel!')
    });

    it('renders the correct text with an explicit enthusiasm level of 5', () => {
      const hello = enzyme.shallow(<Hello name='Daniel' enthusiasmLevel={5} />);
      expect(hello.find(".greeting").text()).toEqual('Hello Daniel!!!!!');
    });

    it('throws when the enthusiasm level is 0', () => {
      expect(() => {
        enzyme.shallow(<Hello name='Daniel' enthusiasmLevel={0} />);
      }).toThrow();
    });

    it('throws when the enthusiasm level is negative', () => {
      expect(() => {
        enzyme.shallow(<Hello name='Daniel' enthusiasmLevel={-1} />);
      }).toThrow();
    });

These tests are extremely basic, but you should be able to get the gist of things.

At this point, if all you're using React for is fetching data once and displaying it, you can consider yourself done. But if you're developing an app that's more interactive, then you may need to add state management.

State management in general

On its own, React is a useful library for creating composable views. However, React doesn't come with any facility for synchronizing data between your application. As far as a React component is concerned, data flows down through its children through the props you specify on each element.

Because React on its own does not provide built-in support for state management, the React community uses libraries like Redux and MobX.

Redux relies on synchronizing data through a centralized and immutable store of data, and updates to that data will trigger a re-render of our application. State is updated in an immutable fashion by sending explicit action messages which must be handled by functions called reducers. Because of the explicit nature, it is often easier to reason about how an action will affect the state of your program.

MobX relies on functional reactive patterns where state is wrapped through observables and passed through as props. Keeping state fully synchronized for any observers is done by simply marking state as observable. As a nice bonus, the library is already written in TypeScript.

There are various merits and tradeoffs to both. Generally Redux tends to see more widespread usage, so for the purposes of this tutorial, we'll focus on adding Redux; however, you should feel encouraged to explore both.

The following section may have a steep learning curve. We strongly suggest you familiarize yourself with Redux through its documentation.

Setting the stage for actions

It doesn't make sense to add Redux unless the state of our application changes. We need a source of actions that will trigger changes to take place. This can be a timer, or something in the UI like a button.

For our purposes, we're going to add two buttons to control the enthusiasm level for our Hello component.

Installing Redux

To add Redux, we'll first install redux and react-redux, as well as their types, as a dependency.

    npm install -S redux react-redux @types/react-redux

In this case we didn't need to install @types/redux because Redux already comes with its own definition files (.d.ts files).

Defining our app's state

We need to define the shape of the state which Redux will store. For this, we can create a file called src/types/index.tsx which will contain definitions for types that we might use throughout the program.

    // src/types/index.tsx

    export interface StoreState {
        languageName: string;
        enthusiasmLevel: number;
    }

Our intention is that languageName will be the programming language this app was written in (i.e. TypeScript or JavaScript) and enthusiasmLevel will vary. When we write our first container, we'll understand why we intentionally made our state slightly different from our props.

Adding actions

Let's start off by creating a set of message types that our app can respond to in src/constants/index.tsx.

    // src/constants/index.tsx

    export const INCREMENT_ENTHUSIASM = 'INCREMENT_ENTHUSIASM';
    export type INCREMENT_ENTHUSIASM = typeof INCREMENT_ENTHUSIASM;

    export const DECREMENT_ENTHUSIASM = 'DECREMENT_ENTHUSIASM';
    export type DECREMENT_ENTHUSIASM = typeof DECREMENT_ENTHUSIASM;

This const/type pattern allows us to use TypeScript's string literal types in an easily accessible and refactorable way.

Next, we'll create a set of actions and functions that can create these actions in src/actions/index.tsx.

    import * as constants from '../constants'

    export interface IncrementEnthusiasm {
        type: constants.INCREMENT_ENTHUSIASM;
    }

    export interface DecrementEnthusiasm {
        type: constants.DECREMENT_ENTHUSIASM;
    }

    export type EnthusiasmAction = IncrementEnthusiasm | DecrementEnthusiasm;

    export function incrementEnthusiasm(): IncrementEnthusiasm {
        return {
            type: constants.INCREMENT_ENTHUSIASM
        }
    }

    export function decrementEnthusiasm(): DecrementEnthusiasm {
        return {
            type: constants.DECREMENT_ENTHUSIASM
        }
    }

We've created two types that describe what increment actions and decrement actions should look like. We also created a type (EnthusiasmAction) to describe cases where an action could be an increment or a decrement. Finally, we made two functions that actually manufacture the actions which we can use instead of writing out bulky object literals.

There's clearly boilerplate here, so you should feel free to look into libraries like redux-actions once you've got the hang of things.

Adding a reducer

We're ready to write our first reducer! Reducers are just functions that generate changes by creating modified copies of our application's state, but that have _no side effects_. In other words, they're what we call _pure functions_.

Our reducer will go under src/reducers/index.tsx. Its function will be to ensure that increments raise the enthusiasm level by 1, and that decrements reduce the enthusiasm level by 1, but that the level never falls below 1.

    // src/reducers/index.tsx

    import { EnthusiasmAction } from '../actions';
    import { StoreState } from '../types/index';
    import { INCREMENT_ENTHUSIASM, DECREMENT_ENTHUSIASM } from '../constants/index';

    export function enthusiasm(state: StoreState, action: EnthusiasmAction): StoreState {
      switch (action.type) {
        case INCREMENT_ENTHUSIASM:
          return { ...state, enthusiasmLevel: state.enthusiasmLevel + 1 };
        case DECREMENT_ENTHUSIASM:
          return { ...state, enthusiasmLevel: Math.max(1, state.enthusiasmLevel - 1) };
      }
      return state;
    }

Notice that we're using the _object spread_ (...state) which allows us to create a shallow copy of our state, while replacing the enthusiasmLevel. It's important that the enthusiasmLevel property come last, since otherwise it would be overridden by the property in our old state.

You may want to write a few tests for your reducer. Since reducers are pure functions, they can be passed arbitrary data. For every input, reducers can tested by checking their newly produced state. Consider looking into Jest's toEqual method to accomplish this.

Making a container

When writing with Redux, we will often write components as well as containers. Components are often data-agnostic, and work mostly at a presentational level. _Containers_ typically wrap components and feed them any data that is necessary to display and modify state. You can read more about this concept on Dan Abramov's article _Presentational and Container Components_.

First let's update src/components/Hello.tsx so that it can modify state. We'll add two optional callback properties to Props named onIncrement and onDecrement:

    export interface Props {
      name: string;
      enthusiasmLevel?: number;
      onIncrement?: () => void;
      onDecrement?: () => void;
    }

Then we'll bind those callbacks to two new buttons that we'll add into our component.

    function Hello({ name, enthusiasmLevel = 1, onIncrement, onDecrement }: Props) {
      if (enthusiasmLevel <= 0) {
        throw new Error('You could be a little more enthu

question: What basic assumption does this guide make about the reader?

answer: The guide assumes that the reader is already familiar with the basics of using Node.js.

question: Why does wiring up Typescript involves so many tools and programs like React, MobX, and Redux?

answer: Because there is no one tool that can fulfill all the functions needed.