text:
Scarlet fever soars in UK after pandemic lull; invasive infections kill 8
Enlarge / A microscopic image of Streptococcus pyogenesa common type of group A streptococcus.
Scarlet fever is on the rise in the UK, with cases more than four times normal for this time of year. And a rare but serious invasive disease caused by the same bacteria that causes scarlet fever and strep throat – group A streptococci – is also on the rise, killing at least eight children in the UK, according to media reports.
The unusual increase is seen as another cycle of abnormal disease transmission reverberating in the wake of the COVID-19 pandemic. Like many other seasonal infections, scarlet fever cases in the UK all but flattened out at the end of the 2019-20 season and hit the bottom of the chart throughout the 2020-2021 season, according to data published by the UK Health Security Agency.
Now that most pandemic-related health restrictions have been lifted or at least relaxed, a slew of seasonal infections, especially those that hit children hardest, are back. Many returned with some ferocity, finding an even larger pool of susceptible victims than usual after a break. Many of these disease cycle abnormalities have been observed in seasonal viruses, namely enteroviruses, adenoviruses, influenza and RSV (respiratory syncytial virus (sin-SISH-uhl)), which are currently flooding hospitals and pediatric services in the United States.
"Many infections have become rarer during the restrictions of the recent pandemic and are now returning rapidly as the mix normalizes," said Adam Finn, professor of pediatrics at the University of Bristol, in a statement. "[Group A strep] is no exception, and we have seen an increasing number of cases in recent months. »
Infectious Connections
The transmission of group A streptococcal bacteria is associated with the transmission of viruses. Historically, group A streptococcal infections have been closely linked to the spread of chickenpox, although clinicians note that streptococcal infection can occur after other viral infections. It is unclear exactly what the link is between certain viral infections and group A streptococcus. The researchers hypothesized that a confluence of factors could explain the link, from the overlapping time in the cycle of disease, similar routes of transmission (eg, respiratory), and common age of victims.
It's also possible that some germs share common methods of suppressing the immune system to trigger an infection. Thus, infection by one germ could pave the way for another that follows a similar path. There is evidence of this with chicken pox and group A strep, which similarly alter the activity of some T cells. But some viral infections also suppress the immune system more generally. Perhaps the best example is measles, which suppresses the immune response for weeks or months after an infection, leading to what some experts call "immune amnesia." Before childhood vaccination campaigns, the spread of measles was closely associated with increases in cases of whooping cough (whooping cough), caused by the bacteria Whooping cough Bordetella.
The current increase in group A strep infections in the UK is not clearly linked to an increase in varicella cases. Chickenpox is not a notifiable disease in the UK, meaning official counts are not available. However, sentinel surveillance data suggests there has been no unusual increase.
The rise of Streptococcus A, however, coincides with viral respiratory infections.
"Usually we see a lot of [group A strep] cases in late spring or early summer, often after varicella infections," Elizabeth Whittaker, an expert in pediatric infectious diseases and immunology at Imperial College London, said in a statement. "The high numbers at this time of year are unusual and likely occurring as normal seasonality has not yet returned… We are seeing more pneumonia than usual, most likely as group A strep infections coincide with the peak of winter respiratory viruses that are typical at this time of year."
Group A strep infections usually cause mild infections such as strep throat, scarlet fever, and impetigo, a skin infection, which are effectively treated with antibiotics. In the UK, there were 851 cases of scarlet fever in week 46 of this year (ending November 19), while the average for previous years was 186 cases in week 46, reported the UKHSA. The tip is part of a larger climb; there have been 4,622 scarlet fever notifications in weeks 37-46 this year in England, compared to an average of 1,294 in the same period over the previous five seasons.
Severe cases
In rare cases, group A strep can enter the bloodstream, causing a serious, invasive disease called invasive group A strep (iGAS), which can be fatal in young children. So far this year, the UKHSA has recorded 2.3 cases per 100,000 children aged 1 to 4, compared to an average of 0.5 during pre-pandemic seasons (2017 to 2019) and 1.1 cases per 100,000 children aged 5-9 years compared to the pre-pandemic period. pandemic average of 0.3 at the same time of year.
Severe cases remain rare, but identifying strep A infections may be more difficult than normal this year as it circulates among respiratory viruses, potentially delaying treatment.
"Severe invasive strep A is rare, and parents need not worry but know when and how to seek medical attention," Whittaker said. "We normally expect fevers due to viral infections to settle within 4 or 5 days, so if they persist or are associated with lethargy, difficulty breathing, poor alcohol consumption or wet diapers / urine, families should contact NHS111 for advice," referring to a non-emergency medical service line in the UK.
"Prompt treatment with antibiotics can manage these infections, but it's important that they are recognized and treated quickly," said Nathalie MacDermott, an expert in pediatric infectious diseases at King's College London. "Prompt treatment of scarlet fever and strep throat also reduces the risk of a child developing invasive group A strep and reduces the risk of spreading the infection to other children at school or to members. of the family. "
In the US, scarlet fever is not a reportable disease – so there are no official numbers – but there is surveillance for iGAS cases. During a press briefing earlier this week, Barbara Mahon, an epidemiologist at the Centers for Disease Control and Prevention, said: "As far as I know, we have not heard of any notable increase [in iGAS cases]."
#Scarlet #fever #soars #pandemic #lull #invasive #infections #kill


BARCELONA (Reuters) - Picture an old telephone exchange with operators connecting calls manually, add vast computing power by putting it on the Amazon cloud, and you have Working Group Two — a new platform for hosting 'virtual' mobile networks.
Spun out of, and backed by, Norway's Telenor in collaboration with U.S. network gear giant Cisco Systems, the project amounts to a radical bet on reinventing the mobile operator model in order to save it.
Mobile operators are under pressure as people switch to free messaging apps including Facebook's WhatsApp and regulators crack down on revenue earners such as roaming fees.
Achieving economies of scale by merging to spread the heavy cost of network investments is difficult too, because in most markets there is just a handful of players and anti-trust regulators would block further consolidation.
"This really is us trying to disrupt ourselves," Telenor CEO Sigve Brekke told Reuters in Barcelona, where the Working Group Two (WG2) project was unveiled at the Mobile World Congress this week.
Telenor is stepping out of its comfort zone of hardware and networks, and into software development. Its goal: to beat Silicon Valley to the punch in creating a 'platform' capable of hosting multiple virtual mobile networks.
The platform model - on which social network Facebook and e-commerce giant Amazon are based - can be quickly ramped up, and once such a business achieves scale its ubiquity can soon drive competitors to the wall.
The move comes as Norway's second-largest company, active in 12 countries across Europe and Asia, plans to cut 6,000 jobs and streamline operations in order to stay competitive.
The idea emerged four years ago when the development team at Telenor figured out a way to send and receive mobile text messages from a computer, rather than a phone, on its Norwegian network.
But when they found it impossible to adapt the solution to Telenor's other networks, they realized they needed to solve a bigger problem, WG2's chief technology officer, Werner Eriksen, told Reuters.
They decided to tackle the issue of how applications 'talk' to the network and within six months had built a first version of the solution that went on to became WG2.
Telenor span out the project last September, bringing in a Cisco-backed investment fund. This week it announced that its own mobile virtual network operator (MVNO) in Sweden, Vimla, had become the first client of WG2.
Breaking with Telenor's hardware-centric legacy, the cloud-based approach has two big advantages, said WG2's Chief Executive Officer Erlend Prestgard.
First, the platform can be developed to run on top of multiple mobile virtual networks. Second, no up-front investment is needed to set up a new MVNO - an attraction for potential market entrants.
"It's 'pay as you grow'," Prestgard, the only member of WG2's dozen-strong team who isn't an engineer, told Reuters in a demonstration at the Cisco stand in Barcelona.
The platform's standardized protocols make it easy to deploy customer-facing apps. WG2 features, for example, a product called Cisco Spark that allows users to switch between making a mobile phone call and full-scale online collaboration.
But, he said, Telenor considered it vital to challenge its own business model before others do so.


"When Free Speech Collides with Policies," also appeared in the September/October 2016 issue of Cities & Villages magazine.
Is a government employer permitted to discipline an employee for behavior it believes an employee has engaged in? What if that employer is mistaken about said behavior? And what happens when the behavior is potentially constitutionally protected political activity? Unfortunately, these are scenarios that occur more often than many people might believe.
A recent United States Supreme Court case—Heffernan v. City of Paterson, New Jersey—sheds some light on how the courts view these issues.
In 2005, Heffernan was a detective reporting to the Police Chief in the Paterson Police Department. The Chief and Heffernan's direct supervisor were appointed to their positions by the incumbent Mayor who was facing a challenge for his reelection from Lawrence Spagnola. Although Spagnola and Heffernan were "good friends", Heffernan was not involved with the re-election campaign.
As a favor to his bedridden mother, Heffernan went to a distribution point to pick up a larger Spagnola sign to replace a smaller one stolen from her yard. While there, Heffernan spoke with Spagnola's campaign manager and staff. Other members of the Paterson police force saw Heffernan with the sign in hand and observed him talking with the campaign staff and, of course, the word spread quickly throughout the department.
Heffernan was demoted from detective to patrol officer the next day and assigned a "walking post," clearly as punishment for what appeared to be "overt involvement" in Spagnola's campaign. Since Heffernan was not involved in the campaign, but rather was picking up the sign for his mother, his supervisors made a factual mistake.
Heffernan sued the City in federal court claiming that his demotion was a violation of his First Amendment right to free speech and was in response to mistaken conduct. This raises multiple legal issues.
Generally, an employee cannot be subject to adverse employment action for supporting a particular political candidate. However, both the U.S. District Court and the Third Circuit Court of Appeals found that Heffernan was not deprived of his First Amendment right to free speech because he had not claimed to have engaged in any speech that could be protected and such action must be based on an "actual, rather than perceived exercise of constitutional rights." Heffernan appealed the decision to the United States Supreme Court.
In reversing the Third Circuit Court of Appeals and remanding the case, the Supreme Court focused on the City's reason for demoting Heffernan - the belief that he engaged "in political activity that the First Amendment protects." The Court looked at the employer's reason for the demotion, not the fact that the employer was wrong about the type of activity being engaged in by the employee. The employee's unassailable assertion that he was not involved in the campaign and not actually exercising speech did not matter. Of importance to the Court was the fact that the employer thought the employee was engaged in protected political activity stating "the government's reason for demoting Heffernan is what counts here." The Court found that the demotion did deprive Heffernan of a right "secured by the Constitution."
Justice Breyer, writing for the majority, noted that "[T]he discharge of one tells the others that they engage in protected activity at their peril." The Court found that, if an employer thinks the employee has engaged in protected activity, whether or not the employer is correct or mistaken, can cause "the same kind, and degree, of constitutional harm."
Since there was some evidence that the adverse employment action against Heffernan was based upon a "different and neutral policy prohibiting police officers from overt involvement in any political campaign," the case was sent back to the lower court to decide the constitutionality of that policy and the employer's actions.
As this case demonstrates, government employers should exercise caution in taking action against employees where First Amendment issues may be involved. Consultation with legal counsel prior to taking action where an employee's First Amendment rights may be involved could avoid costly litigation down the road.
Sara Fagnilli can be reached at 216-928-2958 or e-mail sfagnilli@walterhav.com.


text:
import { Routes } from '@angular/router';
import { ItemListComponent } from './list/item.list.component';
import { ItemDetailsComponent } from './details/item.details.component';
import { ItemEditComponent } from './edit/item.edit.component';

import { DataResolver } from './app.resolver';

export const ROUTES: Routes = [
  { path: 'item', component: ItemListComponent},
  { path: 'item/create', component: ItemEditComponent},
  { path: 'item/:oid', component: ItemDetailsComponent},
  { path: 'item/:oid/edit', component: ItemEditComponent}
];

redpajama_set_name: RedPajamaGithub


text:
For the first six weeks of her life, Chantal Jauvin had an identical twin. From the time her sister died, her mother told her, "You have the strength of two." This has been a driving force throughout Chantal's life.
At the age of 18, her enthusiasm for words won her the Governor General's Award for top French debater in Canada.
By the time she entered law school, her grandmother had instilled in her: "Life is what you make of it." Chantal took a year's sabbatical from her legal studies to work in Japan. The experience grabbed her by the lapels and would not let go. The world became her personal laboratory―a place to discover how people live, love, and grow.
Chantal combined her passion for experiencing other cultures with her pursuit of an international career. She has lived in Mexico, Cambodia, Russia, the U.S., and Austria, taking shorter assignments in Vietnam and pursuing her MBA studies in the UK. She negotiated in Paris, Buenos Aires, and Sao Paulo often enough to almost call these cities home. She has addressed the Central Banks of Spain and South Africa, worked with companies from Ghana to Uzbekistan, and mentored attorneys from Dubai to Mumbai.
Adventure accompanied her global journeys―diving in the Maldives, cycling in Patagonia, skydiving in New Zealand, and riding her motorcycle in the Colorado Rockies. In recent years, she has retreated to Thailand to recharge.
Chantal believes that creativity is the ability to connect dots in a new way. Igniting her lifelong passion for language and other cultures, Chantal has turned her attention to writing in her quest to understand how our souls are touched by the blended world in which we live.

redpajama_set_name: RedPajamaCommonCrawl


Students learn in different ways, and webquests are a great way to let students follow their interests or play to their strengths within an assigned theme. Small group projects allow students to do the portion of the task that address their "intelligences" (see Howard Gardner's Multiple Intelligences. Individual projects make it easier for the teacher to determine who did the actual work, however.
The most effective webquests have a "real world" task that students try to accomplish: a presentation to the board of directors of the Art Museum, a design for a war memorial, etc. These tasks require the students to take the new knowledge they have gained and synthesize it into a "product" of some kind. The exact product will depend on your time available, skills you are trying to teach, and the age level of the students.
Written projects, such as reports, booklets, scripts, letters, editorials, blogs, wikis, concept maps, PowerPoints or an online slideshow maker, and many more!
Multimedia presentations (see a complete list of multimedia ideas here). Find tools to create timelines, slideshows, animations, and much more. Some of our personal favorites include: My Fake Wall, where you can create a fake Facebook Wall for sharing information about a person or place. Use the site Smore to create multimedia fliers. Present.Me allows you to add voice, video, and even record your presentation to share with students, friends, and/or family.
Visual/artistic displays, traditional posters, online posters, and more. Students can create a talking avatar using Voki. Use a simple animation tool to share your presentation. Another option... create an online drawing.
Performances or role-playing are great too! Have students create a Voicethread. This allows students to narrate a photo/image. Students can create a short skit or even news broadcast and video the show. Share the videos on a site such as TeacherTube.
Mathematical spreadsheets or charts are great for your logical/mathematical students. Have students use a tool such as Edit Grid to create online spreadsheets. Other great tools to check out include Open Heat Map, Instacalc, and of course Google Docs, which includes a variety of presentation methods.
For tips on using the interactive tools listed above, check out the General Tips for Using Edge Tools.
If you provide a clear rubric of the expectations for the different options, your students can use their imaginations to meet expectations their own way.


text:
Can natural language processing predict downstream radiology utilization?
March 07, 2019 | Matt O'Connor | Imaging Informatics
Natural language processing (NLP) models can help radiologists anticipate required resources, reported authors of a March 2 study published in the Journal of the American College of Radiology. Such models can be used to improve decision making and reduce costs.
Patients under surveillance for hepatocellular carcinoma (HCC) consume regular and consistent imaging resources, and when cancer is detected, their radiology needs surge, wrote A.D. Brown, MD, MBA, of the department of medical imaging at Toronto General Hospital in Toronto, Ontario, Canada, and colleagues.
To that end, the researchers looked at data from more than 2,500 free-text radiology reports of patients undergoing HCC surveillance to determine if an NLP approach could extract clinical data and predict downstream utilization of resources. They combined two open-source NLP models to analyze free text—bag-of-words and term frequency-inverse document frequency (TF-IDF) models—with three machine learning models—logistic regression (LR), support vector machine (SVM) and random forest.
Brown et al. found TF-IDF feature extraction approach slightly edged out the bag-of-words models. A combined TF-IDF, SVM model beat all others, notching a 92 percent accuracy, 83 percent sensitivity, 96 percent specificity and AUC of 0.971. The next closest model, TF-IDF plus LR, achieved a 91 percent accuracy, 79 percent sensitivity, 96 percent specificity and AUC of 0.969.
"These findings suggest that an algorithmic approach to text analysis could be used as a tool to help radiology administrators better predict changes in demand and proactively institute capacity management strategies to address fluctuations in demand," Brown et al. wrote.
The results align with most NLP studies which have found TF-IDF to be superior to many tested methods.
In terms of false-positives, the TF-IDF just edged out the other models. Many of these false-positives were caused by extrahepatic findings, which were a source of confusion, the researchers wrote. Importantly, they added, the surveillance exams were done to identify signs of liver disease, however many other organs were also in the field of view, which may have affected the false-positive rate.
"In the future, these (NLP) techniques could be used to create systems that analyze finalized radiology reports in real time and provide administrators with updated predictions of radiology resource demand," the authors concluded. "To provide robust forecasts of radiology demand, the NLP approaches used here could be combined with time series forecasting methods to provide forecasts for radiology demand across many different clinical indications and imaging modalities."


text:
YOUR FREE Family Tree
Add YOUR Family To This Page
History of Norway
Journey back in time to Norway
Visit Norway. Discover its history. Learn about the people who lived there through stories, old newspaper articles, pictures, postcards and genealogy.
A traditional Christmas dinner for Norwegians often starts with porridge with a lucky almond hidden in it for some lucky person. Whoever finds the almond wins a prize.
Another Christmastime superstition involves a little gnome or elf called Nisse, who guards all the farm animals. If Norwegian children do not place a bowl of special porridge for Nisse, he will play tricks them.
travelsignposts.com
There is MUCH more to discover about Norway. Read on!
During the 1300s Denmark gained more and more influence over Norway and, in 1397, Norway was absorbed into a formal union with Denmark and Sweden.
The union was ruled by a common king. Sweden gradually seceded from the union, but Denmark and Norway remained united until 1814.
http://www.samfunnskunnskap.no
1800 - Population of Norway - 883,000
1814 - May 17 - Norway drafts its own constitution
1895 - Norway
Norway, nor wā, a country forming the N.W., extremity of Europe, and occupying the N.W. and W. part of the Scandinavian peninsula. It extends from...Read MORE...
1900 - Population of Norway - 2,218,000
(IL) - Chicago Tribune, Chicago, Illinois
1927 - The aerosol can is invented (Erik Rotheim, Norway)
"On November 23, 1927, Norwegian engineer Erik Rotheim (also spelled Eric Rotheim) patented the first aerosol can and valve that could hold and...Read MORE...
The Land of the Midnight Sun
Pan American World Airways System
Old Photos, Pictures, Advertisements and Postcards from Norway
Unofficial Guide to Ancestry.com: How to Find Your Family History on the #1 Genealogy Website
History and News of Norway
Add History/News
Norway, nor wā, a country forming the N.W., extremity of Europe, and occupying the N.W. and W. part of the Scandinavian peninsula. It extends from... Read MORE...
"On November 23, 1927, Norwegian engineer Erik Rotheim (also spelled Eric Rotheim) patented the first aerosol can and valve that could hold and... Read MORE...
Norway Genealogy
Not the place you are looking for? Try again!
Search for Your Family by Place
To search for a place, specify place name below. Choose name from the list. Then SEARCH.
*Place Name:
Updated: 6/25/2020 12:39:02 PM
Are you from Norway? Do you have ancestors from there? Tell us YOUR story!
If you'd like to be contacted by others who have ancestors from Norway, leave a message here!
The comments you read here belong only to the person who posted them. We reserve the right to remove off-topic and inappropriate comments.
Search Daily News Sign In/Out My Account My Family Tree My Bookmarks Get Started
This FREE genealogy website is a collection of contributions from many generous "family" members who want to share their family with others. We are not necessarily related to or researching a person just because their name is on this site. While we do our best to be accurate, we sometimes make mistakes. Please use this information as a guide. Verify the information with your own research. If you find any errors, please email us and report them. Thanks!
Terms of Use / Accuracy and Content Disclaimer
© 1999-2021 Cow Country Systems. All rights reserved.


Mental health difficulties — including conditions like post-traumatic stress disorder (PTSD) — are not unknown within the volunteer/humanitarian sector. But what must it be like for the refugees?
Mental health issues appear endemic in Calais. A whole 21.2% of those with health issues self-declared that these issues were mental health issues rather than physical ailments. This is a markedly higher figure than in April 2017 (16.4%).
Thankfully for those volunteering in Calais, we have the support of wonderful groups like the Refugee Resilience Collective (RRC) and the Solidarity and Support Network (SSuN) (please check them out and know of their existence — they are wonderful). And when in the UK, for example, it's possible to receive mental health support from the NHS. But mental health support for refugees can be near non-existent.
Occasionally, when the many variables happen to coincide, RRC, working with our partners the Refugee Youth Service (RYS), might be able to meet with one or two of the refugee minors in Calais, or see a few people in Dunkirk with the Refugee Women's Centre (RWC). RYS and RWC themselves provide activities to help build a sense of community and solidarity, and fun. But all involved are very aware that the help we provide is minimal. Help Refugees and Utopia 56 have dedicated "hospital run" teams who try to help refugees access medical provision available at the local hospital. Médecins du Monde also refer people to the local hospital. But the hospital provision is minimal, despite the support of some compassionate doctors within the system. And, of course, many of the underling contributors to poor mental health within the refugee community continue: police violence, no shelter, diminishing hope, boredom, etc., etc., etc.
Not all wounds are visible and the poor mental health of the refugees is another reason the madness of the situation here in Calais — and in Greece and Italy and Libya, etc., etc., etc. — needs to stop. The governments of Europe are complicit in compounding the mental injuries sustained by refugees who are in their care or who seek freedom but are being obstructed on their way.
We need tents. We need shoes. We need sleeping bags. We need boxer shorts. We need funds. We need so many things. But above all we need change. Please write to your politicians (counsellors, MPs, MEPs, etc.), phone them, tweet them, and call on them to use their influence to help care for the people who are caught here in Calais.


text:
Q: Adjusting Index for Better Performance I've just started my journey as a dba and I figured out using a script that my database indexes are a mess. Here they are:
And here is what the script tells me about them:

Can you give me insights about how to fix them and what I should consider (logically speaking) when doing it? I have no idea where to start.

A: Agreed with everyone's comments so far, most importantly with index tuning is understanding your queries use cases so you know what indexes are being used, what indexes are missing and could be helpful, and what indexes are wasteful.
It looks like you're using scripts from the First Responder Kit, such as sp_BlitzIndex which is really helpful for identifying the aforementioned types of index tuning. For example, it should give you metrics on how many Reads vs Writes each index incurs. Indexes with 0 reads are generally useless. This means no query is actually using that index. Indexes with a very small amount of reads with a high number of writes might not be worth keeping (but should be tested first before removing in Production). In some cases, that index might still be very important for a query that isn't ran frequently.
It should be noted that these metrics should be analyzed keeping the uptime of your server in mind. If your server was just restarted yesterday, then the metrics are only going to be based off data that's been collected since yesterday (for the most part). Servers with at least 6 months or more uptime should have enough data to safely analyze.
Finally, I do see some freebies in the little information we do have from the screenshots you've provided - redundant indexes. It's a waste to have multiple indexes that cover the same fields from a table. One example of this that I see in your results is cod_ponto_hora_leit_vazao and cod_ponto_hora_leit_vazao_Includes. cod_ponto_hora_leit_vazao_Includes already covers all the same fields as cod_ponto_hora_leit_vazao plus some additional use cases with the included columns. That means cod_ponto_hora_leit_vazao is a redundant and unnecessary index that almost certainly can be dropped. And any other indexes that are defined on any sequential subset of the same fields in cod_ponto_hora_leit_vazao_Includes or any other index are also redundant and already covered, so they too very likely can be removed. For example an index on the fields (D, C, B, A) will cover all the same use cases as an index just on (D), or an index on (D, C), or an index on (D, C, B). So the only index needed in that case is (D, C, B, A).
My final advice, even on the recommended certainties above, is to ensure you test the changes thoroughly in a non-Production environment before deploying the changes to a Production environment.

redpajama_set_name: RedPajamaStackExchange


text:
Q: Rails 4 + Devise: After create user, create XYZ I have a User model that gets created through Devise, and after it's creation, I would like to automatically create a new Client (another model in my app).  The new Client's atrribute, :user_id, should be equal to the :id of the User that was just created.  I believe I need to use something like:
class Users::RegistrationsController < Devise::RegistrationsController
    after_create :create_client

    def create_client
        Client.create(:user_id, :id) # Not sure what should go here
    end
end

Is this the correct way to accomplish this?  Also, if associations are important Client belongs_to :user and User has_one :client

A: You can add an after_create callback in User model(user.rb), check here for more information on how to create has_one associations.
 class User < ActiveRecord::Base
   after_save :add_client

   def add_client
     self.create_client(client_attribute1: value, client_attribute2: value)
   end
 end


text:
Q: How many strings of length 8 The question - how many strings of length 8, from 4 letter alphabet, using each letter twice. There is to be exactly one pair of same letters next to each other (example of valid string: AABCDBCD).
I tried to check how this develops by drawing a tree, but it seems that this gets really unwieldy really fast. What counting technique can be used here to make it easier?

A: Outline: Use Inclusion/Exclusion. Count first the number of words with a double A. It is perhaps easy to see that there are $\frac{7!}{2!2!2!}$ such words. Similarly, there are $\frac{7!}{2!2!2!}$ with a double B, and so on. So our first estimate is that there are $4\cdot \frac{7!}{2!2!2!}$ words of the desired kind.
However, this double-counts the number of words with, for example, a double A and a double B. There are $\frac{6!}{2!2!}$ such words.  There are $\binom{4}{2}$ ways to choose the pair that we will have two doubles of. So our next estimate of the required number of words is $4\cdot \frac{7!}{2!2!2!}-\binom{4}{2}\cdot \frac{6!}{2!2!}$.
However, we have subtracted too much, for we have subtracted one too many times the $\binom{4}{3}\cdot \frac{5!}{2!}$ words of that have three doubles.
After we have added back $\binom{4}{3}\cdot \frac{5!}{2!}$, there is only a little adjustment left to make.

A: If there were no restrictions, we could arrange the letters AABBCCDD in
$$\binom{8}{2}\binom{6}{2}\binom{4}{2}\binom{2}{2} = \frac{8!}{2!6!} \cdot \frac{6!}{4!2!} \cdot \frac{4!}{2!2!} \cdot \frac{2!}{0!2!} = \frac{8!}{2!2!2!2!}$$
distinguishable ways since we can place the two A's in two of the eight available positions, the two B's in two of the six remaining positions, the two C's in two of the four remaining positions, and the two D's in the last two open positions.
We choose which of the four letters is doubled, placing the pair in a box so that we have seven objects - the box containing the double letter, and the other six letters.  We choose which of the seven positions will be occupied by that box. The remaining letters can be arranged in $\binom{6}{2}\binom{4}{2}\binom{2}{2}$ ways.  Hence, the number of ways of arranging the letters AABBCCDD so that two adjacent letters are the same is
$$\binom{4}{1}\binom{7}{1}\binom{6}{2}\binom{4}{2}\binom{2}{2}$$
However, we have counted arrangements in which more than one pair of identical letters are adjacent.  We must exclude these from the total.
Suppose two letters are doubled.  We choose two of the four letters to be doubled, placing each double letter in a distinct box.  This gives us six objects, the two boxes and four remaining letters.  We choose which two of the six positions will be occupied by the boxes, arrange them in these positions in $2!$ ways, and then arrange the remaining four letters in $\binom{4}{2}\binom{2}{2}$ ways.  This gives
$$\binom{4}{2}\binom{6}{2} \cdot 2! \cdot \binom{4}{2}\binom{2}{2}$$
arrangements with two double letters.
Suppose three letters are doubled.  We choose three of the four letters to be doubled, placing each double letter in a distinct box.  This gives us five objects, the three boxes and the two single letters.  We choose three of the five positions for the letters, arrange the boxes in these positions in $3!$ ways, then arrange the remaining two letters in $\binom{2}{2}$ ways.  This gives
$$\binom{4}{3}\binom{5}{3} \cdot 3! \cdot \binom{2}{2}$$
arrangements with three double letters.
Suppose all four letters are doubled.  We place each double letter in a distinct box.  The four boxes can be arranged in $4!$ orders.
By the Inclusion-Exclusion Principle, the number of arrangements of AABBCCDD in which there is exactly one pair of adjacent letters that are the same is
$$\binom{4}{1}\binom{7}{1}\binom{6}{2}\binom{4}{2}\binom{2}{2} - \binom{4}{2}\binom{6}{2} \cdot 2! \cdot \binom{4}{2}\binom{2}{2} + \binom{4}{3}\binom{5}{3} \cdot 3! \cdot \binom{2}{2} - 4!$$

A: For starters, let we just consider the cases in which we have a substring $AA$ (the final outcome will be four times this number of strings). By removing such a substring and glueing back together the remaining characters, we have a $6$-character string over the alphabet $\Sigma=\{B,C,D\}$ in which every symbol appears exactly twice and there are no equal adjacent symbols (sub-case $I$) or just one couple of equal adjacent symbols (sub-case $II$). We may deal with the sub-case $II$ just like with the original problem, but respect to a smaller alphabet: we may assume that $BB$ occurs (memo: multiply by three at the end) and by removing $BB$ we may get $CDCD,DCDC$ ($II-I$) or $CDDC,DCCD$ ($II-II$). By considering in which positions between the letters we may re-insert $BB$ back, we have that the sub-case $II$ is covered by $3\cdot(2\cdot 5+2)=36$ strings. The strings accounted by the sub-case $I$ are six times the strings in sub-case $I$ that start with $BC$. The last strings may be only $BCD$ followed by a permutation of $\{B,C,D\}$ whose first element is not $D$ ($4$ cases) or $BCBDCD$ ($1$ case). If follows that the sub-case $I$ accounts for $6\cdot(4+1)=30$ strings. If we are in sub-case $II$, we have just one way to re-insert $AA$ back into the string. If we are in sub-case $I$, we have seven ways. So the answer is given by:

$$ 4\cdot(30\cdot 7+36)=\color{red}{984}. $$


The Troll Patrol Podcast- Episode 3: Points Re-balancing… REALLY?!
Home » Podcasts » The Troll Patrol Podcast- Episode 3: Points Re-balancing… REALLY?!
In this episode, we discuss the dreaded concept of points re-balancing in the game! Gasp!
Also, please note, we have a contest going on!
And get your friends to like us by mentioning your name on their post!
Thank you again, to Muse on Minis for hosting us! We greatly appreciate it!


TCDD Tasimacilik announced rail freight tariff for transports using Baku-Tbilisi-Kars railway.
According to new tariff, the price of Turkish stretch will be 0.50 $/km for a 40'/45' container. For a 20' container, prices is 0.35 $/km.
ADY Express is responsible for the transports between Akhalkalaki and Baku. The rail tariff of this stretch is determined by this company.
Based on current tariffs, the price for transport of 40' container between Istanbul and Baku is over $ 1500.
Please get in contact with TCDD Tasimacilik and ADY Express for up-to-date tariff.


text:
Independent Curators International (ICI)
Paperback, 8.5 x 11 in. / 300 pgs / illustrated throughout.
Pub Date 11/22/2016
Catalog: FALL 2016 p. 112
Apichatpong Weerasethakul Sourcebook
Foreword by Alaina Claire Feldman, Kate Fowle. Text by Amara D. Angelica, Mo Costandi, Federico García Lorca, Elizabeth Armstrong Moore, Jenjira Pongpas, Maddie Stone, Apichatpong Weerasethakul, Robert Destatte, Jeannie Schiff, Robert Bly, Bob Halliday, Anusara Kartlun, Fabian Drahmoune, Narawan Pathomvat, Pimrapee Thungkasemvathana. Interviews by Gridthiya Gaweewong, Andrea Lissoni, Withit Chandawong.
Offering a fresh perspective on the work of internationally acclaimed filmmaker Apichatpong Weerasethakul (born 1970), the Apitchapong Weerasethakul Sourcebook moves between scientific documents and personal documentary, interviews and epistolary dialogue, the cinematic and the poetic. In its multimodal approach the Sourcebook reflects Weerasethakul's artistic practice in which he portrays the everyday alongside supernatural elements while suggesting a distortion between fact and folklore, history and storytelling. Weerasethakul's personal writings and interviews, much of which is translated here for the first time, draw out his deep commitment to stories often excluded in history in and out of Thailand: voices of the poor and the ill, marginalized beings and those silenced and censored for personal and political reasons. The Sourcebook includes materials on such topics as implanted memories in mice, caves in Laos left over from the Indochina wars, new methods for listening underwater and meditations on light and darkness, plus interviews between Weerasethakul and leading art historians as well as texts drawn from his personal library. The Sourcebook invites readers into Weerasethakul's intimate exploration of his influences--in his words, "like [a] stream of consciousness, suffocated by the data."
Featured image is reproduced from 'Apichatpong Weerasethakul Sourcebook.'
APICHATPONG WEERASETHAKUL MONOGRAPHS + ARTIST'S BOOKS
FORMAT: Pbk, 8.5 x 11 in. / 300 pgs / illustrated throughout.
PUBLISHER: Independent Curators International (ICI)
D.A.P. CATALOG: FALL 2016 Page 112
Published by Independent Curators International (ICI).


text:
package ucar.nc2.dt.point;

import ucar.nc2.*;
import ucar.nc2.dataset.NetcdfDataset;
import ucar.nc2.dataset.StructureDS;
import ucar.nc2.units.DateUnit;
import ucar.nc2.util.CancelTask;
import ucar.nc2.dt.*;
import ucar.unidata.geoloc.EarthLocation;
import ucar.unidata.geoloc.LatLonPointImpl;
import ucar.unidata.geoloc.LatLonRect;
import ucar.unidata.geoloc.LatLonPoint;
import ucar.ma2.StructureData;
import ucar.ma2.DataType;
import ucar.ma2.StructureMembers;
import ucar.ma2.StructureDataIterator;
import java.io.*;
import java.util.*;

/**
 * Helper class for using the netcdf-3 record dimension. Can be used for PointObs or StationObs.
 *
 * @author caron
 * @deprecated use ucar.nc2.ft.*
 */

public class RecordDatasetHelper {
  protected NetcdfDataset ncfile;
  protected String obsTimeVName, nomTimeVName;
  protected String stnIdVName, stnNameVName, stnDescVName;
  protected String latVName, lonVName, altVName;
  protected DataType stationIdType;

  protected Map<Object, ucar.unidata.geoloc.Station> stnHash;
  protected StructureDS recordVar;
  protected Dimension obsDim;

  protected LatLonRect boundingBox;
  protected double minDate, maxDate;
  protected DateUnit timeUnit;

  protected double altScaleFactor = 1.0;

  protected StringBuffer errs = null;
  protected boolean showErrors = true;

  /**
   * Constructor.
   *
   * @param ncfile the netccdf file
   * @param typedDataVariables list of data variables; all record variables will be added to this list, except . You
   *        can remove extra
   * @param obsTimeVName observation time variable name (required)
   * @param nomTimeVName nominal time variable name (may be null)
   * @throws IllegalArgumentException if ncfile has no unlimited dimension.
   */
  public RecordDatasetHelper(NetcdfDataset ncfile, String obsTimeVName, String nomTimeVName, List typedDataVariables) {
    this(ncfile, obsTimeVName, nomTimeVName, typedDataVariables, null, null);
  }

  public RecordDatasetHelper(NetcdfDataset ncfile, String obsTimeVName, String nomTimeVName, List typedDataVariables,
      StringBuffer errBuffer) {
    this(ncfile, obsTimeVName, nomTimeVName, typedDataVariables, null, errBuffer);
  }

  /**
   * Constructor.
   *
   * @param ncfile the netccdf file
   * @param typedDataVariables list of data variables; all record variables will be added to this list, except . You
   *        can remove extra
   * @param obsTimeVName observation time variable name (required)
   * @param nomTimeVName nominal time variable name (may be null)
   * @throws IllegalArgumentException if ncfile has no unlimited dimension and recDimName is null.
   */
  public RecordDatasetHelper(NetcdfDataset ncfile, String obsTimeVName, String nomTimeVName, List typedDataVariables,
      String recDimName, StringBuffer errBuffer) {
    this.ncfile = ncfile;
    this.obsTimeVName = obsTimeVName;
    this.nomTimeVName = nomTimeVName;
    this.errs = errBuffer;

    // check if we already have a structure vs if we have to add it.

    if (this.ncfile.hasUnlimitedDimension()) {
      this.ncfile.sendIospMessage(NetcdfFile.IOSP_MESSAGE_ADD_RECORD_STRUCTURE);
      this.recordVar = (StructureDS) this.ncfile.getRootGroup().findVariableLocal("record");
      this.obsDim = ncfile.getUnlimitedDimension();

    } else {
      if (recDimName == null)
        throw new IllegalArgumentException("File <" + this.ncfile.getLocation()
            + "> has no unlimited dimension, specify psuedo record dimension with observationDimension global attribute.");
      this.obsDim = this.ncfile.getRootGroup().findDimension(recDimName);
      this.recordVar = new StructureDS(null, new StructurePseudo(this.ncfile, null, "record", obsDim)); // true
    }

    // create member variables
    List<Variable> recordMembers = ncfile.getVariables();
    for (Variable v : recordMembers) {
      if (v == recordVar)
        continue;
      if (v.isScalar())
        continue;
      if (v.getDimension(0) == this.obsDim)
        typedDataVariables.add(v);
    }

    // need the time units
    Variable timeVar = ncfile.findVariable(obsTimeVName);
    String timeUnitString = ncfile.findAttValueIgnoreCase(timeVar, "units", "seconds since 1970-01-01");
    try {
      timeUnit = new DateUnit(timeUnitString);
    } catch (Exception e) {
      if (null != errs)
        errs.append("Error on string = " + timeUnitString + " == " + e.getMessage() + "\n");
      try {
        timeUnit = new DateUnit("seconds since 1970-01-01");
      } catch (Exception e1) {
        // cant happen
      }
    }
  }

  /**
   * Set extra information used by station obs datasets.
   *
   * @param stnIdVName the obs variable that is used to find the station in the stnHash; may be type int or a String
   *        (char).
   * @param stnDescVName optional station var containing station description
   */
  public void setStationInfo(String stnIdVName, String stnDescVName) {
    this.stnIdVName = stnIdVName;
    this.stnDescVName = stnDescVName;

    Variable stationVar = ncfile.findVariable(stnIdVName);
    stationIdType = stationVar.getDataType();
  }

  public void setLocationInfo(String latVName, String lonVName, String altVName) {
    this.latVName = latVName;
    this.lonVName = lonVName;
    this.altVName = altVName;

    // check for meter conversion
    if (altVName != null) {
      Variable v = ncfile.findVariable(altVName);
      String units = ncfile.findAttValueIgnoreCase(v, "units", null);
      if (units != null)
        try {
          altScaleFactor = PointObsDatasetImpl.getMetersConversionFactor(units);
        } catch (Exception e) {
          if (errs != null)
            errs.append(e.getMessage());
        }
    }
  }

  public Structure getRecordVar() {
    return (this.recordVar);
  }

  public int getRecordCount() {
    Dimension unlimitedDim = ncfile.getUnlimitedDimension();
    return unlimitedDim.getLength();
  }

  public void setTimeUnit(DateUnit timeUnit) {
    this.timeUnit = timeUnit;
  }

  public DateUnit getTimeUnit() {
    return (this.timeUnit);
  }

  /**
   * This reads through all the records in the dataset, and constructs a list of
   * RecordPointObs or RecordStationObs. It does not cache the data.
   * <p>
   * If stnIdVName is not null, its a StationDataset, then construct a Station HashMap of StationImpl
   * objects. Add the RecordStationObs into the list of obs for that station.
   *
   * @param cancel allow user to cancel
   * @return List of RecordPointObs or RecordStationObs
   * @throws IOException
   */
  public ArrayList readAllCreateObs(CancelTask cancel) throws IOException {

    // see if its a station or point dataset
    boolean hasStations = stnIdVName != null;
    if (hasStations)
      stnHash = new HashMap<Object, ucar.unidata.geoloc.Station>();

    // get min and max date and lat,lon
    double minDate = Double.MAX_VALUE;
    double maxDate = -Double.MAX_VALUE;

    double minLat = Double.MAX_VALUE;
    double maxLat = -Double.MAX_VALUE;

    double minLon = Double.MAX_VALUE;
    double maxLon = -Double.MAX_VALUE;

    // read all the data, create a RecordObs
    ArrayList records = new ArrayList();
    int recno = 0;
    try (StructureDataIterator ii = recordVar.getStructureIterator()) {
      while (ii.hasNext()) {
        StructureData sdata = ii.next();
        StructureMembers members = sdata.getStructureMembers();

        Object stationId = null;
        if (hasStations) {
          if (stationIdType == DataType.INT) {
            int stationNum = sdata.getScalarInt(stnIdVName);
            stationId = new Integer(stationNum);
          } else
            stationId = sdata.getScalarString(stnIdVName).trim();
        }

        String desc = (stnDescVName == null) ? null : sdata.getScalarString(stnDescVName);
        double lat = sdata.convertScalarDouble(latVName);
        double lon = sdata.convertScalarDouble(lonVName);
        double alt = (altVName == null) ? Double.NaN : altScaleFactor * sdata.convertScalarDouble(altVName);
        double obsTime = sdata.convertScalarDouble(members.findMember(obsTimeVName));
        double nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble(members.findMember(nomTimeVName));

        // double obsTime = sdata.convertScalarDouble( members.findMember( obsTimeVName) );
        // double nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble( members.findMember(
        // nomTimeVName));

        if (hasStations) {
          StationImpl stn = (StationImpl) stnHash.get(stationId);
          if (stn == null) {
            stn = new StationImpl(stationId.toString(), desc, lat, lon, alt);
            stnHash.put(stationId, stn);
          }
          RecordStationObs stnObs = new RecordStationObs(stn, obsTime, nomTime, recno);
          records.add(stnObs);
          stn.addObs(stnObs);

        } else {
          records.add(new RecordPointObs(EarthLocation.create(lat, lon, alt), obsTime, nomTime, recno));
        }

        // track date range and bounding box
        minDate = Math.min(minDate, obsTime);
        maxDate = Math.max(maxDate, obsTime);

        minLat = Math.min(minLat, lat);
        maxLat = Math.max(maxLat, lat);
        minLon = Math.min(minLon, lon);
        maxLon = Math.max(maxLon, lon);

        recno++;
        if ((cancel != null) && cancel.isCancel())
          return null;
      }
    }

    boundingBox = new LatLonRect(new LatLonPointImpl(minLat, minLon), new LatLonPointImpl(maxLat, maxLon));

    return records;
  }

  // make structure variable names to shortNames so StructureData sdata can
  // access it members

  public void setShortNames(String latVName, String lonVName, String altVName, String obsTimeVName,
      String nomTimeVName) {
    this.latVName = latVName;
    this.lonVName = lonVName;
    this.altVName = altVName;
    this.obsTimeVName = obsTimeVName;
    this.nomTimeVName = nomTimeVName;
  }

  private boolean debugBB = false;

  public List getData(ArrayList records, LatLonRect boundingBox, CancelTask cancel) throws IOException {
    if (debugBB)
      System.out.println("Want bb= " + boundingBox);
    ArrayList result = new ArrayList();
    for (int i = 0; i < records.size(); i++) {
      RecordDatasetHelper.RecordPointObs r = (RecordDatasetHelper.RecordPointObs) records.get(i);
      if (boundingBox.contains(r.getLatLon())) {
        if (debugBB)
          System.out.println(" ok latlon= " + r.getLatLon());
        result.add(r);
      }
      if ((cancel != null) && cancel.isCancel())
        return null;
    }
    return result;
  }

  // return List<PointObsDatatype>

  public List getData(ArrayList records, LatLonRect boundingBox, double startTime, double endTime, CancelTask cancel)
      throws IOException {
    if (debugBB)
      System.out.println("Want bb= " + boundingBox);
    ArrayList result = new ArrayList();
    for (int i = 0; i < records.size(); i++) {
      RecordDatasetHelper.RecordPointObs r = (RecordDatasetHelper.RecordPointObs) records.get(i);
      if (boundingBox.contains(r.getLatLon())) {
        if (debugBB)
          System.out.println(" ok latlon= " + r.getLatLon());
        double timeValue = r.getObservationTime();
        if ((timeValue >= startTime) && (timeValue <= endTime))
          result.add(r);
      }
      if ((cancel != null) && cancel.isCancel())
        return null;
    }
    return result;
  }

  //////////////////////////////////////////////////////////////////////////////////////

  public class RecordPointObs extends PointObsDatatypeImpl {
    protected int recno;
    protected LatLonPointImpl llpt = null;
    protected StructureData sdata;

    protected RecordPointObs() {}

    /**
     * Constructor for the case where you keep track of the location, time of each record, but not the data.
     */
    protected RecordPointObs(ucar.unidata.geoloc.EarthLocation location, double obsTime, double nomTime, int recno) {
      super(location, obsTime, nomTime);
      this.recno = recno;
    }

    /**
     * Constructor for when you already have the StructureData and want to wrap it in a StationObsDatatype
     *
     * @param recno record number LOOK why do we need ??
     * @param sdata the structure data
     */
    public RecordPointObs(int recno, StructureData sdata) {
      this.recno = recno;
      this.sdata = sdata;

      StructureMembers members = sdata.getStructureMembers();
      obsTime = sdata.convertScalarDouble(members.findMember(obsTimeVName));
      nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble(members.findMember(nomTimeVName));

      // obsTime = sdata.convertScalarDouble( members.findMember(obsTimeVName) );
      // nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble( members.findMember(nomTimeVName));

      double lat = sdata.convertScalarDouble(latVName);
      double lon = sdata.convertScalarDouble(lonVName);
      double alt = (altVName == null) ? Double.NaN : altScaleFactor * sdata.convertScalarDouble(altVName);
      location = EarthLocation.create(lat, lon, alt);
    }

    public LatLonPoint getLatLon() {
      if (llpt == null)
        llpt = new LatLonPointImpl(location.getLatitude(), location.getLongitude());
      return llpt;
    }

    public Date getNominalTimeAsDate() {
      return timeUnit.makeDate(getNominalTime());
    }

    public Date getObservationTimeAsDate() {
      return timeUnit.makeDate(getObservationTime());
    }

    public StructureData getData() throws IOException {
      if (null != sdata)
        return sdata;

      try {
        return recordVar.readStructure(recno);
      } catch (ucar.ma2.InvalidRangeException e) {
        e.printStackTrace();
        throw new IOException(e.getMessage());
      }
    }
  }

  //////////////////////////////////////////////////////////////////////////////////////

  public class RecordStationObs extends RecordPointObs implements StationObsDatatype {
    private ucar.unidata.geoloc.Station station;

    /**
     * Constructor for the case where you keep track of the station, time of each record, but the data reading is
     * deferred.
     *
     * @param station data is for this Station
     * @param obsTime observation time
     * @param nomTime nominal time (may be NaN)
     * @param recno data is at this record number
     */
    protected RecordStationObs(ucar.unidata.geoloc.Station station, double obsTime, double nomTime, int recno) {
      super(station, obsTime, nomTime, recno);
      this.station = station;
    }

    /**
     * Constructor for when you already have the StructureData and want to wrap it in a StationObsDatatype
     *
     * @param recno record number LOOK why do we need ??
     * @param sdata the structure data
     */
    protected RecordStationObs(int recno, StructureData sdata) {
      this.recno = recno;
      this.sdata = sdata;

      StructureMembers members = sdata.getStructureMembers();

      obsTime = sdata.convertScalarDouble(members.findMember(obsTimeVName));
      nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble(members.findMember(nomTimeVName));

      // obsTime = sdata.convertScalarDouble( members.findMember(obsTimeVName) );
      // nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble( members.findMember(nomTimeVName));

      Object stationId;
      if (stationIdType == DataType.INT) {
        stationId = sdata.getScalarInt(stnIdVName);
      } else
        stationId = sdata.getScalarString(stnIdVName).trim();

      station = (ucar.unidata.geoloc.Station) stnHash.get(stationId);
      location = station;
      if (station == null) {
        if (null != errs)
          errs.append(" cant find station = <").append(stationId).append(">" + "when reading record ").append(recno)
              .append("\n");
        if (showErrors)
          System.out.println(" cant find station = <" + stationId + ">" + "when reading record " + recno);
      }
    }

    /**
     * Constructor for when you already have the StructureData and want to wrap it in a StationObsDatatype
     *
     * @param station data is for this Station
     * @param obsTime observation time
     * @param nomTime nominal time (may be NaN)
     * @param sdata the structure data
     */
    protected RecordStationObs(ucar.unidata.geoloc.Station station, double obsTime, double nomTime,
        StructureData sdata) {
      this.station = station;
      this.location = station;
      this.obsTime = obsTime;
      this.nomTime = nomTime;
      this.sdata = sdata;
    }

    /**
     * Constructor for when you already have the StructureData and want to wrap it in a StationObsDatatype
     *
     * @param station data is for this Station
     * @param sdata the structure data
     */
    protected RecordStationObs(ucar.unidata.geoloc.Station station, StructureData sdata) {
      this.station = station;
      this.location = station;
      this.sdata = sdata;
      StructureMembers members = sdata.getStructureMembers();
      obsTime = sdata.convertScalarDouble(members.findMember(obsTimeVName));
      nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble(members.findMember(nomTimeVName));

      // obsTime = sdata.convertScalarDouble( members.findMember(obsTimeVName) );
      // nomTime = (nomTimeVName == null) ? obsTime : sdata.convertScalarDouble( members.findMember(nomTimeVName));
    }

    public ucar.unidata.geoloc.Station getStation() {
      return station;
    }

    public StructureData getData() throws IOException {
      if (null != sdata)
        return sdata;

      try {
        return recordVar.readStructure(recno); // note we dont cache sdata
      } catch (ucar.ma2.InvalidRangeException e) {
        e.printStackTrace();
        throw new IOException(e.getMessage());
      }
    }
  }

}


text:
Student & Alumni Spotlights
#WomenOfNYFA
International Diversity
NYFA.EDU
pastudio
An Update From Musical Theatre Chair Mark Olsen
I have finally come up for air and have some time to write a few words to share more of the amazing whirlwind of joy that we have experienced this summer. Many of the faculty who were away on summer professional gigs have now begun to return, while others in pre-Broadway tryouts are beginning new rounds of rehearsals. The second year students are in the early planning stages for their Movie Musical and are continuing to hone their audition, vocal performance, acting, and dance skills. The second semester group, growing by leaps and bounds, will take a break from their intense schedule to see the Broadway musical Kinky Boots tomorrow. (As a side note, one of my former students, Caroline Bowman, was in the show until recently when she left to play Evita in the national tour.) Soon, the second semester students will be preparing to put together the materials for their end of semester showcase that will be performed at the June Havoc Theatre in September.
Our summer high school group was the biggest and the most talented group we have seen in a long time. Their final showcase, directed by faculty member Chad Larabee, with music directed by Kevin White, was a wonderful celebration. In this photo you can sense the joy and authentic exuberance.
Our four-week adult intensive was an extraordinary collection of talented performers from around the world. They all recognized early on that they were a special group capable of creating memorable moments of excellence and making life long friends. Their work ethic was infectious and the whole academy could feel their focus and dedication. Their end of term performance, directed by D.J. Salisbury and music directed by Daniel Lincoln, was also an extraordinary celebration that allowed for an amazing display of talent and growth. This photo, taken moments after they received their diplomas, captures their uninhibited spirit.
Joining us once again was our much-anticipated Pastudio group from Buenas Aires, Argentina. Their leader, Cris Hansen, has reason to be proud since they continue the tradition of bringing serious, open, and receptive students. The group worked hard for a full week and on the eighth day presented a very enjoyable "open class." They are pictured here with Mr. Hansen, and their Musical Theatre teachers Frank Lindquist, Sara Antkowiak, and Neva Rae Powers who also directed their showing.
All in all, a very successful summer filled with great memories, good times, excellent performances, and the simple joy of doing what we love and loving what we do.
Mark Olsen, New York Film Acdemy Musical Theatre Chair
August 14, 2013 • Musical Theatre • Views: 4056
NYFA Twitter
Tweets by @NYFA
Archives Select Month January 2020 (10) December 2019 (19) November 2019 (16) October 2019 (29) September 2019 (27) August 2019 (25) July 2019 (38) June 2019 (29) May 2019 (33) April 2019 (32) March 2019 (23) February 2019 (29) January 2019 (19) December 2018 (21) November 2018 (23) October 2018 (25) September 2018 (21) August 2018 (19) July 2018 (26) June 2018 (21) May 2018 (25) April 2018 (33) March 2018 (40) February 2018 (30) January 2018 (23) December 2017 (25) November 2017 (38) October 2017 (41) September 2017 (25) August 2017 (52) July 2017 (37) June 2017 (35) May 2017 (37) April 2017 (33) March 2017 (31) February 2017 (31) January 2017 (28) December 2016 (31) November 2016 (40) October 2016 (30) September 2016 (41) August 2016 (43) July 2016 (29) June 2016 (35) May 2016 (33) April 2016 (27) March 2016 (29) February 2016 (26) January 2016 (25) December 2015 (22) November 2015 (20) October 2015 (21) September 2015 (22) August 2015 (15) July 2015 (18) June 2015 (28) May 2015 (26) April 2015 (22) March 2015 (59) February 2015 (78) January 2015 (67) December 2014 (18) November 2014 (25) October 2014 (23) September 2014 (17) August 2014 (14) July 2014 (15) June 2014 (21) May 2014 (20) April 2014 (21) March 2014 (19) February 2014 (19) January 2014 (19) December 2013 (16) November 2013 (26) October 2013 (23) September 2013 (14) August 2013 (13) July 2013 (13) June 2013 (7) May 2013 (8) April 2013 (10) March 2013 (7) February 2013 (10) January 2013 (8) December 2012 (7) November 2012 (7) October 2012 (9) September 2012 (2) August 2012 (4) July 2012 (13) June 2012 (11) May 2012 (9) April 2012 (9) March 2012 (10) February 2012 (3) January 2012 (6) December 2011 (4) November 2011 (3) October 2011 (3) September 2011 (4) August 2011 (2) July 2011 (4) June 2011 (4) May 2011 (4) April 2011 (9) March 2011 (2) February 2011 (3) January 2011 (5) December 2010 (3) November 2010 (1) October 2010 (2) August 2010 (1) July 2010 (3) June 2010 (2) May 2010 (4) April 2010 (3) October 2009 (1) August 2009 (1) July 2009 (2) June 2009 (4) May 2009 (3) April 2009 (4) March 2009 (2) February 2009 (9) January 2009 (1) June 2008 (1) October 2002 (1)
acting acting for film acting school acting schools Alum alumni animation australia broadcast journalism broadcast journalism school China cinematography directing director documentary documentary filmmaking documentary school documentary schools film film festival filmmaking filmmaking school filmmaking schools film school film schools game design hollywood los angeles MFA MFA Filmmaking musical theatre new york new york city new york film academy New York Film Academy Los Angeles nyfa nyfa alumni nyfa los angeles photography Photography School photography schools producing screenwriting screenwriting school veterans
92nd Academy Awards Nominees Includes Film Featuring New York Film Academy (NYFA) Alum Anouar Smaine
New York Film Academy MFA Filmmaking Alum Jaco Dukes Premieres 'El Guardia' at Cannes Film Festival's Marché du Film
New York Film Academy (NYFA) BFA 3D Animation & VFX Student Arina Andriushchenko Works on Dish TV Commercial
International Community Gathers Together to Aid Victims of Australia Bushfires – Here's How You Can Help
New York Film Academy (NYFA) Filmmaking Alum Li Cheng's 'Jośe' Gets National Release After Winning Queer Lion Award at Venice Film Festival
New York Film Academy (NYFA) MFA Acting for Film Student Amir Rahim Stars in Debut Feature Film
NYFA Instagram
Follow NYFA!


How to configure Splunk to authenticate through LDAP?
How do I edit configuration files through Splunk Web?
How to assign newly created roles to existing LDAP Authentication users in Splunk Web?
Why am I receiving errors after configuring Splunk Web SSL with self signed certificates?
This section describes how to configure LDAP through Splunk Web. If you want to configure LDAP by directly editing authentication.conf, see "Configure LDAP with the configuration file".
1. Create an LDAP strategy.
2. Map LDAP groups to Splunk roles.
1. Click Manager in Splunk Web.
2. In the Users and authentication section, click Access controls.
4. Select the LDAP radio button.
5. Click Configure Splunk to use LDAP and map groups. This takes you to the LDAP strategies page.
6. Click New. This takes you to the Add new page.
7. Enter an LDAP strategy name for your configuration.
8. Enter the Host name of your LDAP server. Be sure that your Splunk Server can resolve the host name. Note: At this time, Splunk does not support IPv6 address formats for Windows.
9. Enter the Port that Splunk should use to connect to your LDAP server.
By default LDAP servers listen on TCP port 389.
LDAPS (LDAP with SSL) defaults to port 636.
10. To turn on SSL, check SSL enabled.
This setting is recommended for security.
You must also have SSL enabled on your LDAP server.
11. Enter the Bind DN.
This is the distinguished name used to bind to the LDAP server.
This is typically, but not necessarily, the administrator or manager user. This user needs to have read access to all LDAP user and group entries you want to retrieve.
Leave blank if anonymous bind is sufficient.
12. Enter and confirm the Bind DN password for the binding user.
13. Specify the User base DN. You can specify multiple user base DN entries by separating them with semicolons.
Splunk uses this attribute to locate user information.
You must set this attribute for authentication to work.
14. Enter the User base filter for the object class you want to filter your users on.
This is recommended to return only applicable users. For example: (department=IT).
Default value is empty, meaning no user entry filtering.
15. Enter the User name attribute that contains the user name.
The username attribute cannot contain white spaces.
In Active Directory, this is typically sAMAccountName, but you can also authenticate on other attributes, like cn.
The value uid should work for most other configurations.
16. Enter the Real name attribute (common name) of the user.
Typical values are displayName or cn (common name).
17. Enter the Group mapping attribute.
This is the user attribute that group entries use to define their members.
The default is dn for active directory; set this attribute only if groups are mapped using some other attribute besides user DN.
For example, a typical attribute used to map users to groups is dn.
18. Enter the Group base DN. You can specify multiple group base DN entries by separating them with semicolons.
This is the location of the user groups in LDAP.
Set groupBaseDN to the same value as userBaseDN. This means you will search for groups in the same place as users.
Next, set the groupMemberAttribute and groupMappingAttribute to the same attribute as userNameAttribute. This means the entry, when treated as a group, will use the username value as its only member.
For clarity, you should probably also set groupNameAttribute to the same value as userNameAttribute.
Note: For best results when integrating Active Directory, place your Group Base DN in a separate hierarchy than the User Base DN.
19. Enter the Static group search filter for the object class you want to filter your static groups on.
Default value is empty, meaning no static group entry filtering.
20. Enter the Group name attribute.
This is the group entry attribute whose value stores the group name.
21. Enter the Static member attribute.
This is the group attribute whose values are the group's members.
This is typically member, uniqueMember, or memberUid.
22. To expand nested groups, check Nested groups.
This controls whether Splunk will expand nested groups using the 'memberof' attribute. Only check this if you have nested groups that leverage the 'memberof' attribute to resolve their members. On OpenLDAP, you need to explicitly enable the 'memberof' overlay.
23. Enter the Dynamic group search filter to retrieve dynamic groups, if any.
Default value is empty, meaning Splunk will not look for dynamic group entries during authentication and authorization.
24. Enter the Dynamic member attribute.
This is the group attribute that uses the form of an LDAP search URL (such as ldap:///o=Acme, c=US??sub?(objectclass=person) ) to define its members.
Enable referrals with anonymous bind only.
This setting is on by default. Turn this off if you have no need for referrals.
Splunk can chase referrals with anonymous bind only. You must also have anonymous search enabled on your LDAP server.
If you are seeing long LDAP search timeouts (likely in Active Directory) and "Operations error" in splunkd.log for ScopedLDAPConnection, the issues might be related to referrals.
To avoid performance-related issues, you can set the search request size limit. Splunk will then request that the LDAP server return the specified maximum number of entries in response to a search request. In a large deployment with millions of users, setting this limit to a high value could result in a long response, depending on the search filter set in the LDAP strategy configuration. If this limit is reached, splunkd.log should contain a size limit exceeded message.
You should set the search request time limit and search request size limit values in conjunction with the splunkweb timeout property, described in "Configure user session timeouts". If you have a group that is not showing up in the Splunk console, it was likely excluded due to one of these limits. Tune these properties as needed.
To set the request size limit higher than 1000, you must also edit max_users_to_precache in limits.conf to accomodate the number of users you set for your request size limit.
To avoid performance-related issues, you can set the search request time limit. Splunk will then request that the LDAP server complete its search within the specified number of seconds. In a large deployment with millions of users, setting this limit to a high value could cause Splunk Web to timeout. If this limit is reached, splunkd.log should contain a time limit exceeded message.
This property is used to break the loop in the authentication chain when one of the LDAP servers in a multiple strategy configuration is unreachable due to network congestion or otherwise takes too long to respond. After waiting the specified number of seconds, the authentication process will continue with the next available strategy, if any.
When an LDAP strategy is first created, Splunk validates the LDAP server/port and other parameters. If the LDAP server is down or one of the parameters cannot be validated at that time, the LDAP strategy does not get created.
Once you have configured Splunk to authenticate via your LDAP server, map your LDAP groups to Splunk roles. If you do not use groups, you can map users individually.
Note: You can map either users or groups, but not both. If you are using groups, all users you want to access Splunk must be members of an appropriate group. Groups inherit capabilities from the highest level role they're a member of.
6. Click Map groups in the Actions column for a specific strategy. This takes you to the LDAP Groups page. You can use the search field in the upper right corner of the page to qualify the list of groups; for example, to search for groups containing specific users.
7. Click on a group name. This takes you the mapping page, which includes a list of available roles and a list of LDAP users for that group.
8. To map a role to a group, click the arrow to the left of a role in the "Available Roles" list. This moves the group into the "Selected Roles" list. You can map multiple roles to the group.
9. Click Save. This takes you back to the LDAP Groups page.
10. Repeat the process for each group that you want to assign Splunk roles to.
If you have enabled multiple LDAP strategies, you can specify the order in which Splunk searches their servers to find a user, as described in "How Splunk works with multiple LDAP servers".
6. Click on the strategy whose connection order you want to specify. This takes you to the properties page for that strategy.
7. Edit the Connection order field near the top of the page. This field appears only if multiple strategies are enabled.
Note: The Connection order field does not appear when you initially create the strategy. It only appears when you later edit its properties. Also, the field will be grayed out if the strategy has been disabled.
9. Repeat the process for any other enabled strategy whose connection order you want to change.


text:
package mcjty.rftools.blocks.spaceprojector;

import mcjty.lib.gui.GuiItemScreen;
import mcjty.lib.gui.RenderHelper;
import mcjty.lib.gui.Window;
import mcjty.lib.gui.layout.HorizontalAlignment;
import mcjty.lib.gui.layout.HorizontalLayout;
import mcjty.lib.gui.layout.VerticalLayout;
import mcjty.lib.gui.widgets.*;
import mcjty.lib.gui.widgets.Label;
import mcjty.lib.gui.widgets.Panel;
import mcjty.lib.varia.BlockMeta;
import mcjty.rftools.RFTools;
import mcjty.rftools.network.RFToolsMessages;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

import java.awt.*;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;

public class GuiChamberDetails extends GuiItemScreen {

    private final static int CHAMBER_XSIZE = 390;
    private final static int CHAMBER_YSIZE = 210;

    private static Map<BlockMeta,Integer> items = null;
    private static Map<BlockMeta,Integer> costs = null;
    private static Map<String,Integer> entities = null;
    private static Map<String,Integer> entityCosts = null;

    private WidgetList blockList;
    private Label infoLabel;
    private Label info2Label;

    public GuiChamberDetails() {
        super(RFTools.instance, RFToolsMessages.INSTANCE, CHAMBER_XSIZE, CHAMBER_YSIZE, RFTools.GUI_MANUAL_MAIN, "chambercard");
        requestChamberInfoFromServer();
    }

    public static void setItemsWithCount(Map<BlockMeta,Integer> items, Map<BlockMeta,Integer> costs, Map<String,Integer> entities, Map<String,Integer> entityCosts) {
        GuiChamberDetails.items = new HashMap<BlockMeta, Integer>(items);
        GuiChamberDetails.costs = new HashMap<BlockMeta, Integer>(costs);
        GuiChamberDetails.entities = new HashMap<String, Integer>(entities);
        GuiChamberDetails.entityCosts = new HashMap<String, Integer>(entityCosts);
    }

    private void requestChamberInfoFromServer() {
        RFToolsMessages.INSTANCE.sendToServer(new PacketGetChamberInfo());
    }

    @Override
    public void initGui() {
        super.initGui();

        blockList = createStyledList();
        Slider listSlider = new Slider(mc, this).setDesiredWidth(10).setVertical().setScrollable(blockList);
        Panel listPanel = new Panel(mc, this).setLayout(new HorizontalLayout().setSpacing(1).setHorizontalMargin(3)).addChild(blockList).addChild(listSlider);

        infoLabel = new Label(mc, this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT);
        infoLabel.setDesiredWidth(380).setDesiredHeight(14);
        info2Label = new Label(mc, this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT);
        info2Label.setDesiredWidth(380).setDesiredHeight(14);

        Widget toplevel = new Panel(mc, this).setFilledRectThickness(2).setLayout(new VerticalLayout().setSpacing(1).setVerticalMargin(3)).addChild(listPanel).addChild(infoLabel).addChild(info2Label);
        toplevel.setBounds(new Rectangle(guiLeft, guiTop, xSize, ySize));

        window = new Window(this, toplevel);
    }

    private void populateLists() {
        blockList.removeChildren();
        if (items == null) {
            return;
        }

        int totalCost = 0;
        for (Map.Entry<BlockMeta, Integer> entry : items.entrySet()) {
            BlockMeta bm = entry.getKey();
            int count = entry.getValue();
            int cost = costs.get(bm);
            Panel panel = new Panel(mc,this).setLayout(new HorizontalLayout()).setDesiredHeight(16);
            ItemStack stack = new ItemStack(bm.getBlock(), 0, bm.getMeta());
            BlockRender blockRender = new BlockRender(mc, this).setRenderItem(stack).setOffsetX(-1).setOffsetY(-1);

            Label nameLabel = new Label(mc,this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT);
            if (stack.getItem() == null) {
                nameLabel.setText("?").setDesiredWidth(160);
            } else {
                nameLabel.setText(stack.getDisplayName()).setDesiredWidth(160);
            }

            Label countLabel = new Label(mc, this).setText(String.valueOf(count));
            countLabel.setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT).setDesiredWidth(50);

            Label costLabel = new Label(mc, this);
            costLabel.setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT);

            if (cost == -1) {
                costLabel.setText("NOT MOVABLE!");
            } else {
                costLabel.setText("Move Cost " + cost + " RF");
                totalCost += cost;
            }
            panel.addChild(blockRender).addChild(nameLabel).addChild(countLabel).addChild(costLabel);
            blockList.addChild(panel);
        }

        int totalCostEntities = 0;
        RenderHelper.rot += .5f;
        for (Map.Entry<String, Integer> entry : entities.entrySet()) {
            String className = entry.getKey();
            Class<?> aClass = null;
            try {
                aClass = Class.forName(className);
            } catch (ClassNotFoundException e) {
            }
            int count = entry.getValue();
            int cost = entityCosts.get(className);
            Panel panel = new Panel(mc,this).setLayout(new HorizontalLayout()).setDesiredHeight(16);
            Entity entity = null;
            try {
                entity = (Entity) aClass.getConstructor(World.class).newInstance(mc.theWorld);
            } catch (InstantiationException e) {
            } catch (IllegalAccessException e) {
            } catch (InvocationTargetException e) {
            } catch (NoSuchMethodException e) {
            }
            BlockRender blockRender = new BlockRender(mc, this).setRenderItem(entity).setOffsetX(-1).setOffsetY(-1);

            Label nameLabel = new Label(mc,this).setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT);
            nameLabel.setText(aClass.getSimpleName()).setDesiredWidth(160);

            Label countLabel = new Label(mc, this).setText(String.valueOf(count));
            countLabel.setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT).setDesiredWidth(50);

            Label costLabel = new Label(mc, this);
            costLabel.setHorizontalAlignment(HorizontalAlignment.ALIGH_LEFT);

            if (cost == -1) {
                costLabel.setText("NOT MOVABLE!");
            } else {
                costLabel.setText("Move Cost " + cost + " RF");
                totalCostEntities += cost;
            }
            panel.addChild(blockRender).addChild(nameLabel).addChild(countLabel).addChild(costLabel);
            blockList.addChild(panel);
        }

        infoLabel.setText("Total cost blocks: " + totalCost + " RF");
        info2Label.setText("Total cost entities: " + totalCostEntities + " RF");
    }

    @Override
    public void drawScreen(int xSize_lo, int ySize_lo, float par3) {
        super.drawScreen(xSize_lo, ySize_lo, par3);

        populateLists();

        drawWindow();
    }
}


You would have to be an idiot to try and predict how a season will go for a team before a ball is even kicked. Luckily we have those in abundance here at kiwileaguecentral.com. Here is our bold, and probably completely wrong, guess at how season 2016 will go for the Parramatta Eels.
Parramatta were among the biggest on-field improvers from last year, spending parts of the year inside the top eight.
For much of the season their attack was fluid and entertaining to watch, with Fijian monster Semi Radradra and the fleet-footed Michael Jennings benefiting with plenty of four-pointers.
But the Eels' star signing and best player, Kiwi halfback Kieran Foran, struggled with niggling injuries and missed a couple of games which Parramatta went on to lose.
In the end they fell just short of a return to the finals, but showed enough to suggest they can be a real force in 2017.


text:
Dozens homeless after tents, makeshift homes destroyed in airstrikes on Idlib camp for displaced
By Alaa Nassar, Alaa Rateb , Yazan Torko, Madeline Edwards, Kristen Demilio
AMMAN: More than 50 displaced Syrians are living out in the open amidst rubble on Thursday after targeted airstrikes destroyed most of their camp in rural central Idlib province, sources on the ground told Syria Direct.
"The first airstrike was at around 2pm, and struck 100 meters from al-Maaratah camp," the site's director Dhiaa Bkour told Syria Direct on Thursday, the day after the bombings. An hour later, Bkour said, a second airstrike hit the mosque "in the middle of the camp, leading to total destruction."
As a result of the airstrikes, 130 of the settlement's roughly 2,000 residents are now "homeless" after alleged Su-22 bombers belonging to the Syrian Air Force unleashed airstrikes in the countryside east of Maarat a-Numan, Bkour said.
The aftermath of the airstrikes Wednesday afternoon. Photo courtesy of SMART News.
Among the wreckage is the camp's school, which had served nearly 400 children from the camp and nearby villages. "The children now have no access to education, as this was the only school in the area," Bkour added.
Most of the camp's residents are displaced Syrians from the Hama plains, 60km to the southwest. The encampment consists of 175 one-room cement structures with either tin or clay roofs and 100 tents. On average, at least 20 people from two different families live in the cement homes, said the camp director.
A displaced person himself, Bkour was elected director of the camp upon its establishment four years ago. At the time, residents of the surrounding towns and villages fled battles in the area and began building the cluster of tents and makeshift cinderblock homes now known as al-Maaratah. Bkour acts as a campwide spokesperson, appealing to humanitarian organizations for sorely needed aid for the camp's roughly 2,000 residents.
But aid had yet to arrive as of Thursday afternoon, after he had "communicated with a number of humanitarian organizations to provide shelters" for those left homeless by Wednesday's bombing.
After the airstrikes on Wednesday. Photo courtesy of Muath a-Shami.
Some residents whose homes or tents were crushed in Wednesday's attack were able to find shelter by cramming in with extended family members on the edges of the camp, which remain untouched by the bombing.
At least 50 people, however, are now forced to sleep out in the open fields, with no shelter whatsoever.
Among them is 45-year-old Fateem al-Hameid, whose stepdaughter was one of two people killed in Wednesday's attack. She has lived in al-Maaratah camp since two years ago, when battles between regime and rebel forces in her hometown in neighboring Hama province forced her to flee "to protect my family from the bombs."
On Wednesday, her stepdaughter, 28, went outside to see what was happening after the first bomb fell, al-Hameid said. "When the second bomb fell, she was hit and died 15 minutes later," she added.
As of Thursday, al-Hameid, her husband and their seven young children are now "living out in the open" after the bombing attack flattened their makeshift home in the center of camp, she told Syria Direct. "We have no house—not even a tent."
There is little al-Hameid and her family can do now, she says, but "wait for someone to come and help us," she said.
Civil Defense volunteers at al-Maaratah after the airstrikes. Photo courtesy of Civil Defense-Idlib.
Abu Mohammad, 35, lost the tent he shared with wife and four children in Wednesday's attack. It is the second time in a year the family has been homeless, after a bomb destroyed their house in rural Hama province last year.
As of Thursday, the manual laborer and his family are staying in a relative's home on the camp's outskirts. "We are 15 people all living together in just one room," he told Syria Direct on Thursday.
Camp officials worked on Thursday to remove debris left behind by the attack despite a "lack of equipment" belonging to local Civil Defense first response teams, said one Civil Defense first responder, Maarouf Abu Ghfar.
In one video posted by pro-opposition outlet SMART News, dead cows and donkeys lie in the rubble as residents sort through demolished homes for their belongings.
Wednesday's attack comes amid a general escalation of Syrian regime and allied Russian airstrikes over southern Idlib and northern Hama provinces. Syrian President Bashar al-Assad's forces are responding to an opposition offensive launched last month in neighboring Hama province to "reach the heart of Hama city" and take control of the nearby military airport, a Free Syrian Army spokesman told Syria Direct at the time. It is their fourth such offensive in four years.
Syrian state media did not report Wednesday's attack on al-Maaratah camp.
For Abu Mohammad, the father whose tent was destroyed in the airstrike, he says finding safety amid the escalation is now even more urgent than finding food and water. "As the land keeps shrinking around us, our weariness expands," he said.
"We just want to be safe from the bombings, the destruction and the homelessness."
Alaa Nassar
Alaa Rateb
Yazan Torko
Madeline Edwards
Kristen Demilio
IDPs in northwest Syria: new winter, old ordeal (Photos)
AMMAN, IDLIB — Standing inside a flooded tent in the Umm Jaran informal camp, east of Kafr Arrouq t...
As winter sets in, HTS faces popular discontent around fuel prices
AMMAN- Two new gas and fuel companies emerged recently in Hayat Tahrir al-Sham (HTS)-controlled are...
Escaping Idlib: Risking death for a chance at life in Turkey
Despite increasing restrictions on border crossings, Syrian refugees risk it all for a better life ...


text:
9 Things You Need to Know about VR Oculus Rift
ROAR for Good Announces Free Screening of the Award Winning Documentary the Hunting Ground
Facebook Launches Automatic Alt Tags to Describe Photos to Blind Users
Published by Tommy Golightly at April 8, 2016
By: Kate Van Druff
The Oculus Rift VR headset has been a long time coming. Founded by Palmer Luckey and Brendan Iribe, Oculus VR launched a Kickstarter campaign during the summer of 2012 to bring to life a versatile virtual reality head-mounted display for serious gamers. The idea of Oculus Rift captured the attention of the masses and garnered $10 million for its development in those early days, with parent company Facebook purchasing Oculus VR in March 2014. As of March 28, 2016, the fruits of the company's labor have now, finally, come to market.
Facebook Founder Mark Zuckerberg recently addressed the release of Oculus in a video on Facebook, illustrating key features and touting the "trippy experience" of what VR actually does. Instead of trying to convince yourself that you're really there as with normal video game computing, he says you find yourself trying to convince yourself that you aren't actually there and that it's not a real thing. And, isn't that the true beauty of virtual reality?
Now, onto the Oculus Rift… here are a few things you should know about it.
What's in the Box: The Oculus Rift kit includes a headset with integrated mic and headphones, Oculus Remote, Oculus Sensor, Xbox One Wireless Controller (plus two AA batteries, an adapter, and an extender), all required connection cords, and a special audio tool to remove or add back the headphones. The game Lucky's Tale is also included with every Rift purchase.
It's not cheap. Oculus Rift sells for $599, and…
You'll need a bangin' PC. Depending on your current system, you may need to upgrade. Amazon, Best Buy, and others are currently selling computer + Oculus Rift bundles. The recommended specifications as per the Oculus website are:
NVIDIA GTX 970 / AMD 290 equivalent or greater
Intel i5-4590 equivalent or greater
8GB+ RAM
Compatible HDMI 1.3 video output
2x USB 3.0 ports
Windows 7 SP1 or newer
You're tethered. Oculus Rift requires a single cable to connect to your PC and mainly keeps you in your chair, as much as you'd rather be more actively playing out your moves in a virtual world.
The design is sleek with plenty of thoughtful features. Oculus Rift offers minimalist beauty with black styling and a rubberized carrying case that just barely contains the excitement. Sweet 3D audio, combined total resolution of 2160 x 1200, and full 360 degree perspective make gaming situations even more realistic.
Oculus Rift launches without hand-tracked controllers. But don't let that deter you, at least not for good. Oculus' Touch controls are set to launch later this year, bringing your hands into the virtual world. A selection of new games is set to launch alongside the controls as well.
The game lineup for Rift is 30-strong and growing. So be sure to set aside some play money for a few game selections. See the full list at launch here and stay tuned for many more games that will be released in the coming months.
If you can't find a game you like, you can just build it. Well, if the dev kit isn't sold out. The DK2 Development Kit 2 empowers developers to build exciting games with positional tracking and an integrated latency tester.
Social VR makes it even more real. That social aspect may just be the reason why Facebook acquired Oculus VR in the first place, as the Rift allows you to bring along friends on your game time adventures.
So there you have it. A cutting-edge gaming system reserved for serious, elite gamers with time to play and money to burn. Featuring realistic visual and audio effects, 30 current game options, and endless possibilities for creation of new games, Oculus Rift crafts its own shiny new dimension of reality. VR is everything we hoped (and expected) it would be, and the Oculus Rift delivers an exciting experience in full 360-degree enjoyment. Welcome to the future.
Pokémon Go: The Good, the Bad, and the Ugly
Pretty great post. I simply stuumbled uupon your weblog and wished to say that I have truly loved
surfing around your blog posts. In anny case I'll be subscribing in your feed and I'm hhoping you write again soon!
Landon Murphy says:
One of the brilliant pieces i've read this week.


text:
German English Spanish French Russian Portuguese
Why measure the track?
How do I find the right track recording car?
Parameters measured and measuring systems for the track infrastructure
Track geometry measurement
Rail profile and rail wear measurement
Measurement of rail surface defects (corrugation)
Vertical axle box acceleration measurement
Clearance and ballast profile measurement
Other parameters
Catenary wire position measurement
Automatic detection of the location of the poles
Pantograph for dynamic catenary wire measurement
Driver's view video system
Monitoring of track components
Video system to monitor catenary wire position
Thermal Imaging System
Off-line video processing
Ultrasonic rail flaw detection system
Data processing and data evaluation
Networked measuring technology - integrated overall solutions for track measuring
Plasser & Theurer – the No.1 in measuring technology
TRACK RECORDING CARS
Plasser & Theurer has many years of experience in the field of measuring track, rail and catenary wire structure and offers industrially manufactured track recording cars with full know-how on track behavior and track maintenance.
More than 180 industrially manufactured track recording cars for inspection and condition-analysis of rail networks, put into operation in the last 35 years, have greatly contributed to the wealth of experience and the sophisticated design of the "travelling recording laboratory" built by Plasser & Theurer.
The technical development began with mechanical measuring systems. Here a great deal of know-how about the specific parameters of track measuring technology was accumulated in cooperation with specialists from railways and research institutes.
Non-contacting measuring systems have been in use for around 20 years and supply valuable results. This technology was adopted in 1992 when the EM250 high-speed track recording coach was built for ÖBB. This vehicle was already ahead of its time when it was commissioned and since then has been developed continually by Plasser & Theurer according to the requirements of the ÖBB specialists. Along with the ÖBB data management, it represents a milestone in track recording to this day.
Subsequently, Plasser & Theurer has built more than 50 recording cars equipped with non-contacting systems in different models and for various measuring speeds. These systems were first used only for higher measuring speeds. The advantages became increasingly clearer, supported by the technical development in measuring technology and the cost development, and the systems were soon used in all vehicle and measuring categories.
Apart from the economic advantage there are also technical reasons for acquiring all necessary measuring data in as few measuring runs as possible. Therefore, many Plasser & Theurer recording cars have a multi-functional character. The sensible combination and integration of all measuring and inspection tasks is an essential component when it comes to planning and designing a track recording car. Today, multi-functional recording vehicles that can record a variety of parameters are state of the art.


Investigator Jeff Berns really came through for me. An investigator I had been using had to leave town due to a family emergency during the middle of a complex murder trial. I contacted Mr. Berns and he jumped right into the case. He quickly grasped the facts of the case, conducted the investigation that was needed, and provided me with a thorough report. His report writing skills are excellent. It's one thing to be a great investigator; it's another to be able to communicate, in writing, the results of an investigation. Mr. Berns has both – great investigator, great writing skills."
"I recently needed the services of an investigator and found Jeff Berns with Right Path Investigations through an internet search. I was impressed with Jeff from the start when he said he needed to check out my background before doing a search for an old friend I was looking for. This put me at ease by showing me he was ethical and not willing to take on any customer who might have the wrong intentions for finding someone. I found him very professional and efficient. He was not only quick to respond to my request, I was amazed at how fast he had information on me as well as the person I was looking for. I would not hesitate to recommend him to anyone."
My attorney and I worked very closely with Senior Investigator Jeff Berns directly at Right Path Investigations. Jeff worked on several complex technical investigations and litigation matters involving my civil libel and slander case. Mr. Berns greatly assisted us and obtained very difficult and important evidence used to successfully advance and resolve my case. He is very helpful, tenacious and persistent in every respect.
I found Mr. Berns always well prepared and he thoroughly briefed me on all aspects of the case. Mr. Berns is attentive to every detail, no matter how minor. He is a keen observer and exhibited "street smarts" that only investigative experience can bring. Mr. Berns never hesitated to explore creative and intelligent approaches, so often key to successful investigations. Mr. Berns is to be commended for his ability to carry out a very successful investigation and for his dedication and loyalty. I would highly recommend Jeff Berns and Right Path Investigations and their services if you have a complex matter that needs to be figured out and resolved.
Jeff Berns worked with me for several years as an investigator with the Sacramento County Public Defender's Office. Jeff was originally hired in the misdemeanor division. As a result of Jeff's keen investigative skills, his professional demeanor, his strength as a team player while being an effective and strong independent worker, and his ability to complete assigned case work by strict court imposed dead lines, Jeff quickly rose through the ranks and was promoted to working complicated felony cases.
From the beginning of my association with Jeff, I was impressed with the ethical and moral characteristics that drove his professional and personal life. These characteristics come across in such a manner that he is able to elicit information quite effectively from witnesses and others. Jeff also possesses superior writing skills which is the hallmark of an accomplished investigator.
Our son had been missing 34 days when we called you, My husband was having a really hard time and after checking all the jails, hospitals and morgues I started to really get scared. Our 22 year old son has made some poor decisions over the last couple years, but he always calls home a couple times a week. He had left after a nice overnight visit with us and was heading home. When his roommate called later that night we knew things had not gone as planned. We tried the wait and worry game. The police were not much help because of his age and gender. You really don't realize what it takes to find someone when they are missing! Jeff...I don't know how you did it but after you asked several questions I never thought of, our son called and left us a message promising to call. It was a huge relief and after talking with my son I had to wonder how in the world you found him. I got some of the story, but whatever your tactics were....they worked. It only took you 48 hrs to find my son.


"[It] will be the most memorable Epocha, in the History of America. I am apt to believe that it will be celebrated, by succeeding Generations, as the great anniversary Festival. It ought to be commemorated, as the Day of Deliverance by solemn Acts of Devotion to God Almighty. It ought to be solemnized with Pomp and Parade, with Shews, Games, Sports, Guns, Bells, Bonfires and Illuminations from one End of this Continent to the other from this Time forward forever more."
Francis Lewis had his home and properties destroyed. The enemy jailed his wife, and she died within a few months. John Hart was driven from his wife's bedside as she was dying. Their 13 children fled for their lives. His fields and his gristmill were laid to waste. For more than a year he lived in forests and caves, returning home to find his wife dead and his children vanished. A few weeks later, he died from exhaustion and a broken heart. Norris and Livingston suffered similar fates.