text:
Abandon Ship
Age of sail FTL-like Abandon Ship leaves Early Access
By Jody Macgregor
Black Sails.
After 20 months in Early Access, Abandon Ship (opens in new tab) is entering version 1.0 and sailing into full release. It's a game of krakens, lightning storms, and pirates that's a bit like a cross between FTL and Sunless Sea, although with a mercifully much faster ship than the latter game.
Version 1,0 contains a full story mode as well as a freeplay mode where you can run your own pirate base, 15 complete regions to explore, over 100 maps each with a unique island, more ship variants, a revamp of its Lifeboat and Stranded mode, the option to play as a lady captain, achievements, and more.
According to developers Fireblade Software (opens in new tab), "Full release is not the end of the journey - we'll continue expanding the game, and the more successful it is, the more cool content we'll keep adding".
Jody Macgregor
Weekend/AU Editor
Jody's first computer was a Commodore 64, so he remembers having to use a code wheel to play Pool of Radiance. A former music journalist who interviewed everyone from Giorgio Moroder to Trent Reznor, Jody also co-hosted Australia's first radio show about videogames, Zed Games (opens in new tab). He's written for Rock Paper Shotgun (opens in new tab), The Big Issue, GamesRadar (opens in new tab), Zam (opens in new tab), Glixel (opens in new tab), Five Out of Ten Magazine (opens in new tab), and Playboy.com (opens in new tab), whose cheques with the bunny logo made for fun conversations at the bank. Jody's first article for PC Gamer was about the audio of Alien Isolation, published in 2015, and since then he's written about why Silent Hill belongs on PC, why Recettear: An Item Shop's Tale is the best fantasy shopkeeper tycoon game, and how weird Lost Ark can get. Jody edited PC Gamer Indie from 2017 to 2018, and he eventually lived up to his promise to play every Warhammer videogame.


text:
The current time in New York, New York

Clock Widget powered by TheWorldTime.net

New York, often called New York City or NYC, is the most populous city in the United States. With a 2020 population of 8,804,190 distributed over 300.46 square miles (778.2 km2), New York City is also the most densely populated major city in the United States, and is more than twice as populous as second-place Los Angeles. New York City lies at the southern tip of New York State, and constitutes the geographical and demographic center of both the Northeast megalopolis and the New York metropolitan area, the largest metropolitan area in the United States both by population and by urban landmass. With over 20.1 million people in its metropolitan statistical area and 23.5 million in its combined statistical area as of 2020, New York is one of the world's most populous megacities, and over 58 million people live within 250 mi (400 km) of the city. New York City is a global cultural, financial, entertainment, and media center with a significant influence on commerce, health care and life sciences, research, technology, education, politics, tourism, dining, art, fashion, and sports. Home to the headquarters of the United Nations, New York is an important center for international diplomacy, an established safe haven for global investors, and is sometimes described as the capital of the world.
Situated on one of the world's largest natural harbors and extending into the Atlantic Ocean, New York City comprises five boroughs, each of which is coextensive with a respective county of the state of New York. The five boroughs—Brooklyn (Kings County), Queens (Queens County), Manhattan (New York County), the Bronx (Bronx County), and Staten Island (Richmond County)—were created when local governments were consolidated into a single municipal entity in 1898. The city and its metropolitan area constitute the premier gateway for legal immigration to the United States. As many as 800 languages are spoken in New York, making it the most linguistically diverse city in the world. New York City is home to more than 3.2 million residents born outside the United States, the largest foreign-born population of any city in the world as of 2016. As of 2022, the New York metropolitan area is estimated to produce a gross metropolitan product of over $2.1 trillion, ranking it first worldwide. If the New York metropolitan area were a sovereign state, it would have the eighth-largest economy in the world. As of 2022, New York is home to the highest number of billionaires and millionaires of any city in the world.
New York City traces its origins to a trading post founded on the southern tip of Manhattan Island by Dutch colonists in approximately 1624. The settlement was named New Amsterdam (Dutch: Nieuw Amsterdam) in 1626 and was chartered as a city in 1653. The city came under English control in 1664 and was renamed New York after King Charles II of England granted the lands to his brother, the Duke of York. The city was regained by the Dutch in July 1673 and was renamed New Orange for one year and three months; the city has been continuously named New York since November 1674. New York City was the capital of the United States from 1785 until 1790, and has been the largest U.S. city since 1790. The Statue of Liberty greeted millions of immigrants as they came to the U.S. by ship in the late 19th and early 20th centuries, and is a symbol of the U.S. and its ideals of liberty and peace. In the 21st century, New York City has emerged as a global node of creativity, entrepreneurship, and environmental sustainability, and as a symbol of freedom and cultural diversity. The New York Times has won the most Pulitzer Prizes for journalism and remains the U.S. media's "newspaper of record". In 2019, New York City was voted the greatest city in the world per a survey of over 30,000 people from 48 cities worldwide, citing its cultural diversity.
Many districts and monuments in New York City are major landmarks, including three of the world's ten most visited tourist attractions in 2013. A record 66.6 million tourists visited New York City in 2019. Times Square is the brightly illuminated hub of the Broadway Theater District, one of the world's busiest pedestrian intersections, and a major center of the world's entertainment industry. Many of the city's landmarks, skyscrapers, and parks are known around the world, as is the city's fast pace, spawning the term New York minute. The Empire State Building has become the global standard of reference to describe the height and length of other structures.
The Stonewall Inn in Greenwich Village, part of the Stonewall National Monument, is considered the historic epicenter of LGBTQ+ culture and the birthplace of the modern gay rights movement. Manhattan's real estate market is among the most expensive in the world. Providing continuous 24/7 service and contributing to the nickname The City That Never Sleeps, the New York City Subway is the largest single-operator rapid transit system worldwide, with 472 passenger rail stations; and Penn Station in Midtown Manhattan is the busiest transportation hub in the Western Hemisphere. The city has over 120 colleges and universities, including Columbia University, New York University, and the City University of New York system, which is the largest urban public university system in the United States. Anchored by Wall Street in the Financial District of Lower Manhattan, New York City has been called both the world's leading financial center and the most powerful city in the world, and is home to the world's two largest stock exchanges by total market capitalization, the New York Stock Exchange and Nasdaq. New York City is the headquarters of the global art market, with numerous art galleries and auction houses collectively hosting half of the world's art auctions.
The Importance of Knowing the Time in New York
Make sure to find the time to make sure it is best. Not all clocks tell the time correctly. Depending on the location of your clock, your time could be off for as much as 5 minutes or more. Looking for more data on this location? Look below for tips such as population and more.
You can use a antique analog clock, your smartphone, or even a sundial to tell the time.
Watches work by logging track of the number of rotations of a particular wheel or spring. As the wheel or spring turns, it moves a gear that is connected to the hands of the clock. The speed at which the wheel or spring turns is regulated by a pendulum or weight, which swings back and forth as the clock ticks.
There are positives and cons to each type of clock. Digital clocks are easy to read at a glance and can be very accurate. However, they can also be more difficult to set and may require batteries. Analog clocks are often more aesthetically pleasing and can be operated without batteries. However, they can be more difficult to read at a glance and may not be as accurate as digital clocks.
How to tell time without a watch
In order to tell time without a clock, you can use a variety of methods that only use the sun and shadows. One method is to find a stick and put it in the ground so that the shadow is cast on the ground. The length of the shadow will indicate what time it is. Another method is to use your hand to estimate how long the shadow is. You can do this by holding your hand up to the sun and making a fist. The area between your thumb and first finger will be about 15 minutes on a sundial. You can also use your watch or phone to find out what time it is by using an online world clock like this one.
New York Facts
18,713,220 10,715 per unit - America/New York
Learn more about New York, New York
New York, often called New York City or NYC, is the most populous city in the United States. With a 2020 population of 8,804,190 distributed over 300
Look up New York in Wiktionary, the free dictionary. New York most commonly refers to: New York City, the most populous city in the United States, located
New York, New York (1977 film)
New York, New York is a 1977 American musical drama film directed by Martin Scorsese and written by Mardik Martin and Earl Mac Rauch based on a story by
New York, New York (disambiguation)
New York, New York is the city of New York, in the state of New York. New York, New York, may also refer to: Manhattan, a borough (within New York City)
Theme from New York, New York
"Theme from New York, New York", often abbreviated to just "New York, New York", is the theme song from the Martin Scorsese film New York, New York (1977)
a consensus. › New York, officially the State of New York, is a state in the Northeastern United States. It is often called New York State to distinguish
South Hamilton
Freysbush
West Burlington
Putnam Station

redpajama_set_name: RedPajamaCommonCrawl


text:
Born in Margaret River in 2004, Colonial Brewing Co makes sure every single brew is made with care, by people who've devoted their life to it. They have created a culture of taking pride in their craft and getting the little details right, controlling every variable with the best equipment available, brewing great beer that is made right every time. In 2015, Colonial expanded and opened another facility in Port Melbourne where they started out doing a few hundred cartons a day to now doing several thousand cartons a day on a full production day.
"Through that time, we've had to look at automation and different upgrades for reliability as well as production output. When we first started canning here, we were doing approximately 4 – 5,000 cans per hour and it's a very manual process with manual six packing, manual case packing and manual palletising. Says Ashley Hazell, Head of Brewing at Colonial Brewing Co. "As we've grown, we've reached the limits of what that can achieve. We've had to look at major production upgrades to find an automation solution, to continue keeping up with demand." Ashley adds.
Fibre King's solution included replacing Colonial's De-Palletiser with a Fibre King one that unlocked the full capacity of their filling unit, doubling their throughput. Fibre King also supplied a Twin Stream 6 pack and 4 pack Can Carrier applicator, WAP20 Case packer; a wraparound case packer that runs at 14 cases per minute and the CP20 Palletiser. Fibre King also provided the conveyor systems that had to overcome the space constraints and included ceiling hung conveyors and a spiral conveyor.
With their full line running, Colonial is now achieving an average run speed of approximately 10,000 cans per hour with a maximum speed of 14,000 cans an hour. "This is a vast improvement on our previous system which was averaging about 7,000 cans per hour." Says Ryan Cleghorn, Packaging Leader at Colonial Brewing Co Port of Melbourne. "Coming into summer, in the busy period when we're normally under the pump and struggling, we should be able to comfortably get through safely and efficiently. Overall major quality improvements for us." Adds Ryan.
Colonial has also seen a reduction in their wastage as a result of the new line. Decreasing from 3 to 4% can wastage over a run and volume wastage down to 1% or less. Their carton wastage is also down to approximately 30 to 40 boxes over a 4,000 carton run.
Colonial has been able to increase production and output and reduce direct labour costs. "Our original line needed three to four people to run approximately 4,000 cans per hour average speed, but with our latest upgrades we're looking at more like 12,000 - to 14,000 cans per hour with two people.: Says Ash. "As we've grown, we've managed to keep the same people but create a larger output by automating the manual processes and allowing the people to focus more on the technical task of maintaining good beer quality rather than just putting kickbacks in boxes." He adds.
"We looked at other companies but chose Fibre King in the end because they were able to fit our needs end to end. Some of the other companies were able to help outsource some equipment but we really wanted one manufacturer to do everything including the install and integration so that it all came together and we only had one point of call if we have issues later down the track. We found Fibre King really good to work with, their technical staff that came out and helped us install it were amazing. We have existing lines to integrate with so we had to run the old line while building the new one and they were more than accommodating helping us to develop our systems and develop our new equipment whilst working around our production schedule and that was probably one of the best things I could have done because we're an active brewery and we couldn't just stop to install this new equipment we had to keep it running and they were excellent in helping us achieve that." Finishes Ash.
Fibre King has worked with countless breweries across Australia providing them with affordable, compact solutions that helps them get their product to market more efficiently and cost effectively. Fibre King is always adding to their craft size range of equipment and are able to work with brewers as they grow to meet production demands. Their canning line solutions can also be altered to suit bottle applications. If you find that you can no longer keep up with manual packaging processes then give Fibre King a call to discuss how they can help automate your production line to unlock your full potential. 1300 831 330.


This entry was posted in Parties & Such. Bookmark the permalink.
This is so thoughtful! Thank you so much Gayle!
CONGRATULATIONS on your new blended family ❤. Love happens when you least expect it. Your wedding pictures are gorgeous. You have a beautiful family. Enjoy!!!
Yay. I'm really happy for you :). Congrats friend!


I'm a twenty-year-old living in Alabama. I've been sending letters for a year and a half now, and it's become a very therapeutic habit for me. I currently have six pen pals (three international and three in the USA). For about a year, I was in a big mail slump that had me only writing about a letter a month, but it finally feels like I'm bouncing back. In light of my rediscovered love of snailmail, I'd like to find one or two more pen pals.
I'm not going to talk a lot about myself because that does ruin some of the fun of letters, particularly the early ones. I'll just tell you a little bit about what I want out of our correspondence. I'd like someone who wants to talk about anything and everything: music, tv shows, books, traveling, aliens, future plans, etc. I'm fond of long letters. The ultimate goal is to become good friends!
If you want to be my pen pal, you need to be eighteen or older. Gender, sexuality, and location don't matter to me (though if it matters to you, I'm bisexual and agender)!
And, if you see my address on my instagram and just have the urge to write a letter to a total stranger, feel free! You don't even have to send me a message. I don't think anything would make my day more than a surprise letter in my mailbox!!!


In the first few weeks of our expedition, if you had asked me whether I still thought trekking across the Australian Outback on foot with a one year old was a good idea – I'd probably would have yelled, "Heck no!".
For me, the first month was like jumping into the deep end of the pool when you just learnt how to swim. On one hand, it was all new and exciting. On the other it was really hard, unfamiliar and overwhelming.
Month one was all about survival. My first priority was being a mom, keeping Morgan safe and helping her to adjust to an unfamiliar and inhospitable environment.
Looking back, I think being an expedition newbie in this case actually helped me. I was a clean slate and I think my naiveté actually helped keep me a little less overwhelmed and more in awe of the journey that lie ahead. I had no expectations and everything was a big adventure.
I knew Justin and I had put in the hard yards during the last several months of planning, training and packing but there aren't too many models of how to take a young kid on an expedition. In many ways we felt like we were forging a new path and lets be honest, when you are taking a one year old into the Outback for three months, there are a tone of unknowns and at some stage you just have to jump in…the big and scary deep end. That's just what adventuring is all about!
In the beginning, all three of our bodies and minds were going through what I now understand, and more commonly known in the expedition or ultra community as the 'adaption phase'.
Over those first few weeks I had been in quite a bit of physical pain, my heels and toes were just one large blister covered by another blister. When I put my boots on in the morning the slightest touch would cause shooting pain that was enough to make me nauseous.
Yes my feet were painful, but honestly this paled in comparison to the emotional threshold I felt myself hitting between pushing my own personal boundaries and those of our family. At the start, looking down the barrel of 90 (+) days of crossing 1,800km, living in the Outback in a tent and carrying all of our supplies, with our one year old felt utterly overwhelming.
During our first week, Justin told me to just mentally break the trip into smaller stages, as he did in in pervious two expeditions. First he told me to only focus on getting to our first food and water drop at Uluru/Mutijulu, 200kms away, anything beyond that at that stage irrelevant. Breaking the trip down into these smaller pieces has helped me keep moving forward and not getting to overwhelmed by the scale of our goal.
I have always been stubborn and when I put my mind to something I will do everything in my power to achieve it and this trip has been no different. My goal for myself in the early days was to just show up, everyday, no matter the conditions and keep Morgan as safe and happy as possible.
So now as we are finishing our fifth week in the Outback I honestly can't believe it. This weird expedition daily life has now become our new normal. Morgan has gone from needing a break or attention from mom every few minutes to happily playing on her own and entertaining herself happily in nature for hours. We've gone from barely making 10km's a day to now pushing just over 20. It seemed at some point over the last two weeks that something just clicked into place for us and somewhere along the way my view of what's possible just seemed to expand.
This week's expedition goal was to make it to our second and third cattle stations, Victory Downs and Mount Cavanagh, where our second expedition food drop awaited us, and then slowly making our way towards South Australia via the Kulgera Road House (which funnily enough was north of us).
As we pulled into Victory Downs after a week on the trail we were greeted with a group of smiling faces who kindly offered us a beer. 'So you must be the mad walkers we've heard about. Dad saw you up on the road a few days ago as he was doing a bore run and thought you were crazy." Tim, the station owners son said. What a warm welcome and how good did a beer (or two) taste after all this time.
I'll never get sick of seeing different people, places and ways of life and Australian Cattle Stations definitely are pretty unique. The remoteness, the size and scale (some are bigger than small European countries), the downhome friendliness and the usefulness is really special to experience. As there are typically no neighbors or stores for hundreds of kilometres, these stations have to be innovative and self-sufficient.
Expeditioning, like life, has funny timing. Just when you start to figure out one thing, another challenge comes rolling your way. Just when our bodies and rhythms started to adjust, Morgan started getting four of her molars all at once.
I would guess that teething isn't a usual expedition issue to mitigate but for us, this has become a big deal. It's the difference between sleeping restfully and recovering from the days walk and spending hours in the tent each night awake asking why, no…screaming why did we do this to ourselves.
Having your kids teething is tough at the best of times but put a toddler and two parents in the tight confines of a tent, out in the remote bush, during an expedition and the issue feels magnified by a million percent.
Walking between 20-30km's per day through the Outback is tough but doing it on zero sleep makes it a serous challenge. I can only pray these teeth come in quick or we might all loose our minds. Without sleep, this expedition is fast becoming increasingly unmanageable, Justin and I are getting increasingly short with each other and our next checkpoint where we might be able to source some teeth numbing gel (I can't believe we didn't bring any!!) cannot come soon enough!


The construction of nature close clay sealed water areas is a specialty of our company. We completed 50.000 m2 of pond area in the last ten years so we have a unique experience in Germany. Our machinery is up to date so we are prepared especially for the realization of large projects.
Ponds and lakes are central elements in urban planning considerations. Open water areas enhance the surrounding, meet the want for swimming in a region and create a habitat for numerous plants and animals.
As artificial static water supply, flood prevention, swimming lakes or for biotopes.


Nursing is still a popular profession, but getting a job these days is a matter of degree.
At the groundbreaking for a new nursing facility on the Lubbock Christian University campus, Thursday, Nov. 21, Cindy Ford, director of the partnership program between LCU and the Covenant School of Nursing, spoke about the importance of modern nursing students receiving a bachelor of science in nursing.
"Nursing research supports that the BSN prepared nurse at the bedside will improve patient outcomes," Ford said in an interview with A-J Media. "That's not a knock to registered nurses ... that's just what research is supporting and today's practice is wanting."
According to The Chronicle of Higher Education, the number of students earning degrees in health professions and other clinical sciences rose 143 percent from 1991 to 2011.
Alicia Anger, dean of the Covenant School of Nursing, said the school routinely gets more than twice the number of applicants than they have seats available.
The new facility, which will house the LCU School of Nursing and Covenant, will accommodate future growth for both schools, bringing in more nurses and providing them a place in which to earn their bachelor's degrees.
Ford said a reason for employers placing more emphasis on a BSN, rather than simply an RN, is the increased training those nurses get in assessing potential health risks in their patients.
"They can act on those (risks) in a quick manner so that the patent doesn't deteriorate through their assessment," she said.
Ford, who teaches graduate nursing classes at LCU, said the demand for a bachelor's degree isn't the only way the nursing industry is changing. In her more than 16 years of teaching, Ford said she's seen a trend of increasing numbers of men, blacks and Hispanics moving into the field.
The new 57,000 square-foot building on the LCU campus will include offices, classrooms and computer labs specifically designed for educating nurses for both LCU and Covenant. Construction is set to begin in December.
LCU President Tim Perrin said the current projected date of completion is summer 2015.
The building was funded in part by a $10 million gift given to the LCU Foundation by the J.T. and Margaret Talkington Charitable Trust.
It is the largest gift the LCU foundation has ever received.


We have very robust safeguarding and pastoral systems in place. Our House System is developing pupil leadership at all levels and our new Pupil Parliament has been launched in January 2019. The carefully designed curriculum is broad, balanced and inclusive. The majority of our pupils access the English Baccalaureate subjects at Key Stage 4. We work closely with our feeder primary schools and with the other schools in the Trust to ensure appropriate challenge across subject areas. Our Teaching and Learning practice is founded on the pedagogical principles of Dr Doug Lemov. Lord Derby Academy, with its traditional approach to education and its ethos of high aspiration, provides a progressive learning environment in the heart of a caring community. We operate to the highest of standards. We are unwavering in our ambition for every pupil and we work tirelessly to ensure each individual receives a quality educational experience and is set on a personal pathway to success.
"Good behaviour is the norm at this school".


A bridge over the Ribble remains "in the mix" of Lancashire's long-term transport ambitions - but would probably only get the green light if it brought economic benefits stretching far beyond the river which it would span.
That was the message to councillors in Preston, Chorley and South Ribble who were discussing the development of a new transport vision for the three districts.
Lancashire County Council's Head of Planning, Marcus Hudson, said that the often-promised structure still "featured" in an overall strategy for the county - but added that it would need to prove its worth before it got off the drawing board.
"It's about how you build a business case for something of that scale," he said.
"Just how much does it does support the aspirations for [housing] development in the area and wider regional ambitions? I think any business case would have to [focus] on the latter.
"It has to be in the mix from the outset of this [transport review] process, but whether it's still there in terms of a justifiable proposition at the end of it, I couldn't say," Mr. Hudson explained.
The idea of a Ribble crossing has been raised on several occasions over the years, most recently in 2016, when it formed part of a proposal from Lancashire's Local Enterprise Partnership.
It described the possibility of an uninterrupted dual carriageway between the A582 at Cuerden and the M55 - via the new Penwortham bypass and across the river to join the planned Preston Western Distributor Road off the A583. However, any scheme was not expected to begin until 2026.
Preston City councillor Neil Henderson-Cartwright told fellow members of the Central Lancashire Joint Advisory Committee that the importance of the cross-river link should not be underestimated.
"I would have thought that there was a strategic case for the wellbeing of Central Lancashire, as well as Fylde and West Lancashire," he said.
"It does solve a lot of problems - not least for A6 traffic when the M6 is closed and people have to come through Preston.
"It is something which has got to be there [in principle], so we can demonstrate that this is seen as a very important proposal - and so that nobody can say in five years' time that we did a masterplan and yet there was no mention of it," Cllr Henderson-Cartwright added.
Work is underway to refresh a medium-term transport plan specifically for Central Lancashire, while a 25-year strategy is also being developed for the entire county.
"People believe that the infrastructure should be in place before [new] houses, but that is very difficult to achieve - we need the housing in place to fund the infrastructure," Mr. Hayward said.


Jasmine Burnett is an ATLien, writer and Beyoncé-enthusiast. She is a co-founder of Life of a Single Spoon, a digital collective for black femmes, and loves pop-culture podcasts, cooking, and brainstorming ways to strengthen communities of color against the forces of gentrification and displacement. She is always rooting for everybody black, especially black women.


You have not tasted okpa until you taste 'okpa ndi Enugu' (Enugu okpa). Okpa is best prepared using a few ingredients because the beans –Bambara beans- has its own peculiar taste. Depending on preference, you can make okpa with fresh pepper and uziza leaf.
The leaves are preferable because it gives a certain taste to the okpa. Others might decline because the colour of the leaves sips into the okpa, which reduces the yellowish colour. However, you can use both nylon and leaves, that way, you do not lose the leaves taste and you can retain the colour.
Sieve the okpa flour into a big bowl, add your grounded crayfish, salt, smashed seasoning cubes and mix.
Pour the oil into the mixture and mould with your hands until you achieve unity in colour, yellow.
Boil the water in a pot . It should not be steaming hot but rather lukewarm.
Slowly pour the water into the mixture while you knead. The quantity of water depends on how you want the end result to be. If very soft, add a generous amount, if on the fence of soft and hard, act accordingly.
Add the blended pepper and sliced uziza into the mixture and use a turning stick to stir not hands. Set aside when ready.
Boil water in a pot. Ensure that the water is enough for the wrapped okpa to be completely soaked.
Wash the leaves and nylon thoroughly.
Wrap the okpa into sizes of your choice and place in the pot of steaming water.
Allow boiling for at least an hour and serve hot.


We would love to thank you for making our wedding so spectacular! Thank you so much for all that you did throughout the night and for keeping our guests on the dance floor. We have heard so many wonderful things about our wedding, but we have heard from everyone that we talk to how great you were with everything from the ceremony music, to the introductions, and finally to the awesome mixes during the reception! You can be sure that we will recommend you to all of our friends. Thank you again.
Hello! I'm Michael Norday, moblie disc jockey providing entertainment for every occasion throughout New England with a commitment to excellence and professionalism.
Your event is very special, and every detail is critical to success. Whether a wedding, anniversary, birthday, prom, reunion; your affair will be unforgettable!
Featuring a vast library of music delivered with state of the art equipment. Together we can create a perfect mix for the ultimate event.


text:
/**
 *
 * @author degtyarjov
 * @version $Id$
 */
package com.haulmont.yarg.structure.xml.impl;

import com.haulmont.yarg.exception.ReportingXmlException;
import com.haulmont.yarg.structure.*;
import com.haulmont.yarg.structure.impl.*;
import com.haulmont.yarg.structure.xml.XmlReader;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SuppressWarnings("unchecked")
public class DefaultXmlReader implements XmlReader {

    @Override
    public Report parseXml(String xml) throws IOException {
        try {
            SAXReader reader = null;
            try {
                SAXParserFactory factory = SAXParserFactory.newInstance();

                SchemaFactory schemaFactory =
                        SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

                factory.setSchema(schemaFactory.newSchema(
                        new Source[]{new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream("reporting.xsd"))}));

                SAXParser parser = factory.newSAXParser();

                reader = new SAXReader(parser.getXMLReader());
            } catch (SAXException e) {
                throw new ReportingXmlException(String.format("An error occurred during loading reporting xsd. \\n[%s]", xml), e);
            } catch (ParserConfigurationException e) {
                throw new ReportingXmlException(String.format("An error occurred during loading reporting xsd. \\n[%s]", xml), e);
            }

            Document document = reader.read(new StringReader(xml));
            Element rootElement = document.getRootElement();
            Map<String, ReportTemplate> templateMap = parseTemplates(rootElement);
            List<ReportParameter> reportParameters = parseInputParameters(rootElement);
            List<ReportFieldFormat> reportFieldFormats = parseValueFormats(rootElement);
            BandBuilder rootBandDefinitionBuilder = new BandBuilder().name(BandData.ROOT_BAND_NAME);
            parseQueries(rootElement.element("rootBand"), rootBandDefinitionBuilder);
            parseChildBandDefinitions(rootElement.element("rootBand"), rootBandDefinitionBuilder);
            ReportBand rootBandDefinition = rootBandDefinitionBuilder.build();
            String reportName = rootElement.attribute("name").getText();
            ReportImpl report = new ReportImpl(reportName, templateMap, rootBandDefinition, reportParameters, reportFieldFormats);
            return report;
        } catch (DocumentException e) {
            throw new ReportingXmlException(String.format("An error occurred while parsing report xml. \\n[%s]", xml), e);
        } catch (FileNotFoundException e) {
            throw new ReportingXmlException(String.format("Could not find report template. \\n[%s]", xml), e);
        } catch (ClassNotFoundException e) {
            throw new ReportingXmlException(String.format("Report parameter class not found. \\n[%s]", xml), e);
        }
    }

    /**
     * Override this method to load files differently from basic file system way
     *
     * @param documentPath - path to document (file system path or other if overriden)
     * @throws FileNotFoundException
     */
    protected FileInputStream getDocumentContent(String documentPath) throws FileNotFoundException {
        return new FileInputStream(documentPath);
    }

    protected Map<String, ReportTemplate> parseTemplates(Element rootElement) throws IOException {
        Element templatesElement = rootElement.element("templates");
        List<Element> templates = templatesElement.elements("template");
        Map<String, ReportTemplate> templateMap = new HashMap<String, ReportTemplate>();
        for (Element template : templates) {
            String code = template.attribute("code").getText();
            String documentName = template.attribute("documentName").getText();
            String documentPath = template.attribute("documentPath").getText();
            String outputType = template.attribute("outputType").getText();
            String outputNamePattern = template.attribute("outputNamePattern").getText();

            ReportTemplate reportTemplate = new ReportTemplateBuilder()
                    .code(code)
                    .documentName(documentName)
                    .documentPath(documentPath)
                    .documentContent(getDocumentContent(documentPath))
                    .outputType(ReportOutputType.getOutputTypeById(outputType))
                    .outputNamePattern(outputNamePattern).build();

            templateMap.put(reportTemplate.getCode(), reportTemplate);
        }

        return templateMap;
    }

    protected List<ReportParameter> parseInputParameters(Element rootElement) throws FileNotFoundException, ClassNotFoundException {
        List<ReportParameter> reportParameters = new ArrayList<ReportParameter>();

        Element inputParametersElement = rootElement.element("parameters");
        if (inputParametersElement != null) {
            List<Element> parameters = inputParametersElement.elements("parameter");
            for (Element parameter : parameters) {
                String name = parameter.attribute("name").getText();
                String alias = parameter.attribute("alias").getText();
                Boolean required = Boolean.valueOf(parameter.attribute("required").getText());
                Class type = Class.forName(parameter.attribute("class").getText());
                Attribute defaultValueAttr = parameter.attribute("defaultValue");
                String defaultValue = null;
                if (defaultValueAttr != null) {
                    defaultValue = defaultValueAttr.getText();
                }

                ReportParameterImpl reportParameter = new ReportParameterImpl(name, alias, required, type, defaultValue);
                reportParameters.add(reportParameter);
            }
        }

        return reportParameters;
    }

    protected List<ReportFieldFormat> parseValueFormats(Element rootElement) throws FileNotFoundException, ClassNotFoundException {
        List<ReportFieldFormat> reportParameters = new ArrayList<ReportFieldFormat>();
        Element formatsElement = rootElement.element("formats");

        if (formatsElement != null) {
            List<Element> parameters = formatsElement.elements("format");
            for (Element parameter : parameters) {
                String name = parameter.attribute("name").getText();
                String format = parameter.attribute("format").getText();
                reportParameters.add(new ReportFieldFormatImpl(name, format));
            }
        }

        return reportParameters;
    }

    protected void parseChildBandDefinitions(Element bandDefinitionElement, BandBuilder parentBandDefinitionBuilder) throws FileNotFoundException, ClassNotFoundException {
        Element childrenBandsElement = bandDefinitionElement.element("bands");
        if (childrenBandsElement != null) {
            List<Element> childrenBands = childrenBandsElement.elements("band");
            for (Element childBandElement : childrenBands) {
                String childBandName = childBandElement.attribute("name").getText();
                BandOrientation orientation = BandOrientation.fromId(childBandElement.attribute("orientation").getText());
                BandBuilder childBandDefinitionBuilder =
                        new BandBuilder()
                                .name(childBandName)
                                .orientation(orientation);

                parseQueries(childBandElement, childBandDefinitionBuilder);
                parseChildBandDefinitions(childBandElement, childBandDefinitionBuilder);
                ReportBand childBandDefinition = childBandDefinitionBuilder.build();
                parentBandDefinitionBuilder.child(childBandDefinition);
            }
        }
    }

    private void parseQueries(Element bandElement, BandBuilder bandDefinitionBuilder) {
        Element reportQueriesElement = bandElement.element("queries");

        if (reportQueriesElement != null) {
            List<Element> reportQueryElements = reportQueriesElement.elements("query");
            for (Element queryElement : reportQueryElements) {
                String script = queryElement.element("script").getText();
                String type = queryElement.attribute("type").getText();
                String queryName = queryElement.attribute("name").getText();

                bandDefinitionBuilder.query(queryName, script, type);
            }
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
Family embraces truckie after son's death
4:06pm Jun 12, 2013
The family of a teenager who was killed as he crossed the road have embraced the driver of the truck that hit him.
Dietrich Dominiac, a truck driver with more than 40 years experience, had no idea his trailer had struck and killed 17-year-old Rhys Walker until his boss told him later.
He hadn't seen anyone when he was making a left hand turn at 25 km/h.
"There was no pedestrians," Mr Dominiac told Glebe Coroner's Court on Wednesday.
"I came into the intersection. The lights are still are green - I still haven't seen anyone."
Rhys, whose cerebral palsy and epilepsy left him with sight and hearing impairments, died when he was struck by the truck's trailer on the corner of Great Western Highway and Old Bathurst Road, Emu Plains in September 2011.
"It was just a tragic turn of events," police sergeant Naomi Lyall told the inquest.
Alleged gunman leads police on wild chase in Sydney's west
Teenager charged with murder of stepmother in Sydney
$1M reward to solve brutal murder of western Sydney business owner
Sgt Lyall said neither party had done anything illegal and there was little that could be done at the intersection to avoid future accidents.
Outside the court Rhys's family embraced Mr Dominiac.
Rhys' father Nicholas Walker said his son had trained with staff at Guide Dogs to cross the various roads he often used, including the ones he died on
"He had various disabilities but didn't let them impact on his life in any way," Mr Walker said.
"He was eager to learn to be independent."
Mr Walker told the inquest that a footbridge should be built for students to cross that road and a speed camera should be installed to catch cars turning on red lights.
NSW deputy state coroner Paul MacMahon is due to hand down his finding on Thursday.
Woman 'ran over boys in vengeance hit-run'


The Royal Palm Grille is the perfect dining experience in Miramar Beach, Florida, near Destin. Visit our homepage for hours, menus, location, and information on our sushi, raw, Tiki, and beach bars. Hope to see you soon!


When my friend 'A' announced we were off to Shropshire for another weekend of trail riding, my heart missed a beat.
"Oh that's great," I said, feigning excitement, when in reality my old bones were creaking in advance protest at the thought of 12 hours in the saddle. Was this really a good idea? Surely we were too old for such capers.
But A is a forceful woman and I knew better than to protest so, like a dutiful friend, I agreed with a smile and rushed out to the local saddlers with just two hours to spare for a new pair of lightweight jods. After trying on some strange new-fangled riding tights which made me look like I was about to do a shotput event, I plumped for a looser pair — not as lightweight as I had hoped, but extremely comfortable all the same.
The temperature for the weekend was set to get hotter than Barcelona and the thought of sweltering in thick clothes, long boots and a hat didn't appeal. So armed with sun cream, wine, painkillers and my new purchase, we set off with our latest recruit 'C' in the driving seat.
Now for anyone who hasn't been, Shropshire is a beautiful county with superb riding through stunning countryside. There are quiet country lanes, miles of off-road tracks and a number of wide, sweeping paths cut around the edges of farmers' fields for horses and riders to use. The pubs even offer tie-up areas and turn out fields for horses while riders nip inside for a quick drink or spot of lunch. Perfect. It really is riding country and our destination, Country Treks, was situated in the lovely village of Stottesdon, just a few miles from Bridgnorth. The only problem was that each time we had been before, we struggled to find it.
Like some enchanted Brigadoon, rising out of the Scottish mist once every 100 years, Stottesdon always seems to be three miles away. No matter which route we follow, my old road atlas, is quite unable to take me there. We have spent literally hours circling the same few miles until finally we stumble across it, exhausted and irritable, vowing to throw the old map away and invest in a sat nav.
But this trip was different. C was driving and she had an in-car navigation system that looked sophisticated enough to land planes at the airport. Rather than our usual inept efforts, with A and I bumbling around like a pair of short-sighted day trippers, we drove straight to the door without incident. The pub beckoned but the Knackered Riders Club lived up to its name and it wasn't long before we scurried home, moaning that the music from the live band was too loud.
The next morning, after enough breakfast to sink a battleship, it was down to the yard and we were given our horses. Mine was a 16.3hh coloured mare called Puzzle who looked strong enough to carry me, with my scrambled eggs, toast and all. So with the help of the mounting block, I got on. Much taller than I was used to, she felt very comfortable indeed. C was given a pretty grey mare called Willow, while A snaffled her favourite, Lucky, a New Forest type that she had ridden before.
Led by our instructor Chloe, we set off through the village, heading for the Clee Hills. On our way to Brown Clee, we took in tracks and fields, with plenty of canters and before I knew it, my face was fixed in a permanent smile. There really is something about breathing in the clean country air and being on horseback that makes you feel so joyful that everything else pales into oblivion.
The hedges were cloaked in swathes of creamy hawthorn blossom with delicate fronds of cow parsley and clumps of pink campion wild flowers beneath. Cantering up a sloping field, a deer appeared at the top, watching us as we approached, then popped smartly over a fence to disappear into the woods just at the last moment. As we dropped back down to the lane, a brown hare sunbathed at the edge of the field while a hawk hovered overhead, effortlessly floating on the breeze. A herd of wild ponies trotted over to us, their eyes alert, their nostrils blowing as we rode past.
The second day was equally spellbinding. My back was starting to stiffen up by now and my legs were aching but there was no way I was going to miss a single moment of our wonderful trip. Sadly as all good things must come to an end, so did our trip to Shropshire.
"We must come again next year," I said, as we packed the car. "Don't be silly, that's far too long to wait — I've already been into the office and booked to come back this summer," replied A. I smiled. There's no point arguing with a woman on a mission.


Combining retro-chic charm with a contemporary flair, make this an eye-catching addition to your living room, den, or master suite. Seat Dimensions 21-Inch D x 26-Inch W x 19-Inch H, Back Height: Low 31-Inch H, High 39-Inch H.
Highlighted by shimmering nail heads, let the sumptuous fabric of this contemporary dining chair envelope you in comfort with stylish ease.
Sorry Craigslist and eBay, but we are never ever getting back together. Secondhand shopping IRL trumps online buys—and here's expert advice on how to do it right.


text:
'Dangerous Grounds' Todd Carmichael brews up 'coffee and conversation around the table'
Jacqueline Cutler November 5, 2012
It's midmorning, so Todd Carmichael, the adventurous host of Travel Channel's "Dangerous Grounds," premiering Monday, Nov. 5, is about to switch from regular coffee to espresso.
Since his doctor persuaded him to reduce caffeine consumption, Carmichael is down to about 10 espressos and four French presses a day.
"It used to be obscene," he tells Zap2it. "I would have to not tell people the exact number because I was embarrassed."
His consumption, though, and his passion for coffee make Carmichael the ideal host of the eight-episode show, as he travels to Haiti, Bolivia, Borneo and Madagascar in search of the perfect bean.
As co-founder and co-owner of La Colombe Torrefaction, which imports coffee and has seven cafes in New York, Philadelphia, Chicago and South Korea, Carmichael notes how the perfect cup of joe enhances any meal but stands alone so well.
"Coffee and conversation around the table," Carmichael says of one of life's simple pleasures, "dark and thick and as much caffeine as you can possibly get into it."
In the pilot, it's clear Carmichael — the world record holder for the fastest unsupported trek to the South Pole — likes a challenge. In Haiti's warmer climes, he talks an old coffee farmer into allowing him to sample his crop.
Carmichael travels with a portable lab and roasts, grinds and boils coffee.
Anyone who understands how delicious a strong cup of black coffee is, and how it complements a meal or brings people together to talk, will find something in this show and be enchanted by his eloquence discussing coffee.
"African coffees are an acidic coffee, like fruit," he says. "They have a place. There is something about the roundness in the Haitian, more about the cup together with The New York Times, with a nice song playing in the background."
He came by his love of coffee and adventure naturally. In college, Carmichael worked for Starbucks, hauling sacks of beans.
"I was a farm boy," he says of his youth outside of Spokane, Wash.
"At the beginning, it was like coffee chose me," Carmichael says. "And later on in life I chose coffee."
"I just was reading a collection of adventure stories put out by Men's Journal that my wife gave me a couple of days ago, of extreme travel."
"Injera, Ethiopian food, tibs — squares of beef seasoned with berbere. Doro wat (chicken)."
What is your next project?
"I am interested, now that there is a quasi-cease-fire, in Colombia; Colombia is necessary. Half the coffee-growing region has been off the table for so long. I am eager to get back there."
Where did you go on your last vacation?
"Very simple: St. Bart's. I take my family every year."
Posted by:Jacqueline Cutler
Previous articleNews & FeaturesLady Gaga on her weight gain: 'Adele is bigger than me'
Next articleNews & Features10 Spoilers: 'Teen Wolf' gives Stiles a friend, 'Nikita' risks exposure, and 'Hawaii Five-0' introduces Danny's nephew


YouGames.eu - Princess Room Face Painting, play online for free!
Holiday is here and our princesses are looking to do something fun. In this game you have to makeup our girls with amazing face paintings. Choose the most beautiful colors and accessories for their face painting party. Good Luck!


text:
Oklahoma AG hires outside attorneys on gambling negotiations
FILE – In this Thursday, Sept. 12, 2019 file photo, Oklahoma Attorney General Mike Hunter speaks during a news conference in Oklahoma City. Hunter has agreed to pay a Michigan law firm up to $250,000 to help represent the state in negotiations with Oklahoma-based Native American tribes over compacts that allow gambling. Hunter's office signed the agreement last week with Ann Arbor-based law firm Dykema Gossett. (AP Photo/Sue Ogrocki, File)
OKLAHOMA CITY (AP) — Oklahoma's attorney general has agreed to pay a Michigan law firm up to $250,000 to help represent the state in negotiations with Oklahoma-based Native American tribes over compacts that allow gambling.
Republican Mike Hunter's office signed the agreement last week with the national law firm Dykema Gossett. A Hunter spokesman said Friday the outside attorneys were necessary because of their experience in tribal negotiations.
"When dealing with issues as complex as compact negotiations, it is important to have experts with experience in this area," said Hunter spokesman Alex Gerszewski. "Dykema has a proven record of success in tribal compact and gaming negotiations. We believe with their help, we can achieve a successful outcome for both the state and our tribal partners."
Discussions between the state and the tribes got off to a rocky start this summer when new Republican Gov. Kevin Stitt said he wanted to renegotiate the deals, suggesting the state should get a larger share of gambling revenue.
Tribal leaders have suggested they are open to renegotiating some of the terms, but the two sides disagree over whether the existing compacts automatically renew on Jan. 1.
Oklahoma's current gambling compacts call for the tribes to pay the state between 4% and 10% of a casino's net revenue in "exclusivity fees." Those fees generated nearly $139 million in payments to the state last year on roughly $2.3 billion in revenue from games covered under the compacts. Non-tribal commercial operators are prohibited under the compacts from allowing gambling in Oklahoma, although a certain number of electronic gambling machines are allowed at horse racetracks.
The Oklahoman newspaper first reported on the state's contract with Dykema.
Criminal Justice News, News
Illinois lawsuit filed against top e-cigarette maker
Purdue Pharma begins Chapter 11 bankruptcy journey


In cases where there is more than one option for a track requirement, the option not taken to satisfy the track requirement can be taken to satisfy a track elective. For example, under track 1, a student might take THL 4200 as a required course and then take THL 5950 to satisfy one of the electives for the track.
*Topics courses will meet requirements for the ethics concentration with the permission of the director.


Training camps are coming to a close as Brendan and Stefen talk regarding the Rangers and Islanders preseason performances, as well as other news from around the NHL. Yankees fight against the Red Sox, as the season is coming to a close. Pine and Twine Sports on the Red Beat.


). Such online tests let you see what internet speeds you're actually achieving. It's advised to do several speed tests throughout the day in case your speeds are varying at different times. If you are getting a slower speed than you were promised by your service provider, get in touch and they should be able to talk you through your options.


text:
← Pain Management in Athletes: A Conversation with South Africa's Wayne Derman
What's in a word? →
Concussions: The "Injury of 2018"
December 11, 2018 by sportingjim 2 Comments
Concussions remain a dominant subject in the sport medicine literature and media at large — Photo: PET Scan Brain, Wikimedia
As 2018 winds down, the Clinical Journal of Sport Medicine, like so many of its sister media, finds itself in a reflective mood.
Time magazine, for instance, has just named its "Person of the Year": a group of journalists the magazine notes has been 'targeted' for the work they do pursuing the truth. Time calls them The Guardians. It is an interesting selection: a media outlet honoring other professionals in its own line of work.
I thought it time that CJSM do its own version of "Person of the Year," but with a sport medicine twist — Injury of the Year.
I'm naming "Concussion" the Injury of the Year. In 2019, I'll have my 'act together' and put out a Twitter poll in late November for reader contributions; but in 2018, I'll have to play judge and jury, given that it's nearly mid-December. Thanks for indulging me!
Like LeBron James of the NBA, who could probably be named MVP in any year he has played in the league, concussion is a sports injury which could probably earn this distinction in any year over the last decade or more.
In truth, 2018 was a red banner year for the injury, so to speak. As an example, nearly our entire March 2018 issue was devoted to original research on various aspects of the subject, including a systematic review on the long-term consequences of traumatic brain injury in professional football players. Continuing this line of reasoning, I would draw your attention to another noteworthy systematic review just published in our last issue of 2018 (November). This one looks at the utility of blood biomarkers in the assessment of sports-related concussions (spoiler alert: we have a long way to go in developing these for 'prime time').
The dominant theme of our 2018 podcasts was, again, concussion. Our most popular, most downloaded podcast of the year was an interview with Dr. J. Scott Delaney of McGill University in Canada: why do professional football players choose to under report their concussions. Another one of the most downloaded podcasts was courtesy of Chris Nowinski PhD, who offered his opinions on what FIFA did wrong with concussion management in the 2018 World Cup, and how they could work toward getting it 'right' in 2022.
Finally, we caught up with David Howell PhD and Christina Master MD, both of whom are well-known researchers and frequent authors in these pages; both of whom shared their insights on the CJSM Podcast into the original research they are doing into concussions.
Like so many of the past years of these 'tweens' of the third millenia, this has been a notable one for concussions outside of our journal pages, of course. I plan to write a couple more posts this month which will return to issues surrounding the injury. They include a commentary on the book Brainwashed, just published a couple of months ago, which I am in the midst of reading. With the subtitle "The Bad Science Behind CTE, and the Plot to Destroy Football," this book is sure to get a reaction.
In closing, I would like to direct you to a brief report just published in one of our sister journals, which makes for appropriate reading most especially in the context of the previous mention of the 2018 FIFA World Cup. JAMA just published a research letter looking at video analysis of head injury evaluations in this past World Cup. If you find you are only able to access the JAMA abstract, you may look as well at this commentary on the study courtesy of Emory University. These articles, too, probably need a spoiler alert: despite efforts made to improve concussion management subsequent to the 2014 World Cup, FIFA still struggled to model up-to-date concussion identification and management practices in this most recent World Cup.
Arguably the biggest sporting event and the biggest stage on the planet — and we're still getting it wrong.
Yes, indeed, 2018 was the Year of Concussions. Who knows what's in store for this injury in 2019? Stay tuned to CJSM, as we'll be sure to be contributing to the global advancement of our understanding of this injury.
Filed under CJSM Podcasts, Concussion in Sport, Elite sport, General Interest
2 Responses to Concussions: The "Injury of 2018"
Pingback: What's in a word? | Clinical Journal of Sport Medicine Blog
Pingback: Optimizing Care for Scholastic Athletes (December 21, 2018) – Sports Medicine Research Podcast


text:
package io.bot.email.handlers;

import io.bot.email.model.Preferences;
import io.bot.email.model.SetupState;
import org.telegram.telegrambots.api.methods.BotApiMethod;
import org.telegram.telegrambots.api.methods.updatingmessages.EditMessageText;
import org.telegram.telegrambots.api.objects.Message;
import org.telegram.telegrambots.api.objects.Update;
import org.telegram.telegrambots.api.objects.replykeyboard.InlineKeyboardMarkup;
import org.telegram.telegrambots.api.objects.replykeyboard.buttons.InlineKeyboardButton;

import java.util.ArrayList;
import java.util.List;

import static java.lang.StrictMath.toIntExact;

public class ChangeAddressHandler extends AbstractHandler{
    @Override
    boolean accept(Update update, Preferences preferences) {
        return update.hasCallbackQuery()
                && update.getCallbackQuery().getData().equals("changeEmail");
    }

    @Override
    BotApiMethod handle(Update update, Preferences preferences) {
        Message message = update.hasMessage() ? update.getMessage() : update.getCallbackQuery().getMessage();
        preferences.setSetupState(SetupState.CHANGE_ADDRESS);
        return new EditMessageText()
                .setChatId(message.getChatId())
                .setMessageId(toIntExact(message.getMessageId()))
                .setText("Please enter your Email address");
    }

}


Air amplifier or "air movers" from Nex Flow™ Air Products Corp., are a simple, inexpensive devices with virtually no maintenance that can convey fumes, smoke, lightweight materials and move a high volume of air for cooling, blowoff and drying applications. They use the "coanda effect" which entrains a large amount of surrounding air using only a small amount od compressed air. The effect is an amplification of up to 17 times the airflow or more (depending on the size) with reduced noise levels. Using only compressed air, the output flow and vacumm is easily controlled by adjusting or opening the air gap and/or inlet pressure. Either end of the air amplifier may be ducted to address all kinds of applications from bringing in fresh air into an area to removing nasty fumes. Be wary of unrealistic or unsubstantiated amplification ratios claimed by some companies.
Standard "Fixed Air" Amplifier is made of a zinc die cast system and is solid and performs as well or better than many supposedly patented designs when used in similiar applications. The gap can be adjusted by using shims. Five sizes are available.
Adjustable Air Amplifier is made of anodized aluminum or stainless steel for high temperature or food applications. The customer can set the gap and lock it in place using a lock ring. Three sizes are available.
A small amount of compressed air enters the annular chamber at point (A) that is then throttled through a small ring nozzle at high velocity and into the inside of the amplifier over a coanda profile. The compressed air stream clings to the coanda profile as it enters the inside walls of the amplifier and thereby creating a vacuum that induces the outside air at point (B) converting the pressure into amplified airflow. The amplified of airflow leaves at the exit at point (C). Airflow is further amplified downstream at point (D) by entraining additional air from the surroundings at the exit.
Made of Zinc alloy for strength and light weight.
Lower compressed air consumption than ejectors and venturis.
Instant on-off, no moving parts, no electricity or explosion hazard.


text:
Ofer - Stone Throwing, Minors
Norah Orlow, Ofra Ben-Artzi
Courtroom 2
Ofra reporting:
In Justice Captain Sharon Rivlin-Ahai's court 24 children stood trial. On Mondays and Thursdays, in Courtroom 2 of the Military Court Captain Rivlin-Ahai serves as a juvenile judge. We observed about half the cases for two hours, until lunch break, as pairs of detainees were ushered in by a prison guard, handcuffed to each other. They all wore brown prison uniform, looking like a class of school kids, except that instead of teachers and aides there were only typists, a prosecutor and a judge.
At this point we'd like to cite the U.N. Convention on the Rights of the Child whose Article One states: "a child means every human being below the age of eighteen." Although Israel ratified the Convention in 1991, it violates it most blatantly and discriminatorily in the occupied Palestinian Territories. A recently published UN report states, "According to military rules governing the occupied Palestinian Territories, a child is a person below the age of sixteen, even though according to the civil law in Israel, which includes the Jewish settlements in the Territories, a child, or a minor is someone below the age of eighteen." Thus, from now on, we shall refer to all Palestinian minors as "children". "Children," by the way, is a common expression describing Israeli soldiers.
Cf. the article about the UN report in Haaretz:
http://www.haaretz.com/print-edition/news/unicef-israel-negligent-in-guarding-children-s-rights-1.325790
Present in the court were "invited guests": an Australian reporter and a photographer, accompanied by two officers. They sat behind the prosecutor. The senior officer conversed with the prosecutor and actively followed the procedure on a computer. Presumably, he's a senior officer at the Military Prosecution. Our attempt to establish contact with the Australian reporter was rebuffed by the officers. The reporter did not exchange any words with the families, the lawyers or with us.
The photographer was invited to shoot inside the court and wordlessly took pictures of the first group of children who came in before the trial began.
Most of the children are charged with "hurling objects" and "manufacturing incendiary objects." They are mostly 15-16 year olds. As usual, a plea bargain is already in place or under way. We witnessed a scene where a father intervened in the discussion, arguing with the defense that his son should not admit to anything. He is still in custody. The reports below throw light on the harsh economic conditions of many Palestinian families. The children's detention, on top of the other problems, puts a heavy economic toll on families that are poor to begin with. The occupation authorities are well aware of this: they hit the Palestinians
in their pocket, hoping to "sear their conscience" and impact their conduct. Thus, we are not impressed when the justice system sometimes reduces the fines: it is merely cosmetic - faint veneer covering brutal rapacity.
Prosecutor: Major Ella Sirotinsky
Defense: Muhammad Mahmud
Defendant: Allam Yusuf Bader Za'ekik, age 15, ID 859483678 - Case No. 4415/10
Charge: "hurling objects at people or property".
Present in the court were the defendant's mother and his disabled father. The mother cried from time to time.
Allam accepted the charges and was convicted. The sides reached an agreement. During the prosecution's argument, Allam said, "Fridays and Saturdays I worked to support my family. The boss did not pay me, so we had a quarrel and I went home. Settlers who passed me by threw rocks at me. My father is sick."
The mother explained that the father had been sick for 11 years and does not work. The eldest daughter is a university student, and Allam works weekends to help pay her tuition. On his way home, he was furious because of the dispute with his employer, and when the settlers pelted him with rocks, he retaliated, out of anger. She asked the court to consider her son's situation and allow him to go back to school.
The judge gave Allam 4 months in jail and 6 months suspended sentence for 4 years. She took into consideration the family's economic circumstances and did not impose a fine.
Defendant: Bilal Issa Hassan Abu Hashem, age 15, ID 860156595 – Case No.4417/10.
Bilal is theoretically released, but in fact he's detained because his family "was unable to pay the 5000 shekel deposit" imposed by the Appellate Court. During the session an agreement was reached, reducing the fine to 1500 shekels. Bilal admitted throwing one stone at the soldiers.
In addition to the reduced fine he was given 45 days in custody, which coincide with time spent in detention (he's been released in the meantime), as well as 6 months suspended sentence for 4 years.
Norah reporting:
Ramzi Rabah Abd Alrahim Alragbi, ID 401073267 - Case No.5064/09, age 14, from Shu'afat refugee camp, accused of throwing rocks.
Since he was released on bail, he came from home and sat in the audience waiting his turn. He came by himself: his mother was not allowed to enter the compound because she did not bring her ID card with.
Ramzi denies the allegations, explaining that he sells vegetables, and on the day in question, he was merely tossing rotten vegetables aside. At the same time, other kids were throwing rocks, and he was arrested with them.
He is represented by Atty. Muhammad Mahmud.
Next hearing is set for 20.12.10 when the arresting soldiers will probably be called to testify for the prosecution.
Two other boys accused of rock throwing on Rte. 443 [built mostly on Palestinian territory, but may be used almost exclusively by Israeli drivers only] received 3.5 months incarceration, as part of a plea bargain:
Ahmad Muhammad Hader Suleiman, ID 860003961 - Case No. 3958/10
Maed Rashdi Ahmed Othman - ID 8600073204 - Case No. 3960/10
Judge: Major Zvi Heilbron
Defense: Nery Ramati
Muhammad Ahmed Dib Nafa, ID 853930337 - Case No. 4570/10, age 20, resident of Bil'in, charged with throwing rocks (during a demonstration against the Separation Wall). He was incriminated by A., who has incriminated many before him.
The defendant does not admit the charges.
The next evidentiary hearing is set for 3.1.11.
Read Amira Hass's article about incriminator A. in:
http://www.haaretz.com/weekend/week-s-end/the-grocery-list-of-the-shin-bet-and-the-idf-1.263587
Incriminators


Old news but I'm posting it since I just got my copy in the post today.
It looks like it's going to be a very interesting reading, basically a series of interviews between Gary and Jon with a good few Zzap references thrown in for good measure.
Get it at the Read Only Memory website.
It was, I preferred it to the Ocean book, which I felt had a good bit of repetition in it because different people were giving their memories of the place so there was a bit of overlap.
Is there likely to be a digital version of the book?
There probably is a digital version, but I'd always want the physical versions of something like this.
Can't find a digital version anywhere. There is a used version on Amazon for £2500. Because profiteering.
Yeah, seems like it. No mention of a digital edition on the original kickstarter either. Old skool all the way then.
I still haven't gotten around to reading mine. The design is just dreadful. It's like no-one considered this would be a real thing, because it's just not nice to read at all. A pity, because the content actually seems good. Hoping the C64 book's better.
Having to keep on flipping to the glossy pages at the back to see a photo etc. did get pretty annoying after a while, but the interesting content kept me with it.
The general layout was also dreadful—the margins and gutters. Smacked of something that might have looked 'cool' or 'different' on the screen, but had poor user experience when on the printed page.
Yeap, 90 degree head turn (or maybe book turn would be easier!) for reading the margin text was also a hassle, but turn off your designer head and read it, you won't be disappointed!
I'll get round to it at some point. And it's not a case of my designer head, but my reading head; the book's just not nice to read, and that's the main problem.
Well that is true, the bits described were an issue for me as a reader and I certainly wouldn't call myself a designer!!
Perhaps the solution is to get somebody else to read it to you.
Mine just arrived in the post. Have started reading it. Entertaining thus far. Pity Chris Yates chose to not be involved.
I guess he has no interest. I'm pretty sure no-one's managed to get him to talk to Retro Gamer, which is quite rare, even among devs who were treated like crap back in the day.


If you're looking to upgrade your style game and rep Pis N Cox in the process then have I got a deal for you! Even BETTER… this deal gets me to WTM baby!
If you dig the shirt your eyes have surely feasted on by now then for $20 one of those bad boys can be yours! How? By simply filling out the order form below! Your information gets sent to me and I will send you an electronic invoice payable online from the comfort of your very own home/antique fruit figurine warehouse!
All proceeds go to my World's Toughest Mudder registration so the support is much appreciated, fellow ruffians!
If getting more than 1 shirt... Please fill out the additional sizes here!


text:
The Pluralist
Reply to Critics
R. Aída Hernández Castillo
i wish to thank Mariana Alessandri, Marilyn Fischer, and Scott Pratt for their thoughtful reading of my article. I acknowledge, in their writing, the effort of going beyond the commitment with the initiative of the Coss Dialogue, which meant reading my book Multiple InJustices: Indigenous Women, Law, and Political Struggle in Latin America, in which I summarize twenty-five years of activist research with Indigenous women.
Through their comments, they built a bridge between my anthropological and epistemological searches and the debates of feminist and pragmatist philosophers who share with me the concern for social justice, and my insistence in reaching further from theorizing about the world to engaging in its transformation. As Professor Alessandri states in her essay, "living with people complicates your theories,"1 and I share with some of the philosophers, quoted by the three commentators, a need to challenge theories through experience and dialogues.
There is an honest concern with the commentators about the "future of theory" and, more specifically, about the future of our disciplines and of ourselves as philosophers and anthropologist, which springs from the shared idea that our scholarly training does not give us an epistemological privilege over the people we work with.
Mariana Alessandri asks herself: "If not the anthropologist, who is capable of seeing clearly what's going on in the minds of the oppressed?"2 Among the assumptions behind this concern, we might begin by asking if the "oppressed" are always characterized by a false consciousness, leaving academics with no other choice than to explain how the oppression systems work for the oppressed themselves. During my work with Indigenous women in the Zapatista regions at the state of Chiapas, with the Maya movement in Guatemala, and within the prison system at Morelos, [End Page 99] I have learned about the theorizations about the world displayed by these women, and about the multiple experiences of violence and the root of this violence, and about the world they want to live in—more than what I have been able to teach.
I do not go so far as to grant an epistemological privilege of the oppressed, as some standpoint feminist theorist assume, but then again, the history of social movements and decolonizing processes have shown us that universities and research institutions have not spearheaded decolonization—though this has been changing in recent years—on the contrary, they have been the main sources for ethnocentric and universalist discourses and practices that silence other ways of being in the world.
What I wish to establish in this text is not a cultural relativist perspective that would deny the possibility of sharing my experiences and representations of the world with Indigenous women, but an intercultural dialogue, in which I am willing to share my uncertainties and be open to listening to the other, to have the epistemological humbleness to put my concepts and theories to the collective scrutiny of experience and dialogue.
But now at this point, I face another challenge that I need to recognize, namely, if it is possible to have a face to face intercultural dialogue in a context of structural inequality, in which my class and race backgrounds as a Mexican mestiza university professor burden my perspective with a cultural capital, that the experience of Indigenous women do not have. How do we deal with these structural inequalities that frame our dialogues? I do not have a definitive answer for this question, but I think that a first step is to destabilize the knowledge hierarchies in our own institutions, including other texts, voices, and experiences in the classroom. It is also important to approach the collective spaces of dialogue not always with answers, but rather with questions. Another important political and personal concern expressed by Professor Alessandri, also related to the "idea of a false consciousness," is what should we do when the women with whom we dialogue have worldviews that question our ethic or moral values. More specifically, she asks how to deal, as feminists, with an Indigenous woman who is pro-life? This woman will have a hard time making the case that she is feminist, she concludes.3
Buy Digital Article for $14.00 (USD)


text:
Top 20 Technology Jobs in 2022
Within the wake of a world financial slowdown and a tech trade rout, a number of tech corporations together with giants like Meta, Elon Musk-owned Twitter and Amazon have made workforce reductions up to now 12 months, dealing a heavy blow to hundreds of tech workers globally.
The variety of tech layoffs in 2022 alone accounts for greater than half of all terminations since Covid-19, in accordance with layoffs.fyi, a monitoring web site.
With the tight labour market now flooded with unemployed professionals and certified candidates, Techloy has compiled a complete record of the 20 profitable top-demand tech jobs in America to assist folks discover jobs they'll love, utilizing distinctive information on jobs, salaries, and corporations collected on Glassdoor.
The chart under highlights an inventory of the highest 20 expertise jobs in the USA. The record is predicated on an aggregation of every job's incomes potential (median wage every year), job satisfaction, and job openings.
YouTube Develops Tool To Notify Content Creators If Their Videos Are Stolen.
YouTube is adding some extra protection to their content creators with a new tool that is sure to…
Disney coughs up $900M to acquire MLB's remaining stake in BAMTech streaming company
Disney paid $900 million to Main League Baseball (MLB) earlier this month to purchase out the league's remaining…
Nested, the UK-based 'modern' estate agent, raises additional £5M to improve the home-selling experience
Nested, the London-based startup that is using technology to build a "modern" estate agency and improve the home-selling…
Leica's new camera costs $20,000 and has zero megapixels
Okay, Leica, have a seat, we have to speak for a minute. I do know you're one of many…


text:
Slow, steady paid off for Abraham, plus 10 things to watch for Sunday
"We try to play John about 38 to 45 plays a game,'' Smith said. "It's not so much how many plays you play, it's how fresh you are, so they can all be quality plays.''
"I don't need as many plays to make the impact I need to make,'' Abraham told me Thursday. "What's great about how I'm being used is I'm fresh now. Week 15, 16, normally, you're so tired as a player. But I feel as good right now as I felt in week one or two.''
On Monday, look for Abraham, as is his custom, to switch between right and left ends, and to drop in coverage five or so snaps -- just to keep the Saints in a "Where's Waldo'' mode with him. What's also helped his production is the continued development of Kroy Biermann at the other end, with the brute force of Jonathan Babineaux in the middle. Smith and defensive coordinator Brian Van Gorder don't have many Drew Brees-specific plans of attack, other than making him feel pressure in the pocket to get him off his comfortable spot. But they'd better do something a little different this time. In Brees' last three games against the Falcons (two wins, one loss), he's completed 79, 78 and 76 percent of his throws. Unless Atlanta wants to get into a scoring contest Monday night -- never wise against Brees -- Abraham better make his 38 snaps count.
The Steelers' magic number is one to a division title and a much-needed week off.
It's all good with the Steelers today. They've got the mini-bye that comes along with a Thursday night game late in the season, their players will get Christmas Eve and Christmas off, and they didn't suffer any more injuries of note in a walkover 27-3 win over the meekest team in the NFL by far, Carolina. If the Steelers beat Cleveland in Cleveland next week, or if Baltimore loses either of its final two games (at Browns, Bengals), Pittsburgh wins the division -- and has one more off week to try to get Troy Polamalu -- and maybe defensive end Aaron Smith -- healed for the stretch run.
Bryan Bulaga, T, Green Bay.
Last week in New England, Bulaga protected first-time starter Matt Flynn very well, until a major gaffe helped kill the Packers' chances to pull an upset. Trailing by four with a minute left and one timeout remaining, Flynn went back to pass and Bulaga failed to pick up outside blitzer Dane Fletcher. Flynn was sacked, and the Packers had to use their last timeout to regroup. That timeout was desperately needed at the end of the game as the clock ran out with the Packers trying, and failing, to rally. So now Justin Tuck and the Giants' ever-changing defensive front come to Green Bay Sunday, and Green Bay has a twice-concussed-this-year quarterback playing in Aaron Rodgers. Bulaga can't afford to make those mental errors again.
Jared Veldheer, left tackle, Oakland (number 68).
The rookie from tiny Hillsdale (Mich.) College has a fairly easy job this weekend: stop Dwight Freeney from laying the wood to quarterback Jason Campbell when the Raiders, still mathematically alive in the AFC West, play the Colts in the Black Hole. Veldheer was a steal in the third round last April, and he's made the early-season transition from center to tackle pretty smoothly. This will be his biggest test, obviously. "I'm sure they're going to scheme and not just leave him by himself,'' said Freeney. "That wouldn't be smart.''
1. Devin Hester being invisible. The Vikings meant to kick away from Hester all night Monday, and were successful till the second half. Look for the Jets to do the same, and expect Steve Weatherford to sacrifice 10 to 15 yards per punt in distance just to make sure Hester doesn't touch it. "You can write that down,'' Rex Ryan said about playing keepaway from Hester.
2. Speaking of the Jets and Bears, some imaginative chants and a weird sign or two, for Ryan to deal with. About you-know-what.
3. Roddy White's trash talk, which bores me but might be a factor Monday night. All I could think of when I read his Twitter stream of anger toward the Saints was this: Was he drinking heavily when he did it? Wouldn't be surprised to see an extra bit of what-for from a Saint defender at the bottom of a pile when Atlanta and New Orleans play.
4. Whether the Giants have an Eagle hangover. Playing the Packers is tough enough. Playing the Packers at Lambeau is tougher. Playing the Packers at Lambeau with the biggest collapse in recent team history fresh in their minds should make it even worse.
5. More tension between the Redskins and their third-string quarterback. Glad to see Fletcher Smith, Donovan McNabb's agent, taking the high road.
6. Tebowmania, sort of. Denver fans get their first starting look at Tim Tebow, picked by a coach they hate who has since been fired. Strange situation. But from all indications, the locals like their Timmy and are curious about whether he's the real thing. Playing the Houston secondary, I'd be shocked if Tebow doesn't throw for 300.
7. Prime-Time Vick. The matchup's a dud in a weekend full of bad possibilities for NBC. But Mike Vick's always appointment viewing, and he's got a couple of personal milestones to hit: He needs one touchdown pass to set his personal best (21) for TD throws in a season, and 182 passing yards to set a personal record (2,937) for a single season. Isn't it amazing that Vick's never thrown for 3,000 yards?
8. The wild, wild Wests. The weirdness out west is this simple: The two Missouri franchises are in prime position. If the Chiefs (Tennessee, Oakland at home) and Rams (Niners home, Seattle away) win their final two games, the two Wests will have unlikely Midwestern champs.
9. The job status of Tony Sparano and Gary Kubiak. In midseason, I thought both were safe. But Miami's 1-8 in its last nine home games, and a home loss to the playing-out-the-string Lions and Shaun Hill could put Sparano in major trouble. Houston's in the AFC South cellar, and a loss to woebegone Denver would be the Texans' 10th and be very tough for the ever-sunny Bob McNair to take.
10. Family Affair in St. Louis. Rams safety O.J. Atogwe is marrying Jill Singletary, daughter of Mike, next May. That's got to be weird.
Your Guide to the Week's Best Ticket Deals
Surfing Legend Freire Dies Riding Nazare's Massive Waves


Emerson's iTone IE600 is the larger sibling of the company's iC200 iPod alarm clock, adding features such as a built-in CD player. The clock on the front of the IE600 shows the date and time, and the alarm can be set to go off to the radio, a buzzer, or CD or iPod (but not iPod shuffle) playback. There is only one alarm, and it lacks weekday- or weekend-specific settings.
Want to set the alarm or the clock? Good luck. The controls are baffling, with none clearly labeled to set the clock. Instead, the "mode" button -- which also changes audio sources -- doubles as the clock set button. Odds are, you're going to need to spend some time familiarizing yourself with the system's manual. The clock also features a snooze function (which lasts approximately 9 to 10 minutes) that can be controlled with the remote, and a sleep timer that can be adjusted to 15, 30, 45, or 60 minutes. Once you do get the clock set, the attractive, blue-backlit LED display and handsome, curvy unit look nice enough to perch just about anywhere in your home.
If you plan on using the stereo primarily with an iPod, you may find the remote control to be lacking. The remote is set up to work primarily with the CD player -- all of its large major buttons are designed to play, pause, and skip CD tracks -- with just a few small buttons off to the side for an iPod. It also has buttons to change the radio station, control the volume, activate snooze, change audio sources and radio bands, and to sleep.
The radio works fairly well; reception is not exceptional, but is on par with some other clock radios I've tested. There are 10 station presets for each band (20 total), which can be set automatically or programmed manually. The unit can play audio from any dockable iPod, and includes with a variety of dock-cradle adapters to fit all dockable iPods as well as the first-generation iPod shuffle. The CD player worked as expected, and the system also includes an input for an auxiliary audio source.
The IE600's audio quality is good but not great. The five EQ settings are a nice touch, and the system provides decent bass response with good midrange and treble at low volumes. However, turn the unit up -- it can reach a maximum output of 102 decibels at close range, by my measurements -- and the bass tends to sound blown out. In fact, at anything over roughly 50 percent of the maximum volume, sound quality takes a noticeable hit. All told, the IE600's sound quality doesn't begin to compete with my current favorite portable system, the smaller Altec Lansing inMotion iM9.


text:
Open systems are computer systems that provide some combination of interoperability, portability, and open software standards. (It can also refer to specific installations that are configured to allow unrestricted access by people and/or other computers; this article does not discuss that meaning).

The term was popularized in the early 1980s, mainly to describe systems based on Unix, especially in contrast to the more entrenched mainframes and minicomputers in use at that time. Unlike older legacy systems, the newer generation of Unix systems featured standardized programming interfaces and peripheral interconnects; third party development of hardware and software was encouraged, a significant departure from the norm of the time, which saw companies such as Amdahl and Hitachi going to court for the right to sell systems and peripherals that were compatible with IBM's mainframes.

The definition of "open system" can be said to have become more formalized in the 1990s with the emergence of independently administered software standards such as The Open Group's Single UNIX Specification.

Although computer users today are used to a high degree of both hardware and software interoperability, in the 20th century the open systems concept could be promoted by Unix vendors as a significant differentiator. IBM and other companies resisted the trend for decades, exemplified by a now-famous warning in 1991 by an IBM account executive that one should be "careful about getting locked into open systems".

However, in the first part of the 21st century many of these same legacy system vendors, particularly IBM and Hewlett-Packard, began to adopt Linux as part of their overall sales strategy, with "open source" marketed as trumping "open system".  Consequently, an IBM mainframe with Linux on IBM Z is marketed as being more of an open system than commodity computers using closed-source Microsoft Windows—or even those using Unix, despite its open systems heritage. In response, more companies are opening the source code to their products, with a notable example being Sun Microsystems and their creation of the OpenOffice.org and OpenSolaris projects, based on their formerly closed-source StarOffice and Solaris software products.

See also
 Open API
 Open format
 Open mainframe
 Open System Environment Reference Model
 Unix wars

References

Computer systems
History of computing

Unix history

redpajama_set_name: RedPajamaWikipedia


It is that time of the year that parents start thinking about what next soccer season will bring for their kids. Red Star will run open tryouts/evaluations every Tuesday and Thursday between now and November 29th, 2018. Any interested players will be practicing with their respective age groups. This will give them the opportunity to experience what a practice with Red Star feels like.


text:
package migration_test

import (
	"database/sql"
	"encoding/json"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var _ = Describe("Migrate config pinned resources", func() {
	const preMigrationVersion = 1588860260
	const postMigrationVersion = 1589991895

	var (
		db *sql.DB
	)

	Context("Up", func() {
		It("migrates all the resources that are pinned through it's resource config into the resource pins table", func() {
			db = postgresRunner.OpenDBAtVersion(preMigrationVersion)

			_, err := db.Exec(`
			INSERT INTO teams(id, name) VALUES
			(1, 'some-team')
			`)
			Expect(err).NotTo(HaveOccurred())

			_, err = db.Exec(`
			INSERT INTO pipelines(id, team_id, name) VALUES
			(1, 1, 'pipeline1'),
			(2, 1, 'pipeline2')
			`)
			Expect(err).NotTo(HaveOccurred())

			var resource1ID, resource2ID, resource3ID, resource4ID int
			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-1', 1, '{"type": "some-type"}', true, 'some-type') RETURNING id`).Scan(&resource1ID)
			Expect(err).NotTo(HaveOccurred())

			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-2', 1, '{"type": "some-type", "version": {"ref": "v1"}}', true, 'some-type') RETURNING id`).Scan(&resource2ID)
			Expect(err).NotTo(HaveOccurred())

			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-3', 2, '{"type": "some-type"}', true, 'some-type') RETURNING id`).Scan(&resource3ID)
			Expect(err).NotTo(HaveOccurred())

			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-1', 2, '{"type": "some-type", "version": {"ref": "v2"}}', true, 'some-type') RETURNING id`).Scan(&resource4ID)
			Expect(err).NotTo(HaveOccurred())

			_, err = db.Exec(`INSERT INTO resource_pins(resource_id, version, comment_text) VALUES($1, '{"ref": "v0"}', 'api-pinned')`, resource1ID)
			Expect(err).NotTo(HaveOccurred())

			_, err = db.Exec(`INSERT INTO resource_pins(resource_id, version, comment_text) VALUES($1, '{"ref": "api"}', 'api-pinned')`, resource2ID)
			Expect(err).NotTo(HaveOccurred())

			db.Close()

			db = postgresRunner.OpenDBAtVersion(postMigrationVersion)

			type pinnedResource struct {
				resourceID int
				version    map[string]string
				config     bool
				comment    string
			}

			rows, err := db.Query(`SELECT resource_id, version, config, comment_text FROM resource_pins`)
			Expect(err).NotTo(HaveOccurred())

			var pinnedResources []pinnedResource
			for rows.Next() {
				var p pinnedResource
				var version []byte
				var pinComment sql.NullString

				err := rows.Scan(&p.resourceID, &version, &p.config, &pinComment)
				Expect(err).NotTo(HaveOccurred())

				err = json.Unmarshal(version, &p.version)
				Expect(err).NotTo(HaveOccurred())

				if pinComment.Valid {
					p.comment = pinComment.String
				}

				pinnedResources = append(pinnedResources, p)
			}

			expectedPinnedResources := []pinnedResource{
				{
					resourceID: resource1ID,
					version:    map[string]string{"ref": "v0"},
					config:     false,
					comment:    "api-pinned",
				},
				{
					resourceID: resource2ID,
					version:    map[string]string{"ref": "v1"},
					config:     true,
				},
				{
					resourceID: resource4ID,
					version:    map[string]string{"ref": "v2"},
					config:     true,
				},
			}

			_ = db.Close()

			Expect(pinnedResources).To(HaveLen(3))
			Expect(pinnedResources).To(ConsistOf(expectedPinnedResources))
		})
	})

	Context("Down", func() {
		It("removes the config pinned resources", func() {
			db = postgresRunner.OpenDBAtVersion(postMigrationVersion)

			_, err := db.Exec(`
			INSERT INTO teams(id, name) VALUES
			(1, 'some-team')
			`)
			Expect(err).NotTo(HaveOccurred())

			_, err = db.Exec(`
			INSERT INTO pipelines(id, team_id, name) VALUES
			(1, 1, 'pipeline1'),
			(2, 1, 'pipeline2')
			`)
			Expect(err).NotTo(HaveOccurred())

			var resource1ID, resource2ID, resource3ID, resource4ID int
			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-1', 1, '{"type": "some-type"}', true, 'some-type') RETURNING id`).Scan(&resource1ID)
			Expect(err).NotTo(HaveOccurred())

			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-2', 1, '{"type": "some-type", "version": {"ref": "v1"}}', true, 'some-type') RETURNING id`).Scan(&resource2ID)
			Expect(err).NotTo(HaveOccurred())

			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-3', 2, '{"type": "some-type"}', true, 'some-type') RETURNING id`).Scan(&resource3ID)
			Expect(err).NotTo(HaveOccurred())

			err = db.QueryRow(`INSERT INTO resources(name, pipeline_id, config, active, type) VALUES('resource-1', 2, '{"type": "some-type", "version": {"ref": "v2"}}', true, 'some-type') RETURNING id`).Scan(&resource4ID)
			Expect(err).NotTo(HaveOccurred())

			_, err = db.Exec(`INSERT INTO resource_pins(resource_id, version, config, comment_text) VALUES($1, '{"ref": "v0"}', false, '')`, resource1ID)
			Expect(err).NotTo(HaveOccurred())

			_, err = db.Exec(`INSERT INTO resource_pins(resource_id, version, config, comment_text) VALUES($1, '{"ref": "v1"}', true, '')`, resource2ID)
			Expect(err).NotTo(HaveOccurred())

			_, err = db.Exec(`INSERT INTO resource_pins(resource_id, version, config, comment_text) VALUES($1, '{"ref": "v2"}', true, '')`, resource4ID)
			Expect(err).NotTo(HaveOccurred())

			db.Close()

			db = postgresRunner.OpenDBAtVersion(preMigrationVersion)

			rows, err := db.Query(`SELECT resource_id, version FROM resource_pins`)
			Expect(err).NotTo(HaveOccurred())

			type pinnedResource struct {
				resourceID int
				version    map[string]string
			}

			var pinnedResources []pinnedResource
			for rows.Next() {
				var p pinnedResource
				var version []byte

				err := rows.Scan(&p.resourceID, &version)
				Expect(err).NotTo(HaveOccurred())

				err = json.Unmarshal(version, &p.version)
				Expect(err).NotTo(HaveOccurred())

				pinnedResources = append(pinnedResources, p)
			}

			expectedPinnedResources := []pinnedResource{
				{
					resourceID: resource1ID,
					version:    map[string]string{"ref": "v0"},
				},
			}

			_ = db.Close()

			Expect(pinnedResources).To(HaveLen(1))
			Expect(pinnedResources).To(ConsistOf(expectedPinnedResources))
		})
	})
})


text:
curr_user=$(whoami)

curr_wallpaper="/home/"$curr_user"/Pictures/Wallpapers/wallpaper.jpg"

cache_dir="/home/"$curr_user"/.cache/wallblur"

basefilename=$(basename -- "$curr_wallpaper")
extension="${basefilename##*.}"
filename="${basefilename%.*}"

echo $cache_dir

if [ ! -d "$cache_dir" ]; then
	echo "* Creating cache directory..."
    mkdir -p "$cache_dir"
fi

gen_blurred_seq () {
	for i in $(seq 0 1 5)
	do
		blurred_wallaper=""$cache_dir"/"$filename""$i"."$extension""
  		convert -blur 0x$i $curr_wallpaper $blurred_wallaper
        echo " > Generating... $(basename $blurred_wallaper)"
    done
}

do_blur () {
	for i in $(seq 5)
	do
		blurred_wallaper=""$cache_dir"/"$filename""$i"."$extension""
		gsettings set org.gnome.desktop.background picture-uri file:///"$blurred_wallaper"

    done
}

do_unblur () {
	for i in $(seq 5 -1 0)
	do
		blurred_wallaper=""$cache_dir"/"$filename""$i"."$extension""
		gsettings set org.gnome.desktop.background picture-uri file:///"$blurred_wallaper"

    done
}

blur_cache=""$cache_dir"/"$filename"0."$extension""

if [ ! -f "$blur_cache" ]
    then
        notify-send "Generating blured wallpaper: "$basefilename"..."

        if [  "$(ls -A "$cache_dir")" ]; then
			echo " * Cleaning existing cache..."
			rm -r "$cache_dir"/*
		fi

        gen_blurred_seq
fi

while :; do
	current_workspace="$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}')"
	num_windows="$(echo "$(wmctrl -l)" | awk -F" " '{print $2}' | grep ^$current_workspace)"

	if [ -n "$num_windows" ]
	    then
	        if [ "$prev_state" != "blurred" ]
	            then
	            	echo " ! Blurring"
	                do_blur
	        fi
	        prev_state="blurred"
	    else
	        if [ "$prev_state" != "unblurred" ]
	            then
	            	echo " ! Un-blurring"
	                do_unblur
	        fi
	        prev_state="unblurred"
	fi
	sleep 0.3
done