New proposed regulations for the foreign-derived intangible income (FDII) deduction include strict documentation requirements. A recent KPMG audio conference stressed the importance of obtaining the necessary records.
sell property for a foreign use.
The proposed regulations list the only documents that can establish the "foreignness" of FDII transactions.
The participants in the KPMG conference agreed that some taxpayers might have trouble obtaining these documents. However, the proposed regs make it clear that FDII benefits depend on proper documentation.
FDII documents must be reliable. Documentation is reliable only if the taxpayer does not know or have reason to know that the documentation is unreliable or incorrect, as of the FDII filing date. The FDII filing date is the date the taxpayer's return for the sale or service is due.
but no more than one year before the sale or service that produced the FDII.
Some taxpayers might be tempted to intentionally fail the FDII documentation requirements for a foreign-derived deduction eligible income (FDDEI) loss. These taxpayers might hope that if the loss is not properly documented, they can avoid taking into account. Ignoring the loss would effectively increase their FDDEI and, therefore, their FDII deduction.
the taxpayer knows or has reason to know that it is a foreign transaction.
a small transaction that produces less than $5,000 in gross receipts from a single recipient.
These FDII documentation requirements are proposed to apply to tax years ending on or after March 4, 2019. They will not apply retroactively.
property for a foreign use.
Finally, the conference also reviewed the status of some final Tax Cuts and Jobs Act regulations. Participants reported that the government intends to finalize regulations for global intangible low-taxed income (GILTI) by June 22, 2019. If the IRS finalizes the regulations by this date, they can be retroactive.
The government may also re-propose the controversial GILTI rules in Proposed Reg. §1.951A-6 related to adjustments to earnings and profits and basis.
It is not clear, however, when the IRS might finalize proposed regulations for the base erosion and anti-abuse tax (BEAT) and the Code Sec. 163(j) limits on deductible business interest.
Anne E. Bowker, J.D., LL.M.


Processing Time: Complete applications are reviewed within three to four weeks upon receipt of required documentation. Questions concerning status of pending applications should be addressed to the Office of Student Services by phone (202-685-6300; DSN 325-6300) or e-mail to iCollegeOSS@ndu.edu.
Communications of iCollege Admission Decisions: Applicants will receive an e-mail notification of the iCollege Admissions decision. Communications will detail the applicant's program status, the official start and end dates of their program, and faculty advisor contact information. The faculty advisor assists the student in planning a course of study and answer questions about program requirements.


text:
James Barlow
James is a Professor of Technology and Innovation Management (Healthcare) at Imperial College Business School and a member of the Centre for Health Economics and Policy Innovation. Previous appointments include SPRU (Science Policy Research Unit, University of Sussex) and the Policy Studies Institute. He was educated at the London School of Economics and Political Science.
His research focuses on the structural and organisational challenges to the development and introduction of innovations in complex sectors of the economy, notably healthcare. James is particularly interested in the relationship between innovation in technologies, services and infrastructure. He has led many research projects since the mid-1980s and he was Principal investigator of the Health and Care Infrastructure Research and Innovation Centre (HaCIRIC), a £12m program funded by the UK Engineering and Physical Sciences Research Council.
James advises and consults for government, healthcare organizations and companies from the health technology sector, from start-ups to large global corporates. He has been a member of expert panels on healthcare innovation for a number of government and public sector inquiries. He is currently an associate director of research for Imperial College Health Partners and a member of the management team for the NIHR Policy Innovation and Evaluation Research Unit. He also sits on several advisory boards, including AGE-WELL (a major Canadian research programme on technology for an ageing society), Deloitte Healthcare Innovation Observatory, and the International Academy for Design and Health. He is also a Carl Bennet Visiting Professor at Halmstad University (Centre for Innovation, Entrepreneurship and Learning), Sweden, and an Honorary Professor at University College London (Bartlett Real Estate Institute).
James has published widely in leading journals including Organization Science, Research Policy, Health Affairs, Social Science & Medicine, California Management Review, and the Bulletin of the WHO. His latest book is Managing Innovation in Healthcare, published in January 2017.
Back To Associates

redpajama_set_name: RedPajamaCommonCrawl


text:
New Zealand has been encouraging people from overseas to come and work here for a number of years. Our growing economy continues creating more jobs generally, plus we have on-going shortages of skills in particular areas.
The job market in New Zealand will be strong in the next few years, the result of steady economic growth.
The government's Ministry of Business, Innovation and Employment (MBIE) predicts average annual GDP growth of about 2.7 per cent and 2.5 per cent over 2018-23 and 2023-28 respectively. Household spending, residential investment, a resumption of tourism along with strong growth in exports will underpin this GDP performance.
Growth at these rates means New Zealand will need nearly 40,000 new workers a year.
With an aging population meaning more people leaving the workforce, it is expected many of those new jobs will have to be filled by people coming to New Zealand from overseas. Perhaps - people like you.
Take the first step to a new life by registering your interest with Immigration New Zealand. We'll send you personalised emails about job opportunities in your profession, life in New Zealand and choosing the right visa.
It's free and there's no obligation.
Great job opportunities in New Zealand
George Manjooran: What I liked about New Zealand before moving was like the work/life balance and the IT industry is still in the growth phase, so I thought maybe New Zealand is the right place for me to pursue my career.
Bob Stimson: I was looking for some new opportunities. I was looking for a change from the position that I was in. There was a very big need for structural engineers in New Zealand following the Christchurch earthquakes.
Connor Coady: The wind industry here in New Zealand is still relatively young compared with Europe and it's very exciting to be part of an industry that's growing.
Simon Shaw: We came over six months before we permanently emigrated and I went back with probably four or five job offers.
Lindsay Crummet: One thing that really drew me to the film industry in Wellington was that it seemed so accessible, especially in comparison to Los Angeles. It just seemed so easy that I was able to set up a meeting and meet Richard Taylor. It progressed to where I was finally able to get a job.
Willem Landman: There's lots of opportunities for doctors, nurses, other healthcare professionals anywhere in New Zealand. A very large proportion of our healthcare workforce is foreign-trained.
Peter Mathewson: We've currently got a worldwide recruitment campaign on the go for structural and geo-technical engineers, and we're marketing across Europe, Ireland, through the UK, Canada, and USA.
Scott Campbell: There's still a real shortage of trained, experienced geo-special professionals. You'll see there's a lot more jobs on offer than there are CVs available. The industry is still growing, and we're seeing the GIS area growing especially quickly.
Tony Stone: The skill gap that we find here at GNS in terms of recruitment is predominately experienced PhD scientists. Five to seven years' experience, so overseas recruits are a core part of our need.
Adrian Matthews: In terms of career opportunities, my wife and I have both been really, really pleased with the number of opportunities that exist and that will exist in the future.
Simon Shaw: I think if you're the sort of person that's willing to give things a go, get stuck in, it shouldn't be too hard to find a job.
Job sites to explore
Specialist sites
Sites designed to connect offshore workers with NZ employers:
Workhere
New Kiwis
These sites have lots of jobs, but employers using them won't necessarily be thinking about hiring from overseas:
Seek - NZ's largest general job website
Trade Me - NZ's most popular buy/sell website with a large jobs section
More job websites
The first step usually is finding a job. Check out where your skills will fit best and which employers are looking for your expertise.
Tips on how to find work
What jobs, where
Almost half of the 40,000 new jobs in New Zealand each year will be in either Accommodation and Food services, Business services, Construction or Retail trade.
Transport and logistics and non-farm manufacturing will also grow, but are smaller sectors with fewer jobs to start with.
Employment growth will be strongest for highly-skilled occupations, including managers and professionals,
There will still be opportunities for less skilled workers, although not as many, with the fastest growing occupations in this category being drivers, construction and mining labourers and delivery drivers.
Jobs in New Zealand are dispersed quite widely around the country. The three biggest jobs centres are, in order, Auckland, Canterbury (including Christchurch) and Wellington. Job growth in Canterbury has slowed lately with the continued wind-down of the re-build following the 2011 earthquakes there.
However there are almost as many jobs in the regions, including the Waikato (based around the city of Hamilton), the Bay of Plenty (Tauranga), Otago (Dunedin and Queenstown), and around Nelson. The fastest growing region for jobs recently has been Manawatu-Wanganui (Palmerston North).
Labour market snapshot
Is your profession on the green list?
Some high-need roles in various industries are currently on INZ's fast-tracked Residency Green list
The Green List | Immigration New Zealand
Work in New Zealand Job market & key industries
Share with Linked.in


A shipwreck survivor's keep on a tropical island is lower than idyllic on this well-crafted if unmemorable old-school creature function.
Stripped-down creature function "Sweetheart" stars Kiersey Clemons ("Dope," "Clear") as a shipwreck survivor on an uninhabited island that sadly seems to have one frequent, unfriendly, nonhuman customer. The sparing glimpses of the scaly whatsis and near-complete lack of dialogue (to some extent) make this a fairly offbeat wade into a well-recognized Black Lagoon. However regardless of first rate suspense, "Sleight" director J.D. Dillard's handsome second function is a chiller that's not fairly unique or trendy sufficient to be memorable.
Clemons' Jenn washes onto her isle barely acutely aware, although in higher form than a fellow passenger (Benedict Samuel) on her storm-downed pleasure cruise, who shortly expires. The state of affairs is dire, however the heroine proves resourceful, shortly determining easy methods to spear-fish and make a hearth. She additionally finds indicators of prior habitation: A campsite whose vacationers oddly left their gear behind — and extra disturbingly, an obvious group gravesite.
The primary signal that she's not totally alone comes one morning when the corpse she's simply buried seems to have been violently dug up and dragged away. Then whereas unsuccessfully making an attempt to seize the eye of a passing airplane one night time, her flare occurs to backlight one thing standing within the distant surf — one thing two-legged, however alarmingly tall and fierce-looking. Fierce it's certainly, making nocturnal visits that at the beginning are happy along with her choices of fish and different meals. However quickly sufficient it come trying to find Jenn.
Ultimately extra members of her journey wash up. The survivors interpret Jenn's tales of a monster as stress-induced paranoia. Naturally, it doesn't take lengthy earlier than they notice they're mistaken.
An extended roster of ultimate credit is dedicated to the amphibious critter itself, from designer Neville Web page and actor Andrew Crawford to a raft of VFX, prosthetics and different contributors. But as is so usually the case with such films, the most effective of "Sweetheart" (named after one late-arriving character's considerably condescending means of addressing the heroine) is the creepy, teasing early going after we see the murderous thingie in flashes or in no way. Spectacular sound design makes the creature's gurgling growl, as Jenn cowers in hiding, maybe extra scary than the lizard-man seen full-on.
Character backstory arrives too little, too late. Nonetheless, Clemons does simply effective etching a girl whose survival instincts received't let her go down with no critical combat. She carries the movie — but one needs there have been a bit of extra to it. In the long run, that is only a simple, easy monster film that would have used some added conceptual ingenuity or plot-twists within the script that Dillard co-wrote with Alex Theurer (additionally his collaborator on 'Sleight") and Alex Hyner. It's good of its kind — simply not fairly ok to linger as soon as the lights have come up.
Shot in Fiji, the movie advantages from stable tech/design contributions throughout, notably from Stefan Duscio's good-looking widescreen lensing, Gina Hirsch's tense enhancing and Charles Scott IV's ominous synth-dominated rating.
Subscribe to Selection In the present day.


Buy short hair extensions ebay,Shop from the world's largest selection and best deals for short hair extensions shop with confidence on ebay,Short clip in hair extensions ebay,Real thick claw on short ponytail clip in hair extensions pony tail brown kcs55 full head short long clip in blonde feels like real remy human hair extension clip in full head hair extensions 1 piece set curly straight long feels human,Hair extensions with short hair: how to clip in blend your,The answer: clip-in hair extensions, with which you can enjoy the best of both worlds – short hair and long hair – with absolutely no commitment and no damage.
Clip in hair extensions by cliphair,Get glamorous results in minutes with clip in hair extensions whether you have short or long hair, you can easily transform your look, making your hair appear,How to grow out a pixie cut with hair extensions – great lengths,Although we're fans of a short crop here at great lengths, we know that when you fancy a change, having to grow out a pixie cut can be a,How to fit hair extensions in very short hair or shaved hair – youtube,Uploaded by cliphair extensions,My new hair extensions short to long bob – youtube,Uploaded by dominique sachse.
Hair extensions for short hair – short hair styles,Growing your hair out, especially from short hair, can take years with hair extensions, you can have the long hair you want without the wait for women suffering,Hair extensions for short hair i want to get these hairstyle's,As the new year approaches we wanted to gather the latest short haircut ideas that can inspire you to make a change for new season these short hairstyles.
Sew in on short haircut, – youtube,Uploaded by envoguemehairtv,Sew in weave on short hair – youtube,Uploaded by fashion bella bree,How to do a sew in weave on short hair- no glue – youtube,Uploaded by posh hair designz.
How to do a full sew in on short natural hair for beginners west,Uploaded by cynthykay obi,Instaling weave on my new short hair , mothers day give,Uploaded by sharee love,Partial sew in weave for short hair – youtube,Uploaded by sophie pierre.
Partial how to put hair extensions in short hair quick weave, short hair tutorial – youtube,Uploaded by roxy bennett,Hair 2 ways to install weave on shaved head (princesshairshop,Uploaded by raven elyse,Quickweave tutorial for short hair – youtube,Uploaded by msjazzy2classy.


Don Mclean and Vincent Van Gogh. A Look at how these two artists found each other and became entwined together forever.
Sometimes in life we don't need to know a person inside out to understand what they are all about. It's a knowing or a feeling that we have inside that we go with that leads us to creating a piece of work that marries together people. If Vincent Van Gogh was around now, I am sure that he would be filled with appreciation and admiration for Don Mclean who in this beautiful song captures what Vincent really felt.
Don McLean wrote Vincent in his apartment full of antiques. The inspiration came to him one morning while he was sitting on the veranda looking at a book about Vincent Van Gogh. As he studied a print of Van Goghs painting Starry Night, he realized that a song could be written about the artist through the painting. The more I thought about it, the more interesting and challenging the idea became. I put down the book and picked up my guitar, which was never far away, and started fiddling around, trying to get a handle on this idea, while the print of Starry Night stared up at me. Looking at the picture, I realized that the essence of the artists life is his art. And so, I let the painting write the song for me. Everyone is familiar with that painting.
Van Gogh painted Starry Night during one of the most difficult periods of his life, while he was locked up in an asylum at Saint Remy. He had to paint the scene from memory, not outdoors as he preferred. Van Gogh mentioned Starry Night only twice in his letters to his brother, Theo. It is therefore one of the more mysterious and intriguing Van Gogh compositions.
Vincent wrote many things and here are a few quotes by him.
Those who love much, do much and accomplish much, and whatever is done with love is done well…. Love is the best and noblest thing in the human heart, especially when it is tested by life as gold is tested by fire. Happy is he who has loved much, and although he may have wavered and doubted, he has kept that divine spark alive and returned to what was in the beginning and ever shall be.
So what do you want? Does what happens inside show on the outside? There is such a great fire in ones soul, and yet nobody ever comes to warm themselves there, and passersby see nothing but a little smoke coming from the top of the chimney, and go on their way.
It is possible that everything will get better after it has all seemed to go wrong. I am not counting on it, it may never happen, but if there should be a change for the better I should regard that as a gain, I should rejoice, I should say, at last! So there was something after all!
A quick intro into stitching on paper a peacock design.
Embroidery on paper is the craft of sewing designs on to paper or thin card. It is an excellent way of making greetings cards, bookmarks and table decorations.
There are patterns available that enable you to produce beautiful results even if you are a beginner. All you need are blank cards, thread, a sewing needle, a pricking pin and a pricking mat. All can be bought from a craft shop.� Once you have drawn out your picture and pricked out the pattern, you can then start to sew your image.
In 1998 an English craft company called Card Inspirations launched some stitching cards under the trade name of Form-A-Lines. The first Form-A-Lines stitching cards were designed by Anne Harding and Linda Jefferson. David Jefferson then used a standard computer drawing program to convert their cards into the patterns for the first two Form-A-Lines kits. The kits proved very popular and more designs soon followed.
What this emotional quote portrays is that he was deeply affected by his mother�s physical illness coupled with the aftermath of the mental distress suffered by his father, which provoked irrational behaviour brought on by his father.
In amongst this angst and mental torture there were however happier moments in the artist�s life. At times Munch would attend hospital with his father and learn to draw the patients in bed from which he learned how to compose small groups of figures.
Sickness was to become a theme which frequented the artist�s work. Not only had he to cope with his own bouts of ill-health, suffering from asthmatic bronchitis and several severe attacks of rheumatic fever, which badly interrupted his schooling, but in 1879, when he was fourteen, his older sister Sophie died of the same disease as their mother. Tuberculosis was sadly a slow painful condition. As a young, impressionable and sensitive boy it must have greatly affected Munch to watch while another loved one was taken by illness. Eight years later Munch began to paint the first of six versions of that scene, called The Sick Child. This picture seems quite conventional to us today but it caused an outrage when it was first exhibited at the Oslo Autumn Exhibition in 1886 because it was totally unlike anything that had come before it.
Aged seventeen, Edvard Munch began to study art formally when his father, having given up hope of him becoming an engineer, allowed him to enter the Oslo State School of Art and Handcraft. The following year of 1881 he produced his first significant painting, The Hospital Ward, and then followed several portraits and family studies. It would be the next twenty years where he travelled extensively in France, Italy and Germany. In Paris in 1885 he came under the influence of the Impressionists and from 1890 it was the first the Nabis and then the Post-Impressionists, especially van Gogh and Gauguin, who claimed his attention.
But to every cloud there is a silver lining and in Munch�s case this lining was called the Berlin Secession. This was a group of Berlin artists who were so outraged by the treatment of the Norwegian painter that they formed an alliance to counteract the conflicting views of cast by the art establishment. Munch remained in Berlin where he found many important friends and gradually gained general support for his art works. In 1902 he exhibited 22 of his Frieze paintings, many of which he also produced woodcuts and etchings, two works included in this were The Kiss and The Scream. These made a great impact, as the emotion entangled in these paintings could be seen in the erratic and organic brush marks as well as the subject matter itself.
For some time after this his pictures became more extroverted with his colours seemingly brighter in appearance. In 1914, back in Norway, he was commissioned to paint a series of large mrals for the University Hall of Oslo, depicting the forces of nature, science and history. He completed these in 1916. Later, as he struggles with illness and self-doubt, the art work of Edvard munch became once more anguished, torturous and embodied with emotion. After his breakdown he never left Norway. In 1916 he settled in Ekely, Oslo, and lived a solitary life free from relationships, external influences and stranded with his own thoughts. His 70th birthday in the year of 1933 was internationally recognised, but his works were considered degenerate by the Nazis and removed from the German museums. Munch died peacefully of pneumonia at the age of 80 in 1944, two years after his first exhibition took place in the USA.
Expert artist Liberace puts this video together to show the aspiring pencil artist just how important it is to take in all the features you see on the human body. Here he is drawing a male life model pulling on a rope and his aim using a combination of cross hatch shading and blending with a brush shows how the muscles and motion in the figure can be accentuated. He explains how you will never fully achieve perfection but it is important to note everything which is going on in what you are studying. Great artwork which does truly show motion and action within the human form.
In this video tutorial you can learn from this professional pencil artist how to draw a foot using just a black Prismacolor pencil crayon.
The video is only short but it holds all the basic principles required for you to learn how to draw the foot which is considered on eof the most complex parts of the human anatomy. He begins by very lightly drawing out the basic geometrical box dimensions which carry the basic proportions of the foot and this serves as a building block for him to add the more intricate details like the toes and ankle area.
The artist works quickly and exudes confidence with the pencil as he uses a mixture of faint and heavy pencil lines to slowly form the features of the foot. He draws each section evenly by moving the pencil across the page making sure he doesn't get too engrossed in one certain region. By doing this you can quickly lose the proportions of your drawing and have spent an awful lot of time and detailing focusing on one particular aspect of the drawing.
The artist uses faint guidelines to mark out his areas and is adding shade and tonal qualities in a cross hatch form just as quickly as he is drawing the form lines to create a realistic interpretation of the foot. The way he holds the pencil is also unique but also much easier when you are sketching in this manner. It allows a more fluid and organic flow across the paper with the pencil and rapidly speeds up the �drawing on the whole. If you are interested in learning to draw the human anatomy in more detail then this particular artist is a great source to learn from. He is confident, accurate, quick and unorthodox and is living proof that with practice and some basic principles you can easily learn how to draw the human form or any of its features.
In this video tutorial the artist Chris Legaspi demonstrates how to draw the limbs in three different examples using charcoal. It is a gestural drawing video aimed at the intermediate to advanced artist showing how to locate the main shapes which make up the human body ie the limbs and torso. The artist narrates over the top and teaches how to select which outlines to emphasise to create a solid 3D form. Charcoal is very versatile so don't be too reserved or scared to be bold with your application. A nice video to learn from.
This is a nice general video for beginner's to follow and discusses the basics of drawing the male form and it's proportions.
Generally speaking the average body is 8 heads tall, so with this in mind that is the first thing to remember when ascertaining the height for your person you are drawing. The artist uses a ruler to mark off 8 spaces to mimic the head theory down her paper and then draws a series of horizontal lines �to suggest the different proportions of the human figure.
With clear and concise easy to follow voice over descriptions you are guided through the video picking up all the basic techniques as you go along, so why not grab a pencil and have a go yourself.
Carles Gomila seeks�to paint works that are tender and yet disturbing, evocative full bodied and elegant. He loves painting the human figure based on the real human anatomy plus his own imagination and feels free to represent the human figure and redeem the values of classical art from a contemporary perspective.
This video has been cleverly produced to demonstrate the artist at work whilst at times using metamorphoses to take the viewer through to the finished piece, as well as creating a sinister feel throughout. Powder paint and charcoal mediums can be seen within the video, using paint brushes and palette knives to compliment.


Our discreet, experienced and friendly Burnley Wood based private investigators are on hand to listen and give advice. No upfront cost, no commitment to go ahead.
Our team of male and female private investigators are local to Burnley Wood, all are highly trained and experienced.
Being a private in Burnley Wood is all about collecting information and facts. To be able to collect facts about Burnley Wood first you need to know Burnley Wood inside and out.
On these second period, visitors once in awhile wanted service of a detective that is private British is not any difference, needless to say. Lancashire state, having its society of over 1,1 million somebody, staying in lots of areas and villages that are numerous supplies the exclusive investigators in Lancashire an abundance of strive to create. Very obviously, there are more agencies which give support of a investigator that is private Lancashire, but all of our skilled staff are way prior to the remainder of the field.
Twenty-five many years of unique experiences talk on their own, are not they? Additionally, all of our certified workers of personal detectives in Lancashire can feature a achievement rate that is really stunning. The newest exclusive research Lancashire personnel done integrated criminal record checks; locating people, from beginning moms and dads, forgotten relation and runaway teens to debtors and witnesses to criminal activities; probing into marital fidelity of partners; look for undetectable possessions; overseeing staff members' pc contacts and motion, and others that are many.
Then detail your burden if you faced a tricky circumstance and stand are in critical need of a private detective in Lancashire, phone our agency. Our very own officials, many of who I did so a position in authorities or unique causes, will offer you give you support Burnley Wood along with it when you look at the more way that is optimal cost-free information appear as a plus!) It is possible when you hire our specialists, can be sure indeed that your probe would be definitely achieved, as successfully and speedily as.
Burnley Wood try an area and previous ward that is electoral of, Lancashire. The area lies between Parliament Street in the north and Stoney Street in the south, and from the railway in the west to Todmorden Road in the east in broad terms. Centred on traditional meanings with the ward boundary, Burnley Wood may be understood to be such as the more areas that are affluent the Wood grove highway location to your eastern of Todmorden street, Brook lands roadway towards the south additionally the region north of Parliament Street in terms of the River Calder. Usually the area got found in the township and parish of Habergham Eaves, split up through the Burnley township, later Borough because of the Calder before are included in the County Borough of Burnley in 1894. From inside the sixteenth-century, whilst the true term shows, the spot had been primarily included in harsh moorland and woodland, with a scattering of farmsteads regarding the borders in the Burnley. These incorporated Whittaker Farm, in the junction of this day that is present Lane and Todmorden street Mosely Farm as to what is currently Glebe Street Hollingreave home, in the junction of Brunswick Street and Hollingreave highway and Hufling hallway. This belated seventeenth 100 years farmhouse try a grade II noted strengthening and it is sandwiched between belated century housing that is nineteenth. Todmorden roadway, turned into a turnpike road in 1817 and turned into a route associated with Burnley agency Tramway in 1910. The ownership of St Peter's Church, and as such could not be developed from 1673 to 1819, the majority of Burnley Wood was glebe land in. But, by 1825, as Burnley started to develop fast as a cotton that is burgeoning area, spurred in from the conclusion in the Leeds and Liverpool Canal in 1801, back-to-back cottages and mills started initially to create along side channel at Lane Bridge around Finsley door. Between 1825 and 1844 Spring Gardens factory, along with back-to-back homes are developed between Plumbe Street and East gate (today Yorkshire Street) and coal exploration additionally started to happen from the north bank of this River Calder between Plumbe Street and Oxford path. A few huge homes in substantial reasons had been constructed across the American area of Todmorden street as well as a Roman Catholic chapel, during that time away from boundary on the township of Burnley, and a hamlet that is small across the Woodman Inn during the junction of Todmorden street and Hufling Lane. More along Hufling Lane, to the west of 'Hufflen hallway' a row of cottages referred to as 'Organ Row' comprise constructed in close proximity to Towneley railroad station which have unsealed along the way of this Lancashire and Yorkshire Railway between Rose Grove and Todmordenin 1849 . The residential elements having two distinct characters: large stone-built houses in spacious grounds, flanking Brook lands Road and Todmorden Road and largely providing accommodation for wealthy mill or mine owners and senior employees, and high density terraced housing in the second half of the nineteenth century, widespread development occurred in Burnley Wood.
Burnley Wood additionally noticed the introduction of an number that is extensive of mills and linked property, mainly created between 1860 and 1890. It was as a result of enhanced challenges within Burnley to grow beyond the channel as the town became fast and permit the introduction of more production facilities and mills along side span of the Calder with casing along with other places meet up with the residing specifications of the staff. Major development that is urban put on both side associated with the river and also by the 1880s, Burnley Wood while the adjoining Full edge region only north for the river between Plumbe Street and Todmorden roadway got progressed into a densely populated location of terraced casing presented in a timeless grid metal pattern of horizontal and vertical rows of primarily identikit two bedroomed homes. Almost all of residences integrated this era benefitted from backside gardens reached straight down right back streets which happened to be greater sufficient to satisfy carts (and after this can certainly still provide day that is modern motors), whilst some residences specifically throughout the American and south sides with the region along Hollingreave street and Glebe Street, elements of Emily Street, Dall Street, Reed Street, Sussex Street and Huffling Lane comprise supplied with an added confined room at the front end on the residences split up through the pavement, some despite having bay Microsoft windows and basements. Merely these homes, collectively terraces on Parkinson Street, Stoney Street and also the western area of part street today continue to be, some of which happened to be modified while in the sixties and 70s to support restrooms and kitchen that is modern. There is some restricted century that is twentieth homes The mills which had mainly offered business for Burnley Wood and Full edge residents had been centred near to the banks associated with Calder around Parliament Street and Oxford path and provided health spa Field factory, Full edge factory, hands Bridge factory, Pent ridge (or Partridge factory which had been changed into a cinema through the 1920s to provide both Burnley Wood and Full edge customers), Burnley Wood factory, Oxford factory and Springfield factory. Plumbe Street lose, a storey that is largely single weaving shed was actually situated near to the channel. All of the everyday desires of neighbourhood people comprise satisfied through wider system of corner stores constructed on many roads, specially those operating on an ax that is east-west like Springfield path and Brunswick Street, whilst Parliament Street and Oxford path resulted in specific grocery places recognized until at the very least the later part of the 1990s early 2000s by their sub article organizations. As a result of its end into the belated century that is nineteenth the spot stayed improperly linked to the primary heart of Burnley for many ages because of insufficient bridge crossings over both the channel and River Calder. Precisely the Hand that is historic Bridge transported the Todmorden path over the Calder been around during the time with the Turn move Bridge over the channel at Finsley entrance.
This resulted in a campaign that is concerted this era observe enhanced hyperlinks along with the rest of the town and generated the replacing from the Turn Bridge, an upgrade of give Bridge therefore the development with the Plumbe Street and Oxford path bridges with long lasting metal frameworks. Even so, close connections that are vehicular like the ones from tram providers which went from Burnley town centre along Todmorden highway are constrained because of the slim "Culvert" within the canal at Yorkshire Street until it had been dramatically reconstructed in 1926. The community that is emerging well offered with spots of praise and studies. Belated century that is nineteenth incorporated Burnley Wood college present between Glebe Street and department roadway Todmorden street Council education and St. Stephen's Church of The united kingdom college in St. Stephen's Street present between Oxford path and Tarleton Street. St. Stephen's stayed whilst the infant-school but got sealed in 1969 if it signed up with the school that is junior Towneley Holmes in Wood grove highway, which in fact had become inbuilt the 1950s. Burnley Wood class had been partly demolished within the mid-1980s whenever rot that is dry found plus the staying structures happen changed into flats. That class moved to a site that is new cleared land in the region of Waterloo roadway and Springfield path as well as in the mid-2000s joined with Todmorden path college, which alone had been demolished, your website of and that's today the situation regarding the Burnley enter workplace. The place that is main of in Burnley Wood has been St. Stephen's Church on Oxford roadway and Smalley Street, which will be today a Grade II indexed strengthening. The spiritual wants of low conformists comprise furthermore fulfilled within the area, like the Rehoboth purpose in the area of Waterloo roadway and Springfield path which had been demolished into the 70s, although the School, built in 1881 on the corner of Springfield Road and Crowther Street still remains and was for a time used as a community centre for the district Sunday. There seemed to be a Congregational Church throughout the spot of Kirkgate and Hollingreave path having its adjoining Sunday-school from the place with Brunswick Street, demolished for the 1980s and today changed by a housing that is sheltered, as the Wesleyan Methodist Chapel in Brook lands street and south of Stoney Street nevertheless continues to be. Extremely, Burnley Wood got been able to preserve the vast majority of the historical community residences despite witnessing big metropolitan approval of most of the region around Waterloo roadway, the north element of Hirst Street and Russell Street into the 70s accompanied by a clearance that is later the very last ten years around might Street, Duke Street and also the south section of Hirst Street. Included in these are the Brittania Inn at spot of just what stays of Springfield roadway and Oxford path, which had been stored from demolition into the 70s, The regal Butterfly in the place of Hollingreave roadway and Huffling Lane, The Rifle Volunteer regarding the area of Tarleton Street and Smalley Street in addition to landmark that is historic resorts from the southernmost conclusion of Oxford roadway and Todmorden Road. The Stanley in Oxford path ultimately shut in 2014 there was clearly furthermore a lively governmental world in Burnley Wood while in the belated nineteenth 100 years which generated the founding of both a Conservative Club and Liberal Club both on Brunswick Street. The traditional doing work Men's dance club stays available, although has stopped being connected to your traditional Party. Though the Liberal nightclub, over time to be a Gospel hallway has grown to be flats. The region spotted a amount that is significant of approval throughout the 1970s, generating the increasing loss of domestic roadways like Holton Street, Rawlinson Street, Russell Street, Swain bank Street, Laurel Street and several elements of Waterloo path, Springfield highway and Brunswick Street, which turned disconnected as infill property such as for example Russell courtroom and Brittania stroll. The Gerald courtroom sheltered housing elaborate, today alone demolished additionally the replacing Burnley Wood college, today Springfield main college comprise constructed on web sites of demolished attributes from the end that is northern of Street plus the north conclusion of Waterloo highway correspondingly, and the majority of in the mills eventually shut and received over for other professional and industrial applications. But, in across the middle 1990s, Burnley Wood as well as its growth of mainly decreased level two rooms houses that are terraced to experienced housing industry troubles,. They turned into section of eastern Lancashire's Elevate scheme to obvious, rebuild or remodel what are regarded as being an over way to obtain sub-standard property. The catalyst because of this got the 2001 Burnley Riots which delivered the issues of Burnley Wood to attention that is national. The section consist inside the Rose hill with Burnley Wood ward. Demographics demonstrate that the ward try 96.86% white British. The list of numerous deprivation places element of Burnley Wood one of the 5% more deprived avenues when you look at the country, yet components of neighbouring Rosehill and the location around Wood grove path and Brook lands street inside the exact same ward can be found in distinction tend to be more rich compared to average that is national. 21.41% of kids into the ward meet the criteria free of charge class dinners. The spot keeps a traditionally stronger identity that is local. An community that is active, Burnley Wood society motion cluster, posts a free of charge papers, the Burnley Wood Argus, for any neighbourhood, and Burnley Wood Park, a fresh area park funded by Elevate, is inbuilt the middle of this very early twenty very first millennium property approval place around Morley Street. Earlier crime that is high, specifically antisocial behaviour by teenagers, today seem to be in fall: there have been 114 criminal activities per 1,000 residents when you look at the seasons to December 2007 (Lancashire average 89.4), a fall of 19.2per cent from the earlier a year. The region into the to the west of St. Stephen's church has become thoroughly redeveloped with a blend of large group homes and also for the time that is first their records today permits the church to get seen in complete from Kirkgate instead of behind the earlier row of terraces that have been lately demolished.


Stop Focusing: Your Brain Needs a Break. Is focus is the golden cup?
Focus and the resulting productivity are the holy grails of everyone's workday. Being focused is something we all strive towards and there is no doubt of the benefits one gains when they're able to focus. You get more done, faster and with less mental effort. Being able to focus for extended periods of time can save you a lot of time and mental energy. After all, any distraction, whether it's Facebook, an incoming mail or thoughts of what you're having for dinner, are minutes or hours of lost productivity. Even if it's just a few minutes here and there, that time adds up. And the time cost doesn't include the mental energy required to come back to the task, figure out where you were, and get back into flow. Do that a few times and your brain will have wasted quite a bit of energy it could have spent on the task at hand.
So focus is great. Focus is the golden cup we should all be reaching for, right? Well, yes and no. It turns out too much focus is also a bad thing.Your brain, like the rest of you, needs a break from hard work.
Excessive focus can exhaust the focus circuits of your brain.Your exhausted brain will naturally have less energy and less self-control. This lack of self-control can make you more impulsive and less helpful. In your work environment that means you're not making well-thought out decisions and are less likely to collaborate with your colleagues. Just the reputation you want, right?
So what do you do? Do you sacrifice your hard-won ability to focus? Or do you focus anyway and just hope you don't exhaust your brain by doing so?
For optimal brain function, what you need to do is switch between focused and unfocused periods. Alternating will allow you to become more resilient, more creative, and to make better decisions.
When you're intentionally unfocused (come back from Instagram now please), what you're doing is activating the brain circuit known as "default mode network", abbreviated as DMN. When you're at rest, this circuit uses up 20% of the body's energy (which is impressive since your brain is only 2% of your body weight.) Why so much energy? Because while you're resting, the DMN isn't.
The DMN is hard at work under the brain's conscious radar activating old memories, hopping through the past, present and future and combining different ideas. Using this new or previously uncombined information, you're able to imagine creative solutions, tune into other people's thinking and predict the future, which leads to better decision making. Think of all the times a possible solution just "came to you" after puzzling over the problem for hours and then walking away. That was thanks to the efforts of the DMN.
There are several ways to build productive unfocused time for your DMN to be activated into your daily life.
Don't do this at work unless you're a freelancer working from home or you have an incredibly understanding boss. When your brain is tired, your creativity and clarity are negatively impacted. To be more creative, go for a full 90 minute nap. If you're just looking for a little clarity, a 10 minute power nap is your best bet.
That's right. Pretend to be someone else and see how they would approach the problem or task you're facing. Someone like JK Rowling would approach a problem very differently than someone like Marie Curie would. Try on various hats and see if thinking like someone wildly creative will bring you different solutions than being your normal self.
PCD is not accidental daydreaming nor the guilt-ridden and stressful rehashing of worries. It's the relaxed mind-wanderings you have while engaging in a low-key activity like knitting or coloring or gardening. The very reason these activities, especially knitting and coloring, have grown in popularity over the last few years is because they are a gateway to PCD.
PCD is when you spend time engaging internally- exploring who you are through what you enjoy, casually connecting ideas and digging deep into your forgotten memories to establish your sense of identity. After some time engaged in PCD, your sense of self is stronger and your mind feels relaxed and refreshed.
Constructive unfocused time is just as important as your focused work, and will actually improve the quality of work you do when you're focusing. So get your work done but also be sure to take a break and let your brain play on a regular basis. Your team will thank you.
Amna is a writer and content strategist. As the Head of Content at Pinstriped, she's responsible for everything with words you see on this website. If you find any mistakes, please let her know on Twitter or Instagram.
Are Your Meetings Expenses or Investments?


Bring the wonder and magic of the ocean into your child's nursery with this adorable whale mobile. 100% Wool Felt and hand made in Jaipur, India. Designed by Fiona Walker in England, and inspired by Scandinavian colors and design, it is eye-catching, memorable, and filled with personality. It measures 13"W x13"H x 27"D. Click on images for greater detail.


text:
Gare d'Oran
This station was built in Oran during the French occupation by the architects Marius Toudoire and Albert Ballu, on behalf of the French railway Company of that time P.L.M. It was built as a substitute of the old station which was unfit to receive the growing number of travelers. Indeed, at the end of the 19th century, Oran became the railway node of western Algeria. The city was continually receiving passengers and freight, and needed a new station to match its new status. In 1908, architectural and engineering studies for the new central station were completed. In 1913, it was opened to the public, and had six platform lines.
The most remarkable feature in this station is its neo-Moorish style that mimics the religious monuments of Tlemcen and Algiers. The station clock tower has the shape of a Moorish minaret, surmounted by a small lantern. The lobby is crowned with a large 8-sided dome, decorated on its underside with muqarnas. The first level of the facade is perforated throughout its length with Algiers-style doors, protected by wooden awnings. The second level is a series of geminate windows, assembled in the form of bay windows around the corners of the building.
--Amine Kasmi, 2018
Chaila, Houari. Oran, Histoire d'une ville. Oran: EDIK, 2001.
Lespès, René. Oran, Étude de géographie et d'histoire urbaines. Algiers: Carbonnel, 1938.
Abadie, Louis. Oran de ma jeunesse, 1935-1962. Nice: Jacques Gandini, 2000.
Variant names
Train Station (Oran)
Gare Centrale d'Oran
محطة قطار وهران
Style period
Moorish Revival, French Colonial
Albert Ballu (architect)
Denis-Marius Toudoire (architect) (1852-1922)
Oran (place) (903 foundation)
cast iron, cement, ceramic, reinforced concrete, steel, stone, stucco, zelij
2015 on Archnet
railroad stations, transportation infrastructure
Amine Kasmi
Medrassen
Boumia, Algeria
3rd c. BCE
Tomb of the Christian Woman
Tipaza, Algeria
1st c. BCE
Jami' al-Kabir (Algiers)
Algiers, Algeria
ca. 1096/489 AH; ca. 1324/724 AH Minaret; ca. 1836/1252 AH Facade
M'zab
Ghardaia, Algeria
11th c. CE
Jami' al-Kabir (Tlemcen)
Tlemcen, Algeria
ca. 1082/474 AH, rebuilt 1136/530 AH, dome and minaret ca. 1236/633 AH
El Mechouar
1145/540 AH, late 13th-Early 14th c./7th-8th c. AH, modified, 2010/1431 AH, restoration
Mosquée de Mansourah
Mansura, Algeria
ca. 1302/702 AH, ca.1336/737 AH reconstruction
Complex of Sidi Bu Medyan
late 12th century/6th century AH qubba, 1339/740 AH mosque, Late 18th century/early 13th century AH restorations to the complex
Bab al-Bahr
Béjaïa, Algeria
Masjid Sayyidi 'Uqba
Sidi Okba, Algeria
686/284 AH
Mosque of Qal'a Beni Hammad
Qal'a Beni Hammad, Algeria
1007-1008/397-398 AH, 1062-1089/454-481 AH (modified), second quarter 12th/early 6th century AH (modified), 1974 (minaret renovated)
Le Rocher
Constantine, Algeria
Djamaa al-Kabir (Constantine)
Construction 1135/530 AH, restoration 1766/1180 AH
Palais Ahmed Bey
1826-1835/1241-1250 AH
Qasba (Algiers)
c. 960; 1516-1592 construction of Ottoman fortress; 1610 construction of Hamma aqueduct; ca.1832-1913 demolition of lower Casbah; 1988-1993 restoration of Bastion 23 in Lower Casbah;
Dar Mustapha Pacha
Dar Bakri
1570-75/977-82 AH; Expansion 1789/1203 AH
Dar Aziza
16th c.
Jami' al-Jadid
1660/1070 AH
Madrasa
Zawiya Sidi Abd al-Rahman
Jami' Ketchaoua
1612/1021 AH; 1794/1208 AH Enlarged
Grande Poste d'Alger
Masjid Hassan el-Bacha
Madrasa al-Thaâlibyya
Jami' Sidi al-Houari
1792/1206 AH minaret
Moorish Monuments of Algeria: Videos
Moorish Monuments of Algeria: Architectural Drawings


I'm Levy Amosin, travel x style blogger and founder of hugginghorizons.com . "Hugging Horizons" is a brand and a blog site featuring heartfelt travel and style stories. I was born in Iloilo, raised in Manila and am sometimes based in Hong Kong. I've been traveling since I was 4 years old! Growing up with that lifestyle, I also found love in photography and writing as a way of expressing myself. It is humbling to partner with the biggest newspaper in my hometown — the DAILY GUARDIAN (DG). We are pleased to speak the truth and provide you honest stories. Authenticity is something we share and value. We built our brands on honest intentions and I am proud to partner with an organization that has served the public for 18 years.
With a degree in AB communication, I began designing a website and extended the brand to instagram (handle : @levyamosin). At present, it is now frequented by both local and international audience, mostly from South East Asia. Likes and followers aside, I believe it's the quality of my confessions and the values I carry that have led me to where I am today. The readers and clients will speak for you. Trust me, being kind, passionate and honest go a long way.
I began sharing my travel confessions and stories publicly on the blog last 2016. As a dreamer, I believe that "our passion is our best profession." It is a long hard road to turn our passions into a full-fledged profession, yet our dreams are invisible paths, whispered by our hearts, leading us to our true purpose. No matter the size, don't let anyone take your dreams from you.
The blog was once just a dream. A little respect here, some honesty there, and a lot of grinding later, "Hugging Horizons" is now a brand magnet to audiences in the Philippines, Hong Kong, Indonesia, South Korea and Japan.
The blog has brought me many places and opportunities. I have been invited to join Familiarization trips like NLEX Lakbay Norte 6 where I won the Travel Photo of the Year 2017 award. Several more familiarization trips in and outside of Iloilo were given to me by the Tourism Promotions Board of the Philippines (TPB), and they have continued to do so for more than 2 years now.
I was also the travel ambassador and the face of Helicam Philippines' "It has to be Iloilo" in 2017 thanks to the Department of Tourism Region 6.
Recently I went on a sponsored trip to Seoul, South Korea as EON Travel and Tours' 20th anniversary's official blogger.
I can go on and on with my travel assignments. The world is huge, after all, and I have yet to discover all of it!
The blog has also brought in many opportunities in fashion!
It was a media partner for the 'Belmont Fashion Show' featuring Vogue Paris Talent Ched Studio's collection. I also represented the Philippines during ESMOD Jarkarta's annual fashion show where I became Indonesian international designer brand YoungWoong's muse. Finally, I worked with SILA Paris, a Parisian jewel watch during the opening of their first pop-up store in Hong Kong.
Just this year, I became one of Spotify Asia – Philippines' endorsers, announcing their limited time offer promotions for Spotify Premium!
The blog also gave me the opportunity to experience the accommodation of countless amazing resorts and hotels!
The blog has given me an undeniable jet setter life style, a privilege so few have. However, it isn't fame nor the VIP treatments that push me, but rather the stories I gather along the way.
What inspires me to grind more and do better isn't the craving of a luxurious life. It is having a voice for the community I've attracted. It is one of my goals to make women who wear bikinis feel confident and safe from perverts on social media. We should not allow society to define who we are.To my readers and the people that stayed despite throughout the highs and lows, THANK YOU! This is for you!
It's been 3 years and there's no backing out anymore.
Hugginghorizons.com is now part of who I am, online AND offline. It's my public diary, from my first solo trip abroad, my first hike, first cruise and more.
Little did I know, that I would be touching people's hearts as I wrote about my trips. There are friends and critiques. Yet, the platform was built to collect stories from the dreaming heart of a stylish yet passionate traveler.
More than our achievements in life is our story. Let us inspire the next generation to do better, and be better than we could possibly ever imagine.
As a promise, the DAILY GUARDIAN and I will continue serving the public. See you in the coming issues!


Traders must invest in trade goods, which are an abstract resource costing one bank note (1000 coins) each. Trade goods must be purchased with bank notes, which requires a bank relationship. Nobody is going to entrust their merchandise to a group of vagabonds with a sack of coin. Each trade good requires a wagon and team, making it obvious at a glance the approximate value of any caravan. For simplicity's sake, the cost of wagon and driver is subsumed into the cost of trade goods.
Arbitrage gained is equal to the number of random encounter checks due to travel braved for each unit of trade goods. If the journey was not perilous, characters other than adventurers would already be moving goods. Upon reaching a destination market, the party gains a return of 50 coins in exchange for each point of arbitrage.
For example, a party with three units of trade goods that faces four random encounter checks accumulates four arbitrage points. This translates to a return of 200 coins on each unit of goods, yielding a total of 3 (trade goods) x 4 (arbitrage points) x 50 (arbitrage return) = 3 x 200 = 600 coins, which must then be divided among the party and is treated the same way as treasure. The way I usually run wilderness travel, each hex takes one day to traverse at standard overland speed, with one random encounter check (1 in 6 chance) per day and one per night. This means that the "cost" of the above example return is 3 bank notes worth of capital (3000 coins) and 6 random encounter checks. Increase either the capital invested or the distance travelled and the return increases proportionally.
There should probably be some limit to the amount of trade a given town or stronghold can absorb, but that can be handled by common sense and ruling. Return can be adjusted for goods that are particularly in demand if desired, though this requires slightly more settlement elaboration on the part of the referee. Perhaps tags per settlement for goods exported and imported would be enough to support this added level of detail. I vaguely recall An Echo, Resounding and Dungeon World (the steading system) to have some related ideas, so perhaps they can be mined for approaches to managing settlement information.
This entry was posted in Rules and tagged wilderness on July 10, 2014 by Necropraxis.
It's probably overkill, but the ACKS system for determining supply and demand ends up with modifiers in the range +3..-3 for each of ~20 categories of goods at each market; that feels like a reasonable scale to tie in with this system: haul a caravan from a -3 to a +3 and you're getting an extra 300c per load; haul from a +3 to a -3 and you're not going to make any profit unless it was an absurdly long trip.
I guess the major decision would be flat premium no matter the distance (as I think you are suggesting, with the bonus being applied to arbitrage points at the end point?) or a scaling of the value of each arbitrage point. My not carefully analyzed initial thought as a simple rating of "standard," "in demand," and "not in demand but not worth nothing" (with value multiples of 1, 2, and 1/2 respectively) would work well.
Or summarized: double return (100 coins per arbitrage point) on things that are in demand and half return (25 coins per arbitrage point) on things that are less in demand.
1. TOTALLY EXCELLENT! As usual.
2. Since you have abstract trade goods already, would it be impossible to add various rarities of goods in order to lug more for more risk?
3. Courtney over at Telecanter's Receding Rules put together a great list of treasure that ain't coins, gems or magic items. That might be useful to spice up your trade goods minigame.
Yes, I think rarities could easily be modelled with increased arbitrage modifier. Though, being rare, they should perhaps require adventures (or at least greater investment), even to find. I will also note that strictly speaking just buying more units of standard trade goods is also more risk (as you could be robbed on the way, or lose all your wagons during a river crossing, or have some other disaster befall the trading expedition).
4. In your exposition, you mention that each hex takes one day to travel, all things being equal. Are these solipistic hexes? How do you figure a road across a plain takes the same amount of travel time as a dense forest, for instance?
Yeah, I've been using the solipsistic hex approach. Tracking exact distances just doesn't seem to have much payback relative to the work required, though I know that will not be satisfying for folks that like more exact numerical correspondences. So the real answer is that "I just don't look that closely at that part of the fiction." That said, it is, I believe still logically consistent. Since a hex has no specific numbers attached, a hex of dense forest can represent less area than a hex of open plains. Yes, it is true that the resolution of such mapping is limited, but in practice I have found it plenty good enough. Most of the time, players are interested in getting from A to B and seeing the sights along the way or poking around C while they look for some hidden thing. And this system seems to have all the detail needed to support those activities in an impartial manner, while allowing structured off road exploration (something that I find hard to do with, for example, a point-crawl approach).
All that said, if using an approach where distances are considered more concretely, the random encounter check metric should still work, I think. So if it takes three days to cross the tangled forest, that's worth three arbitrage points even if the same distance, had it been plains, could have been covered in a single day. Essentially, it is just a measure of cumulative danger faced.
One point that I didn't raise in the post that is probably worth mentioning is that the number of random encounter checks is a proxy for hazard degree assuming a reasonably smart path is chosen. Obviously you should not be able to rack up arbitrage points by travelling in circles prior to arrival at the destination. So some common sense is required there, though in some cases I could see counting the the encounters from getting lost, especially if the route is completely new, if that is the kind of thing other NPC traders would reasonably have to face also.
After reading critically and digging a little bit I can see my questions were largely answered in the original post. That's one of the pitfalls of reading on the mobile look-at device while doing other things.
I have another question and it's earnest, and not tongue-in-cheek. How do solipistic hexes "fit together" as it were?
I missed this when it first went up, I like it and it fits well with an idea of abstract values based on population size and 1,000GP lumps of 'resources' to define a settlement. Obviously it could be made more complex with even simple good categories based on resource type (i.e. food, luxury, security, magic), but that's unnecessary. The only issue on the arbitrage is that it seems high. I might set the specific arbitrage multiplier based on the destination itself and at lower then 2 points per day of travel, unless one was using some kind of automatic encounter system. Of course this would also depend on game world size, danger associated with wilderness encounters and such. I might allow thieves the ability to 'carouse' for a increased arbitrage points/return in the form of smuggling with a failed roll leading to either an ambush or getting caught as a smuggler.
Yes, the arbitrage return should probably be adjusted to the danger of the setting, though I would say that dangerous wildernesses are more fun to adventure in. Otherwise, I think this sort of activity would lose interest and start to feel a bit like a grind.
The assumption here is approximately OD&D in terms of encounter hazard.
Why wouldn't people sell their trade goods to vagabonds with sacks of coins? They're getting paid, what's the difference?
That's a good point. The bank note requirement is probably superfluous in this case. Removing it also simplifies the systems slightly, which is always welcome. Possibly, some other option involving credit might justify using banknotes, but that is maybe needless complexity and also does not fit quite so well with the treasure hunter riches that are not uncommon in D&D.


Daylily Spellbinder, Hemerocallis 'Spellbinder' is certainly one of the most striking daylilies we have seen! As the name implies, these immense 6.5" flowers will cast a spell on you as you stare at the radiant golden-orange flowers.
The color is very intense and will surely get the attention of anyone passing by this daylily!
What makes 'Spellbinder' even better is the very long bloom season! In Michigan, it is one of the first to bloom in early June and it continues to rebloom throughout the summer.
'Spellbinder' also has dark green, pest resistant foliage. Daylilies will grow in almost any soil and prefer full sun. Use for mass plantings, edging, in borders or in mixed containers and tubs.
Planted together in large numbers, they quickly crowd out weeds and make a carefree and colorful ground cover.
Daylilies can survive many harsh conditions that other plants cannot. This includes polluted city environments, slopes, poor and dry soils, near pavement that is salted in winter, and under Black Walnut trees (not affected by juglone).
It is heavily budded, shows off its warm peach color, and will rebloom later in the season to give you a repeat performance! 'Spellbinder' is a daylily every garden should have!


text:
Alex Breitler's Environment Blog
Environment @ Recordnet.com
Education @ Recordnet.com
« Smith Canal petition in the works
Latest Smith Canal court document »
Even in flood, smelt captured at Delta pumps
By Alex Breitler | Published: March 27, 2017 | Leave a comment
State and federal water exporters are approaching a key limit to the number of imperiled Delta smelt that can be "salvaged" (read: killed) at the south Delta pumps.
Make no mistake, it's been a great water year for people and fish alike. Conditions in the Delta for smelt and other species are the best they've been in years.
But for reasons experts can only theorize about, smelt have been showing up at the pumps off and on since January. As of today, 57 smelt have been counted there; this year's "take" limit, as determined by scientists, is 64 fish.
If you bust through your take limit you risk getting shut down. So the U.S. Bureau of Reclamation has asked its counterpart, the U.S. Fish and Wildlife Service, to consider raising the limit. (The state's not pumping right now because of damage at Clifton Court Forebay.)
No decision has been announced. But in its March 17 response to the bureau's request, Fish and Wildlife notes that the exporters' planned operations through April "will maintain favorable conditions for Delta smelt" and says the agency will work closely with the exporters to "adaptively manage and avoid or minimize impacts."
Salvage at the pumps. Graph from the state Department of Fish and Wildlife
Jon Rosenfield, a biologist with The Bay Institute, an environmental group, expressed a word of caution about increasing the number of fish that can be killed. The limit was set at 64 for a reason, because the science considers that to be the number of fish that can be taken at the pumps without jeopardizing the species, he said.
"There has to be a biological rationale for allowing more take than would previously have prevented jeopardy," Rosenfield said.
Rules for how much water must flow through the Delta were temporarily weakened each of the past three years because of the drought, and smelt populations reached new historic lows. The population will likely increase this year, but every adult smelt taken at the pumps is one less fish available to produce next year's progeny.
"We need to capitalize on every opportunity we have to bolster their populations," Rosenfield said.
Non-scientist that I am, I was surprised to learn that smelt were showing up at the pumps at all. I've been told they're lousy swimmers. And with all the water in the system, the rivers near the pumps have been flowing downstream (a rarity) for weeks now. Wouldn't that keep smelt at a safe distance?
Not necessarily. Rosenfield said that even with rivers surging in one direction, smelt may be able to work their way upstream following smaller eddies or side currents.
Why swim upstream at all? The smelt may be chasing turbid, or cloudy, water into the area around the pumps, he said. Smelt like turbidity because it allows them to hide from predators. They may be wandering close to the pumps because (gasp) the south Delta actually appears to the fish to be a functioning river estuary right now.
We won't have the full picture for how this year's high flows have benefited smelt until a series of surveys this fall. A word of caution: Smelt populations increased 738 percent during the wet year of 2011, only to plummet right back to near-historic lows the following year once dry conditions returned.
If there's a nice bump in 2017, let's hope it isn't another one-time deal.
This entry was posted in Uncategorized. Bookmark the permalink. Post a comment
We reserve the right to remove any content at any time from this Community, including without limitation if it violates the Community Rules. We ask that you report content that you in good faith believe violates the above rules by clicking the Flag link next to the offending comment or fill out this form.
Archives Select Month February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 June 2010 May 2010 April 2010 March 2010 February 2010 January 2010 December 2009 November 2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April 2009 March 2009 February 2009 January 2009 December 2008 November 2008 October 2008 September 2008 August 2008 July 2008 June 2008 May 2008 April 2008 March 2008 February 2008 January 2008 December 2007 November 2007 October 2007 September 2007 August 2007 July 2007 June 2007 May 2007
Tweets by @alexbreitler


text:
Q: In how many ways can I have $1.50 using exactly 50 Coins? In how many ways can I have $1.50 using exactly 50 Coins? The coins may be pennies (1 cent), nickels (5 cents), dimes (10 cents) or quarters (25 cents).

A: Let me try a generating function approach (first time trying, apologies if it is wrong):
$f_1=(1+nx+n^2x^2+\dots+n^{150}x^{150})$
$f_5=(1+nx^5+n^2x^{10}+\dots+n^{30}x^{150})$
$f_{10}=(1+nx^{10}+n^2x^{20}+\dots+n^{15}x^{150})$
$f_{25}=(1+nx^{25}+n^2x^{50}+\dots+n^6x^{150})$
The solution can be found within: $g=(f_1)(f_5)(f_{10})(f_{25})$.
More precisely, we need to locate the term $x^{150}n^{50}$, which signifies a sum of $150$ cents and $50$ coins.
Then, the coefficient represents the number of ways to do so.
An explanation of why it works:
For each $f_i$, it can be seen that exponent of $n$ represents the number of coins while exponent of $x$ represents the amount of money.
i.e. $n^5x^{125}$ means 5 coins for 125 cents.
When we multiply two terms, say $(n^ix^j)(n^kx^l)=n^{i+k}x^{j+l}$, it can be seen that the term conveniently computes the sum of money and also sum of coins used.
Calculation by hand is not recommended.
I tried it in Mathematica and I have the term $10n^{50}x^{150}$, which means that there should be 10 ways to do so.
Edit: In view of Soloveichik answer, this is how one might do it in Mathematica:
f=1/((1-n*x)(1-n*x^5)(1-n*x^10)(1-n*x^25));
series=SeriesCoefficient[f,{x,0,150},{n,0,50}]
Answer: 10

A: The total number of ways of forming $1.50 using these coins can be calculated in GAP via:
NrRestrictedPartitions(150,[1,5,10,25]);

which returns 680.
With the additional restriction of there being exactly 50 coins, it can be found via:
NrRestrictedPartitions(150,[1,5,10,25],50);

The 10 possibilities are listed below as [ q, d, n, p ]:
[ 0, 0, 25, 25 ]
[ 0, 4, 16, 30 ]
[ 0, 8, 7, 35 ]
[ 1, 0, 19, 30 ]
[ 1, 4, 10, 35 ]
[ 1, 8, 1, 40 ]
[ 2, 0, 13, 35 ]
[ 2, 4, 4, 40 ]
[ 3, 0, 7, 40 ]
[ 4, 0, 1, 45 ]

The partitions themselves can be computed using: RestrictedPartitions(150,[1,5,10,25],50);

A: Small examples of this sort of problem can be written out. In this case, start with the two equations:
$$p + 5n + 10d + 25q = 150$$
$$p+n+d+q = 50$$
Subtracting, we get:
$$4n + 9d + 24q = 100$$
Notice that since $9$ and $24$ are divisible by $3$ then $100-4n$ must be as well, so $n=3n'+1$ for some $n'$ and we get:
$$12n' + 4 + 9d + 24q = 100$$
or
$$4n' + 3d + 8q = 32$$
Now we see that $d$ must be divisible by $4$, so we let $d=4d'$ and we have the equation:
$$n' + 3d' + 2q = 8$$
That is a much easier problem to solve by brute force.
Once you have a solution to this, you have solution to the original by taking:
$$(p,n,d,q) = (50-(3n'+1)-4d'-q, 3n'+1,4d',q)$$
So you need to find all nonegative solutions to:
$$n'+3d'+2q = 8$$
with the added condition that $50-(3n'+1)-4d'-q\geq 0$. That last condition turns out to not affect the problem since it is true for all positive solutions.

A: You are looking for solutions of
$$\tag1p+5n+10d+25q=150$$
$$\tag2p+n+d+q=50$$
in non-negative integers $p,n,d,q$.
Any amount $m$ combinable with nickels and dimes is nonnegative and divisible by 5 and uses between $\frac m{10}$ and $\frac m5$ coins.
And on the other hand, for any nonnegative amount $m$ divisible by $5$ and $k$ with $5k\le m\le 10k$, there is a unique way to have $m$ cents in $k$ coins that are nickels and dimes. To see this, start with $\frac m5$ nickels and decrease the number of coins one by one (by replacing two nickels with a dime) untl you have the desired number of coins. One observes that this produces $\frac m5-k$ dimes and $2k-\frac m5$ nickels.
Thus we are looking for pairs $(p,q)$ with $p,q\ge0$, such that $150-p-25q$ is a nonnegative multiple of 5 and $5(50-p-q)\le 150-p-25q\le 10(50-p-q)$.
The latter inequality is equivalent to
$$\tag3 9p-15q\le 350$$
and $$\tag4 4p-20q\ge 100 .$$
Because $150-p-25q$ must be a multiple of $5$, $p$ must be a multiple of $5$.
Hence write $p=5p'$.
Then (3) and (4) become (after dividing out common factors)
$$\tag5  q-3p'\ge -23$$
$$\tag6  p'-q\ge 5$$
And the nonnegativeness of $150-p-25q$ translates to
$$\tag 7 -p'-5q\ge-30.$$
From $(5)+3\cdot(6)$, we conclude $-2q\ge -8$, i.e. $q\le 4$
With $q=0$, we obtain $5\le p'\le 7$ from (5) and (6).
With $q=1$, we obtain $6\le p'\le 8 $.
With $q=2$, we obtain $7\le p'\le 8 $.
With $q=3$, we obtain $8\le p'\le 8 $.
With $q=4$, we obtain $9\le p'\le 9 $.
In all cases, (7) holds as well, thus we find a total of $3+3+2+1+1=10$ possible soluitons.
Explicitly, we have the following solutions for $(p,n,d,q)$:
$(25, 25, 0, 0)$, $(30, 16, 4, 0)$, $(35, 7, 8, 0)$,
$(30, 19, 0, 1)$, $(35, 10, 4 ,1)$, $(40, 1, 8, 1)$,
$(35, 13, 0 ,2)$, $(40, 4, 4, 2)$,
$(40, 7, 0, 3)$,
$(45, 1, 0, 4)$.

A: In Maple:
$f := \frac{1}{(1-tx)(1-tx^5)(1-tx^{10})(1-tx^{25})}:$
$T := taylor(f, x = 0, 151): $
$T150 := coeff(T, x, 150):$
$coeff(T150,t,50);$
Answer: 10

A: Suppose that you use $p$ pennies, $n$ nickels, $d$ dimes, and $q$ quarters; then $p,n,d$, and $q$ must satisfy the system
$$\left\{\begin{align*}
&p+n+d+q=50\\
&p+5n+10d+25q=150\;.
\end{align*}\right.\tag{1}$$
Thus, you want to count the solutions to $(1)$ in non-negative integers.
The problem is small enough that you can easily solve by hand mostly using brute force. First, subtracting the first equation in $(1)$ from the second gives us the condition $$4n+9d+24q=100\;,\tag{2}$$
from which it's clear that $q\le 4$.
Suppose that $q=4$; then $4n+9d=100-24\cdot4=4$, which clearly has only the solution $n=1,d=0$. At this point we've used four quarters, no dimes, and one nickel, for a total of $105$ cents from $5$ coins, and setting $p=45$ clearly gives the unique solution with $q=4$.
Now suppose that $q=3$, so that $(2)$ reduces to $4n+9d=28$. Clearly $d\le 3$. But both $4n$ and $28$ are divisible by $4$, while $9d$ is not for $0<d\le 3$, so we must have $d=0$ and $n=7$. We've now used $10$ coins that total $110$ cents, and it's clear that setting $p=40$ gives us the unique solution with $q=3$.
Now suppose that $q=2$, so that $(2)$ reduces to $4n+9d=52$. Then $d\le 5$, and we can argue as in the previous case that $9d$ must be a multiple of $4$, so either $d=0$ and $n=13$, or $d=4$ and $n=4$. In the first case we have $15$ coins that total $115$ cents, and we must set $p=35$; in the second we have $10$ coins that total $110$ cents, and we must set $p=40$. These are clearly the only solutions when $q=2$.
If $q=1$, $(2)$ reduces to $4n+9d=76$, so that $d\le 8$. As in the previous two cases we must have $4\mid d$, so $d$ must be $0,4$, or $8$. These lead to the following solutions: $q=1,d=0,n=19,p=30$; $q=1,d=4,n=10,p=35$; and $q=1,d=8,n=1,p=40$.
Finally, if $q=0$, $(2)$ becomes $4n+9d=100$, the feasible values of $d$ are again $0,4$, and $8$, and the resulting solutions are: $q=0,d=0,n=25,p=25$; $q=0,d=4,n=16,p=30$; and $q=0,d=8,n=7,p=35$.
Thus, there are precisely $10$ solutions, and we've not just counted them, but also found them.

A: I'm assuming that Douglas' GAP link is probably not easy to understand/implement so here's my explanation.
I'm not sure if there's a good way to solve these change-making problems by hand. The most common solution (that I know of) is algorithmic. Specifically, dynamic programming seems to be a "standard" solution. Since you have an extra constraint of precisely 50 coins you would need to do a bit extra for your DP. In particular, you'd first solve the general problem of the number of ways to form \$1.50 using those coins. Then you'd implement the DP so that you could produce the actual sets of coins that sum to \$1.50 (this is usually just a backtracking step after you finish filling in the memoization table). Finally you can filter those sets by size.

redpajama_set_name: RedPajamaStackExchange


text:
Q: Attach constructor function method as handler using jQuery So, I have this:
function foo(){

  var that = this;

  this.elements = [
    $bar = $('.bar'),
    $foo = $('.foo')
  ];

  this.example = function(){
    alert("a");
  }

  this.elements.$bar.on('click', that.example);
}

and it's not working, however if I change this line:
  this.elements.$bar.on('click', that.example);

for this one:
  this.elements.$bar.on('click', function(){ that.example() });

That is, wrapping the method into an anonymous function, it does work...
EDIT: It also works if the method is not within the constructor function..

A: I think there's nothing wrong with how you attach your method in your current code. Though I notice that you've called your DOM Element like this:
this.elements = [
    $bar = $('.bar'),
    $foo = $('.foo')
];

this.elements.$bar

Instead, try to assign them as an object:
this.elements = {
    $bar : $('.bar'),
    $foo : $('.foo')
 };

Then in your code:
this.elements.$bar.on('click', that.example);

Here's a sample jsfiddle for further details:
http://jsfiddle.net/b1bsc1rd/
Hope this helps for you


text:
import mock
from oslo.serialization import jsonutils
import yaml

from nailgun import objects
from nailgun.plugins import attr_plugin
from nailgun.test import base

def get_config(config):
    def _get_config(*args):
        return mock.mock_open(read_data=yaml.dump(config))()
    return _get_config

class BasePluginTest(base.BaseIntegrationTest):

    TASKS_CONFIG = [
        {'priority': 10,
         'role': ['controller'],
         'type': 'shell',
         'parameters': {'cmd': './lbaas_enable.sh', 'timeout': 42},
         'stage': 'post_deployment'},
        {'priority': 10,
         'role': '*',
         'type': 'shell',
         'parameters': {'cmd': 'echo all > /tmp/plugin.all', 'timeout': 42},
         'stage': 'pre_deployment'}]

    def setUp(self):
        super(BasePluginTest, self).setUp()
        self.sample_plugin = self.env.get_default_plugin_metadata()
        self.plugin_env_config = self.env.get_default_plugin_env_config()

    def create_plugin(self, sample=None, expect_errors=False):
        sample = sample or self.sample_plugin
        resp = self.app.post(
            base.reverse('PluginCollectionHandler'),
            jsonutils.dumps(sample),
            headers=self.default_headers,
            expect_errors=expect_errors
        )
        return resp

    def delete_plugin(self, plugin_id, expect_errors=False):
        resp = self.app.delete(
            base.reverse('PluginHandler', {'obj_id': plugin_id}),
            headers=self.default_headers,
            expect_errors=expect_errors
        )
        return resp

    def create_cluster(self, nodes=None):
        nodes = nodes if nodes else []
        with mock.patch('nailgun.plugins.attr_plugin.os') as os:
            with mock.patch(
                    'nailgun.plugins.attr_plugin.open',
                    create=True,
                    side_effect=get_config(self.plugin_env_config)):
                os.access.return_value = True
                os.path.exists.return_value = True
                self.env.create(
                    release_kwargs={'version': '2014.2-6.0',
                                    'operating_system': 'Ubuntu'},
                    nodes_kwargs=nodes)
        return self.env.clusters[0]

    def default_attributes(self, cluster):
        resp = self.app.get(
            base.reverse('ClusterAttributesDefaultsHandler',
                         {'cluster_id': cluster.id}),
            headers=self.default_headers)
        return resp

    def modify_plugin(self, cluster, plugin_name, enabled):
        editable_attrs = cluster.attributes.editable
        editable_attrs[plugin_name]['metadata']['enabled'] = enabled
        resp = self.app.put(
            base.reverse('ClusterAttributesHandler',
                         {'cluster_id': cluster.id}),
            jsonutils.dumps({'editable': editable_attrs}),
            headers=self.default_headers)
        return resp

    def enable_plugin(self, cluster, plugin_name):
        return self.modify_plugin(cluster, plugin_name, True)

    def disable_plugin(self, cluster, plugin_name):
        return self.modify_plugin(cluster, plugin_name, False)

    def get_pre_hooks(self, cluster):
        with mock.patch('nailgun.plugins.attr_plugin.glob') as glob:
            glob.glob.return_value = ['/some/path']
            with mock.patch('nailgun.plugins.attr_plugin.os') as os:
                with mock.patch(
                        'nailgun.plugins.attr_plugin.open',
                        create=True,
                        side_effect=get_config(self.TASKS_CONFIG)):
                    os.access.return_value = True
                    os.path.exists.return_value = True
                    resp = self.app.get(
                        base.reverse('DefaultPrePluginsHooksInfo',
                                     {'cluster_id': cluster.id}),
                        headers=self.default_headers)
                return resp

    def get_post_hooks(self, cluster):
        with mock.patch('nailgun.plugins.attr_plugin.os') as os:
            with mock.patch(
                    'nailgun.plugins.attr_plugin.open',
                    create=True,
                    side_effect=get_config(self.TASKS_CONFIG)):
                os.access.return_value = True
                os.path.exists.return_value = True
                resp = self.app.get(
                    base.reverse('DefaultPostPluginsHooksInfo',
                                 {'cluster_id': cluster.id}),
                    headers=self.default_headers)
                return resp

class TestPluginsApi(BasePluginTest):

    def test_plugin_created_on_post(self):
        resp = self.create_plugin()
        self.assertEqual(resp.status_code, 201)
        metadata = resp.json
        del metadata['id']
        self.assertEqual(metadata, self.sample_plugin)

    def test_env_create_and_load_env_config(self):
        self.create_plugin()
        cluster = self.create_cluster()
        self.assertIn(self.sample_plugin['name'], cluster.attributes.editable)

    def test_enable_disable_plugin(self):
        resp = self.create_plugin()
        plugin = objects.Plugin.get_by_uid(resp.json['id'])
        cluster = self.create_cluster()
        self.assertEqual(plugin.clusters, [])
        resp = self.enable_plugin(cluster, plugin.name)
        self.assertEqual(resp.status_code, 200)
        self.assertIn(cluster, plugin.clusters)
        resp = self.disable_plugin(cluster, plugin.name)
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(plugin.clusters, [])

    def test_delete_plugin(self):
        resp = self.create_plugin()
        del_resp = self.delete_plugin(resp.json['id'])
        self.assertEqual(del_resp.status_code, 204)

    def test_no_delete_of_used_plugin(self):
        resp = self.create_plugin()
        plugin = objects.Plugin.get_by_uid(resp.json['id'])
        cluster = self.create_cluster()
        enable_resp = self.enable_plugin(cluster, plugin.name)
        self.assertEqual(enable_resp.status_code, 200)
        del_resp = self.delete_plugin(resp.json['id'], expect_errors=True)
        self.assertEqual(del_resp.status_code, 400)

    def test_update_plugin(self):
        resp = self.create_plugin()
        data = resp.json
        data['package_version'] = '2.0.0'
        plugin_id = data.pop('id')
        resp = self.app.put(
            base.reverse('PluginHandler', {'obj_id': plugin_id}),
            jsonutils.dumps(data),
            headers=self.default_headers
        )
        self.assertEqual(resp.status_code, 200)
        updated_data = resp.json
        updated_plugin_id = updated_data.pop('id')
        self.assertEqual(plugin_id, updated_plugin_id)
        self.assertEqual(updated_data, data)

    def test_default_attributes_after_plugin_is_created(self):
        self.create_plugin()
        cluster = self.create_cluster()
        default_attributes = self.default_attributes(cluster)
        self.assertIn(self.sample_plugin['name'], default_attributes)

    def test_plugins_multiversioning(self):
        def create_with_version(version):
            self.create_plugin(sample=self.env.get_default_plugin_metadata(
                name='multiversion_plugin', version=version))

        for version in ['1.0.0', '2.0.0', '0.0.1']:
            create_with_version(version)

        cluster = self.create_cluster()
        # Create new plugin after environment is created
        create_with_version('5.0.0')

        self.enable_plugin(cluster, 'multiversion_plugin')
        self.assertEqual(len(cluster.plugins), 1)
        enabled_plugin = cluster.plugins[0]
        # Should be enabled the newest plugin,
        # at the moment of environment creation
        self.assertEqual(enabled_plugin.version, '2.0.0')

        self.disable_plugin(cluster, 'multiversion_plugin')
        self.assertEqual(len(cluster.plugins), 0)

class TestPrePostHooks(BasePluginTest):

    def setUp(self):
        super(TestPrePostHooks, self).setUp()
        resp = self.create_plugin()
        self.plugin = attr_plugin.wrap_plugin(
            objects.Plugin.get_by_uid(resp.json['id']))
        self.cluster = self.create_cluster([
            {'roles': ['controller'], 'pending_addition': True},
            {'roles': ['compute'], 'pending_addition': True}])
        self.enable_plugin(self.cluster, self.sample_plugin['name'])

    def test_generate_pre_hooks(self):
        tasks = self.get_pre_hooks(self.cluster).json
        plugins_tasks = [t for t in tasks if t.get('diagnostic_name')]
        upload_file = [t for t in plugins_tasks if t['type'] == 'upload_file']
        rsync = [t for t in plugins_tasks if t['type'] == 'sync']
        cmd_tasks = [t for t in plugins_tasks if t['type'] == 'shell']
        self.assertEqual(len(upload_file), 2)
        self.assertEqual(len(rsync), 1)
        self.assertEqual(len(cmd_tasks), 2)
        for t in plugins_tasks:
            #shoud uid be a string
            self.assertEqual(
                sorted(t['uids']), sorted([n.uid for n in self.cluster.nodes]))
            #diagnostic name is present only for plugin tasks
            self.assertEqual(t['diagnostic_name'], self.plugin.full_name)
        apt_update = [t for t in cmd_tasks
                      if u'apt-get update' in t['parameters']['cmd']]
        self.assertEqual(len(apt_update), 1)

    def test_generate_post_hooks(self):
        tasks = self.get_post_hooks(self.cluster).json
        self.assertEqual(len(tasks), 1)
        task = tasks[0]
        controller_id = [n.uid for n in self.cluster.nodes
                         if 'controller' in n.roles]
        self.assertEqual(controller_id, task['uids'])
        self.assertEqual(task['diagnostic_name'], self.plugin.full_name)

class TestPluginValidation(BasePluginTest):

    def test_valid(self):
        sample = {
            'name': 'test_name',
            'version': '0.1.1',
            'fuel_version': ['6.0'],
            'title': 'Test plugin',
            'package_version': '1.0.0',
            'releases': [
                {'os': 'Ubuntu',
                 'mode': ['ha', 'multinode'],
                 'version': '2014.2.1-5.1'}
            ],
        }
        resp = self.create_plugin(sample=sample)
        self.assertEqual(resp.status_code, 201)

    def test_releases_not_provided(self):
        sample = {
            'name': 'test_name',
            'version': '0.1.1',
            'fuel_version': ['6.0'],
            'title': 'Test plugin',
            'package_version': '1.0.0'
        }
        resp = self.create_plugin(sample=sample, expect_errors=True)
        self.assertEqual(resp.status_code, 400)

    def test_version_is_not_present_in_release_data(self):
        sample = {
            'name': 'test_name',
            'version': '0.1.1',
            'fuel_version': ['6.0'],
            'title': 'Test plugin',
            'package_version': '1.0.0',
            'releases': [
                {'os': 'Ubuntu', 'mode': ['ha', 'multinode']}
            ]
        }
        resp = self.create_plugin(sample=sample, expect_errors=True)
        self.assertEqual(resp.status_code, 400)

    def test_plugin_version_is_floating(self):
        sample = {
            'name': 'test_name',
            'title': 'Test plugin',
            'version': 1.1,
            'fuel_version': ['6.0'],
            'package_version': '1.0.0',
            'releases': [
                {'os': 'Ubuntu',
                 'mode': ['ha', 'multinode'],
                 'version': '2014.2.1-5.1'}
            ]
        }
        resp = self.create_plugin(sample=sample, expect_errors=True)
        self.assertEqual(resp.status_code, 400)

    def test_title_is_not_present(self):
        sample = {
            'name': 'test_name',
            'version': '1.1',
            'fuel_version': ['6.0'],
            'package_version': '1.0.0',
            'releases': [
                {'os': 'Ubuntu',
                 'mode': ['multinode'],
                 'version': '2014.2.1-5.1'}
            ]
        }
        resp = self.create_plugin(sample=sample, expect_errors=True)
        self.assertEqual(resp.status_code, 400)

redpajama_set_name: RedPajamaGithub