text:
Salamanders brave miles of threatening terrain for the right sex partner
Most salamanders are homebodies when it comes to mating. But some of the beasts hit the road, traversing miles of rugged terrain unfit for an amphibian in pursuit of a partner from a far-away wetland.
Sex evolved to help future generations fight infection, scientists show
Why does sex exist when organisms that clone themselves use less time and energy, and do not need a mate to produce offspring? Researchers at the University of Stirling aiming to answer this age-old question have discovered ...
Mechanism of successful horizontal gene transfer between divergent organisms explained
The transfer of genes from one organism to another is potentially a rapid way for evolution to occur and for complicated novel functions to emerge. However, even when the two organisms in question are in close proximity to ...
Utah is fastest-growing state as West bucks sluggish trend
Utah is the fastest-growing state in the country, leading a cluster of Western states with populations on the upswing despite sluggish national growth, according to new numbers released by the U.S. Census Bureau Tuesday.
Scientists invented method to take material out of theory and make it into real electrode
A little sodium goes a long way. At least that's the case in carbon-based energy technology. Specifically, embedding sodium in carbon materials can tremendously improve electrodes—which could streamline solar cell and supercapacitor ...
Arctic Inuit, Native American cold adaptations may originate from extinct hominids
In the Arctic, the Inuits have adapted to severe cold and a predominantly seafood diet. After the first population genomic analysis of the Greenland Inuits (Fumagalli, Moltke et al. 2015, Science doi:10.1126/science.aab2319), ...
Archaeology & Fossils
Small troughs growing on Mars may become 'spiders'
Erosion-carved troughs that grow and branch during multiple Martian years may be infant versions of larger features known as Martian "spiders," which are radially patterned channels found only in the south polar region of ...
Naples astride a rumbling mega-volcano
A slumbering Campi Flegrei volcano under the Italian city of Naples shows signs of "reawakening" and may be nearing a critical pressure point, according to a study published Tuesday.
Google eyes fix after snafu on Holocaust denial
Google said Tuesday it was working to refine its algorithm to weed out "non-authoritative" information after a British news report showed a Holocaust denial website ranked highly in search queries.
Oklahoma warns of more quakes from energy drilling
Oklahoma regulators said Tuesday that the number of induced earthquakes could increase as oil and gas production expands in a broad area of the state, and they're telling energy companies that they need to be ready to shut ...
page 1 from 11


Synopsis: Apple held an event on March 25th to introduce the future of Apple services. There is a lot to unpack and we do so succinctly to explain what you need to know and why it's important.
Interest rate goes between 13% and 24% "depending on creditworthiness". Not actually that low.


text:
Flash Battery among the speakers of Battery Live Talk: Review 2022 & Outlook 2023
On December 15 2022, Flash Battery will be among the speakers at the Battery Live Talk to discuss the challenges and perspectives of the European ecosystem within the First Important Project of Common European Interest (IPCEI) on batteries.
The seminar, entitled "How can the ecosystem overcome the current challenges and risks for European battery production?", will take place online from 4:00 to 6:00 pm, upon registration, and will be the last talk in the 2022 series of monthly events on the topic of battery production in Europe within IPCEI. On the occasion, it will be attended by more than 200 leading figures from international industry, policy and research institutes involved in all stages of the battery value chain.
Silvia Delbono, Project Administration & Fundraising of Flash Battery, will take part in the panel entitled "Review 2022 & Outlook 2023: Views from the European Battery Ecosystem", where she will provide an overview of the current status and milestones of the IPCEI project Flash Battery is leading in the implementation of a sustainable and innovative battery ecosystem in Europe.
The online event, organised by European Battery Innovation (EuBatIn) and moderated by VDI/VDE Innovation + Technik GmbH on behalf of the German Federal Ministry for Economic Affairs and Climate Action, will examine the achievements and milestones of the European battery ecosystem in 2022. It will also discuss the outlook for 2023 and how the battery ecosystem intends to tackle current and future challenges, starting with rising energy and raw material prices, as well as recent industry policy developments in the US and China. Finally, the steps needed to stabilise the European battery industry and develop its implementation will be explored.
Panel speakers, in addition to Flash Battery, will include Tilmann Vahle, Director Sustainable Mobility and Batteries at SYSTEMIQ Deutschland, Wouter Ghyoot, Vice President Government Affairs at Umicore, Siyamend Al Barazi, Head of Division, Mineral Economics at the German Mineral Resources Agency (DERA), Steffen Blömeke, Institute of Machine Tools and Production Technology at Technische Universität Braunschweig.
LEARN MORE ABOUT THE IPCEI PROJECT
IPCEI PROJECT

redpajama_set_name: RedPajamaCommonCrawl


WE Consulting & Benefits provides benefits for BC FORUM members. From left are BC FORUM Board Secretary Miriam Olney, Mike Porteous, WE Consulting & Benefits and Diane Wood, President, BC FORUM. Photo was taken at CLC Winter School, January 31, 2016.
With BC FORUM, you have a group to turn to when you want action, and your voice will be backed by the power of the organization's collective voice.
In addition to organizing community forums and rallies on issues that matter to our members, we also produce The Advocate, a quarterly newsletter that helps our members stay informed on current issues and initiatives.
Annual dues for membership are $20 (three year memberships are available for $49) and we recommend you check with your union as some affiliates will pay your first year membership dues (current May, 2017: BCGEU, HSA, MoveUp, CEU, CUPE 386, UFCW, Heat & Frost, Unifor 2301 and LiUNA 1611).
As a member of the BC FORUM, you will automatically be covered by our $2,500 Group Accident Death & Dismemberment (AD&D) Insurance Plan. Spousal coverage is also available at an additional $5/year.
Published in Summer 2018 issue of the Advocate, starting on page 7.
WE Consulting & Benefits Services Ltd.


text:
NFL sets 2022 salary cap at $208.2 million
By Lester A. Wiltfong Jr.@wiltfongjr Mar 7, 2022, 6:32pm CST
Share All sharing options for: NFL sets 2022 salary cap at $208.2 million
On Monday it was reported that the NFL's salary cap was increasing to $208.2 million, which is an increase of $25.7 million from last year's salary cap of $182.5. The cap usually jumps up around $10 million per season, but with the pandemic causing 2021's cap to fall from $198.2 million in 2020, this significant boost was expected.
The Chicago Bears will now have $26.3 million in space according to Over The Cap, but keep in mind there are 35 free agents from last year's team that has come off the books. There are also some void year players that will have their cap hits tabulated once they are officially released. Over The Cap also calculated "effective cap space" which is their estimate on what each team will have once they bring their rosters to 51 players, which is the number of players that counts towards the yearly cap, and they have the Bears at $20.4 million.
The Bears are 12th in the league in both cap space and effective cap space, and they are 7th in dead money for the 2022 season at just a bit over $16 million.
General manager Ryan Poles has a few veterans he could either trade or release that will free up even more cash, and with the league year starting on March 16th (i.e. free agency) there should be some decisions announced soon.
The cap being set also means that the franchise tag and fifth-year option figures are set, but the Bears have no one that is a realistic tag candidate, and they didn't have a first round pick in 2019 that would need an option picked up.


text:
Q: Output specific key value in object for each element in array with jq for JSON I have an array:
[
    {
        "AssetId": 14462955,
        "Name": "Cultural Item"
    },
    {
        "AssetId": 114385498,
        "Name": "Redspybot"
    },
    {
        "AssetId": 29715011,
        "Name": "American Cowboy"
    },
    {
        "AssetId": 98253651,
        "Name": "Mahem"
    }
]

I would like to loop through each object in this array, and pick out the value of each key called AssetId and output it.
How would I do this using jq for the command line?

A: The command-line tool jq writes to STDOUT and/or STDERR.  If you want to write the .AssetId information to STDOUT, then one possibility would be as follows:
jq -r ".[] | .AssetId" input.json

Output:
14462955
114385498
29715011
98253651

A more robust incantation would be: .[] | .AssetId? but your choice will depend on what you want if there is no key named "AssetId".

A: you have a couple of choices to do the loop itself. you can apply peak's awesome answer and wrap a shell loop around it. replace echo with the script you want to run.
via xargs
$ jq -r ".[] | .AssetId" input.json | xargs -n1 echo  # this would print
14462955
114385498
29715011
98253651

via raw loop
$ for i in $(jq -r ".[] | .AssetId" input.json)
  do
    echo $i
  done
14462955
114385498
29715011
98253651

A: An alternative using map:
jq "map ( .AssetId ) | .[]"

A: You can also do it via this command.
jq ".[].AssetId" input.json

if array like be that which is in my case
{
   "resultCode":0,
   "resultMsg":"SUCCESS",
   "uniqueRefNo":"111222333",
   "list":[
      {
         "cardType":"CREDIT CARD",
         "isBusinessCard":"N",
         "memberName":"Bank A",
         "memberNo":10,
         "prefixNo":404591
      },
      {
         "cardType":"DEBIT CARD",
         "isBusinessCard":"N",
         "memberName":"Bank A",
         "memberNo":10,
         "prefixNo":407814
      },
      {
         "cardType":"CREDIT CARD",
         "isBusinessCard":"N",
         "memberName":"Bank A",
         "memberNo":10,
         "prefixNo":413226
      }
   ]
}

you can get the prefixNo with below jq command.
jq ".list[].prefixNo" input.json

For more specific case on array iterating on jq you can check this blogpost

A: For your case  jq -r '.[].AssetId' should work
You can also use online JQ Parser : https://jqplay.org/

If you want to loop through the each value then can use below  :
for i in $(echo $api_response | jq -r ".[].AssetId")
  do
    echo echo $i
  done

redpajama_set_name: RedPajamaStackExchange


text:
Members of Forces Law- Specialist Military Law Solicitors
When it comes to military compensation claims, just like other employers, the Ministry of Defence (MoD) has a duty of care to its employees to provide a working environment that is as safe as possible, training that is adequate and appropriate, and equipment that is fit for purpose and correctly maintained.
However if you are serving member of HM Armed Forces and you suffer an injury because that duty of care had not been discharged, you could claim for compensation. The fact that you are serving in the UK military makes no difference to your right to claim compensation; neither does whether you were on or off duty when you were injured.
Military accidents and your career prospects
Suffering an injury whilst in the UK Armed Forces can have a greater effect on career prospects than in many other jobs. For instance, it could result in being assigned limited duties, downgraded in various ways or retired early and losing some pension rights. The physical effects of the injury are therefore just one of several effects any serving military personnel have to deal with.
Our accident solicitors have years of experience in dealing with military injury compensation claims and are extremely knowledgeable about the unique and complex bureaucracy of the military, the environment and ethos of the Armed Forces and how personnel and their families live. They have the ability to rapidly get hold of the records necessary to support your claim from a sometimes sluggish and unresponsive MoD. These records might include pertinent regulations, standing orders, the personal file of the person making the claim, unit and board of enquiry reports and land accident investigation reports.
Common types of military compensation claims
You have got to be physically very fit and well trained to be an effective member of the Armed Forces. But training and getting can give a chance for accidents to occur. The most common causes of military injuries include;
accidents in the course of training in the field
accidents during physical education training or adventure training
injuries resulting from road traffic accidents
medical negligence claims – when military medical staff fail to treat or diagnose you properly
Exposure to hazardous substances in any Armed Forces work environment can also give rise to military compensation claims.
In short, if you can show that an injury was sustained as a result of an accident caused by a third party, you could win your military compensation claim.
To claim compensation, must I have suffered physical injury?
No – claims for compensation are possible if you've suffered from Post Traumatic Stress Disorder (PTSD) or some other psychological disorders. Click here to read more about Military Post-Traumatic Stress Disorder Claims.
How our Military Claims Solicitors can help
Our specialist injury compensation claims solicitors can tell you if have a strong claim
In claiming compensation for you, we will remain aware that you might need to keep a good relationship with your unit
We can run your military compensation claim using a no win no fee agreement – so there's no need for you to worry about paying an expensive legal bill
Home and hospital visits are available if your injuries prevent you from travelling
Thinking of Making a Military Compensation Claim? Call us now
If you want to know how to claim injury compensation following an accident in the Armed Forces, get in touch with us today.
For FREE initial phone advice, and a FREE 1st appointment from expert military claims solicitors;
• Call our team now on FREEPHONE 0800 1404544 or
• Complete the enquiry box at the top of this page, or fill in the email contact form at the bottom of the page – for a reply by email or a call back at a time convenient to you


Kenya – feels far away from everything ?
The newspapers here are full of stories every day. It seems like the politicians of such a very young democracy are the real idols in Kenya. With scandals, affairs, money and fame. And many prominent people really want to be one of them.
I did some long series of 30 sec repeats yesterday and was feeling fine. After full disco (with African drums) right outside our hotelwindow on the full night Saturday I was happy to still fell fresh on Mondays workout.


text:
Princeton University Research: Versatile Printing Technology Builds, Erases Ultra-Tiny Structures
Princeton, NJ — Chris Emery reports that, to build the world's most cutting-edge nanotechnologies, engineers rely on lithography — a printing concept dating from the late 1700s that has evolved into an ultra-modern fabrication technology.
Now, a team of engineers from Princeton, the University of California-Los Angeles and IBM has developed a new nanolithography technique that promises greater flexibility than other methods by allowing engineers to create, analyze and erase nanoscale structures from a variety of materials.
The researchers used the technology, reported July 12 in the online journal Science Advances, to build structures less than 10 nanometers in diameter — for reference, a human hair is approximately 80,000 to 100,000 nanometers thick. The structures were so small they could only be visualized using an electron microscope.
The technique might one day be used to create anything from next-generation medical sensors and drug delivery devices to tiny lasers and better batteries.
"Fabrication of nanostructures of desired shape, structure and composition is one of the hottest areas of nanotechnology right now," said Daniel Steingart, an associate professor of mechanical and aerospace engineering and the Andlinger Center for Energy and the Environment at Princeton.
"Our new method combines several existing fabrication technologies to produce unprecedented flexibility to use in a variety of metals, build multiple types of nanostructures, and fabricate and erase those structures on the fly."
The team based their technique on electron beam nanolithography, a technology where nanoscale structures are typically deposited in layers. The layers are laid down using an electron-sensitive film called a "resist" that changes its chemical makeup when exposed to the beam.
Areas of the resist that aren't exposed to the beam are etched away, leaving the pattern drawn by the beam intact. Every new layer requires a new resist film to be applied over the previously etched layer, so the three-dimensional nanostructure is built up stepwise as the layers stack.
This beam-centered method offers greater flexibility than techniques that used a precut mask to produce shapes, as the electron beam can draw nearly any shape.
An analogy is the difference between painting words on a sign with a brush or using a precut stencil — the stencil can only produce words already cut into it, while freehand painting (electron beam lithography, in this case) can produce any word.
Current electron beam methods do, however, have some limitations. The necessity of building the layers in a stepwise fashion is slow and laborious, and the process must take place in a vacuum, which requires expensive machinery. Also, drawing on a resist film makes it difficult to fabricate alloy structures made of multiple metals.
The researchers sought to develop a method of electron beam lithography that could build nanostructures without using a resist film. To do this, they combined the beam technology with a technique for using electrical current to grow metals in a solution.
In their device, tiny metal electrodes made of gold, nickel or copper were attached to the wall of a tiny chamber filled with an electrolyte solution. To generate nanocrystals used to draw a desired shape, an electrical potential was applied across a pair of electrodes, and the electron beam was positioned between the electrodes.
The electrical potential caused the electrodes to release metal ions that turned into metal when they interacted with the electrons of the beam and deposited as nanocrystals on the side of the chamber.
The device was able to print alloys as well as "core-shell" nanostructures, where one type of metal forms a shell around a core of another type. Both structures are important for various applications in nanotechnology.
In addition to creating nanostructures, the researchers used the device to erase the structures, another advance that adds to the flexibility of the device.
"We can dissolve a shape previously deposited by scanning slowly over the existing nanostructures or increasing the current to the beam already irradiating a deposit," said Jeung Hun Park, an associate research scholar at Princeton and the IBM T. J. Watson Research Center who was lead author on the paper.
"The ability to erase a structure adds another factor of control to this technique, making it a highly versatile approach to fabricating nanostructures," Park said.
Park said the research team is now focusing on mapping the precise structure of the crystals formed by the technique, and how temperature and other parameters affect the crystalline structures. This will be important to optimizing the technology and building nanostructures with precisely defined materials.
The majority of Steingart's research focuses on battery technology but he said the current project was not focused on immediate applications. He said the work could very well lead to better understanding of structures that improve battery performance, but in the near term the technology is more useful for experimentation and testing.
"This is more about fundamental electrochemical and electrical processing," he said. "It is a way of saying if we had this kind of structure, how would it behave?"
Other authors on the paper were Suneel Kodambaka, of the Department of Materials Science and Engineering at the University of California-Los Angeles, and Frances M. Ross of IBM T. J. Watson Research Center.
The research was supported by the BP Carbon Mitigation Initiative and the National Science Foundation.


Binah B'emet, a new adventure in community engagement and investment in youth education, opened at Temple Emeth in the fall of 2016. It is the latest offering in Temple Emeth's seven-decade tradition of providing an engaging educational environment for Jewish children in the community and succeeds the three-year-old Ma'or program.
Binah B'emet, which can be translated as "knowledge or understanding and truth," or "knowledge at (Temple) Emeth," is a collaborative venture in cutting edge Jewish education. Binah B'emet is open to students in Pre-K through Grade 7, regardless of synagogue affiliation. Tuition through Grade 5 is included in Temple Emeth membership dues.
Binah B'emet emphasizes student-centered education – making the material relevant and connected to the students' lives and giving students opportunities to delve into areas of study of interest to them. The focus is on creating connections between people, between people and the environment, and between Jewish values and the contemporary world.
Binah B'emet extends beyond the traditional classroom to connect learning and living, and studying and doing, resulting in the creation of a community of lifelong learners and active members who are excited, fulfilled, and purposeful in their Jewish journeys. A key objective is to provide a relevant and meaningful experience for students through community engagement and strong identity development.
The curriculum is organized around monthly themes of study. Each theme incorporates relevant text study, Hebrew language, artistic expression, community service, relevant prayers, and ethical and moral perspectives on living Jewishly in the 21st century.
Binah B'emet extends study beyond the classroom with limmud leculam – learning for all. This multigenerational approach brings together adult education, prekindergarten classes, and community projects – engaging all ages and abilities in the theme of study, alongside or together with, elementary age children attending Binah B'emet.
Binah B'emet is held at Temple Emeth on Sunday mornings from 9:00 am to 12:00 pm for all grades. Check with Samara Katz, Director of Education, for the additional weekday schedule for Grades 2-5. Students in Grades 6-7 have the option to continue with Binah B'emet at Temple Emeth, or to attend Makor, the middle school of Hebrew College, located in Newton Centre.
Binah B'emet in the news!
Binah B'emet was featured in a July 2017 issue of The Jewish Advocate. Click here to read the article.
Gan Binah, a program for preschoolers ages 3-5, meets 16 Sunday sessions from 9:00 to 11:00 am. Click here for more information.
The program is under the leadership of Samara Katz, Director of Education, working with a team of teachers and Temple Emeth clergy.
Click here for the Binah B'emet brochure.
Binah B'emet Registration Form for 2018-2019, including tuition information for non-Temple Emeth members. Online tuition payment here.


text:
News > L-Soft Press Releases > Reseller Pricing on LISTSERV Solutions Available to All Customers
Reseller Pricing on LISTSERV® Solutions Available to All Customers
Customers can now choose whether or not to pay for account management
London, September, 12, 2008 – L-Soft, the company behind LISTSERV® – the original email list management software, which launched the industry in 1986 – introduced today a direct order channel that offers reseller pricing to the general public. This new service, called L-Soft Direct, targets customers who are already familiar with L-Soft's LISTSERV-brand mailing list software solutions and are willing to forgo traditional account servicing in exchange for reseller pricing.
"L-Soft Direct is to sales what opt-in is to marketing. Our customers can now choose whether or not to enter into an account management relationship and receive follow-up sales calls related to their LISTSERV solutions," said Eric Thomas, CEO of L-Soft. "The key difference is that L-Soft Direct gives you a discount for opting out rather than in."
With L-Soft Direct, any customer will receive the same discount as an authorised reseller when ordering the same yearly volume of products and services, plus a "perk": generally, a free license upgrade, instead of the free demo licenses issued to authorised resellers.
The only limitation for L-Soft Direct customers is that they will not receive value-added account management services. Customers needing live product demos, custom bid proposals, free technical consultations and other related services are advised to opt for the regular L-Soft sales process, in which a dedicated L-Soft representative is assigned to the customer's account.
L-Soft Direct purchases must be made from the resale office at L-Soft's headquarters. To learn more about L-Soft Direct products, discounts and rewards visit:
Read the story behind L-Soft Direct:
L-Soft, which was incorporated in 1994, is the only provider of LISTSERV® brand email list and opt-in email marketing software and hosting services for managing email newsletters, discussion groups and marketing campaigns. L-Soft's products serve more than 100 million list subscriptions. L-Soft celebrates the 15th anniversary of double opt-in support, first introduced in its pioneering LISTSERV email list management software.
L-Soft UK Press Contact
+44 (0)203-7555117 or +46-8-50709911


One enters the apartment through a delightful hallway completely painted to resemble a clearing in a wood. Cypress trees and oak-leafed branches create the base for a clear blue sky crossed by birds in flight. A mirror and a glass topped table and chairs provide discreet furnishing for this room with parquet flooring like the rest of the apartment. A door leads into the spacious sitting room furnished in tones of rust, red and green. A wonderful contrast of patterns between the curtains, the two armchairs and the three-seater sofa help to create a warm ambience. A large dining table to one side of the room seats six.
The window overlooks the river, the Ponte Vecchio on the left and the spectacular Loggiato degli Uffizi. A door connects the sitting room to a bedroom with twin beds with a small balcony on the River.
Opposite the sitting room is the spacious kitchen decorated in pink and white, with a table which provides ample working-space and a quick snack area. Continuing down the corridor, one comes to the first bathroom with bathtub and hand-shower, on the left. At the end of the passage, there are the two bedrooms. The master bed room on the right shares the same spectacular view as the living room and has a large double bed. The furnishings are in rich reds and pretty patterned prints. A very large built in wardrobe provides ample hanging space for clothes. The second bed-room with twin beds, is furnished in pretty pastel pinks and greens, faces south and overlooks the Via de' Bardi. It has an en-suite spacious bathroom with shower.
The apartment has an armoured door, central heating, air-conditioning, satellite TV, telephone (hi speed internet) and buzzer, gas stove, oven, dishwasher and washing machine and comes supplied with two sets of linen and towels. There is a lift and day-time porter service.


text:
Sophia Taylor Ramseyer Ali (San Diego, California, Estados Unidos; 7 de noviembre de 1995) es una actriz estadounidense. Es conocida principalmente por interpretar a Dr. Dahlia Qadri en Anatomía de Grey y a Fatin Jadmani en la serie de televisión The Wilds, además de Chloe Frazer en la versión filmica de Uncharted.

Vida personal
Ali es pakistano-americana. Aunque nació en San Diego, California, su familia en ese momento vivía en Dubái, así que cuando tenía 10 días, ella y su madre volaron de regreso a casa para estar con el padre de Ali. Después de unos cuatro años en Dubái, su familia se mudó a Texas. Cuando Ali tenía 19 años, se mudó a California para perseguir su sueño de convertirse en actriz.

Ha declarado que, si bien muchos de los miembros de su familia practican el Islam, su vida hogareña era flexible lo que le permitía seguir cualquier religión que quisiera.

Ali disfruta de varias formas de arte: fue bailarina hasta los 16 años y disfruta creando arte material, particularmente pintando con acuarelas y pintando muebles.

También es una ávida amante de los tatuajes y piensa en su cuerpo como un lienzo. Tiene varios tatuajes en su cuerpo, siendo el primero un trébol de cuatro hojas en sus costillas. Su tatuaje más significativo es el de una rosa sostenida por tres querubines en su rodilla izquierda que se hizo en memoria de su abuela.

Filmografía

Cine

Televisión

Web

Videos musicales

Referencias

Actrices de Estados Unidos del siglo XXI
Actrices de cine de Estados Unidos
Actrices de televisión de Estados Unidos

redpajama_set_name: RedPajamaWikipedia


text:
From Nonprofits to Open Source: Building Contributor-Centric Systems and Programs
Published Sep 24, 2020 • 6 min read
By Joel Worrall
Whether you're asking people to commit cash to your cause or code to your project, the lessons from open source and charitable giving can impact the way you approach and implement contributor programs. These lessons will also influence how you build and lead a community of contributors to scale and sustain your mission.
As a former nonprofit CTO and a New Relic customer, I now lead open source at New Relic, advocating for developers and building a community of open source maintainers who are building applications, integrations, and tools on the New Relic One platform.
Open source model
So, what do nonprofits and the open source community have to teach one another about building contributor-centric systems? Read on for a few takeaways about how contribution is the engine that propels both open source projects and nonprofit organizations.
What is a contributor-centric system?
A contributor-centric system includes technology and related processes built to support and align people in a sustained relationship with an organization that champions a mission. The resulting system enables a virtuous cycle of mutual service to a common cause.
Contributors don't give to the cause. They are a part of it.
Contributor-centric system
Nonprofit experience
In 2009, I started working at CURE International, becoming the first technologist at the charitable international relief organization that builds and operates surgical centers in developing world settings.
During my CURE International tenure, we experienced a massive transformation at what was then a 12-year-old organization. As we were addressing things like which country to build a hospital in next, there was no way to tell donors—whether they gave $50 or $50,000—who they were helping. We wanted to help donors get involved with the full-person care the organization provided.
The internet made it possible to drop the distance between these two groups—the donors and folks getting care. We created a platform to tell the stories of people we were serving, in real time, and we invited people to engage with these stories. In nonprofits, a contributor-centric platform like this moves the charitable conversation from what you (as the nonprofit) do that the donor supports to what you (as the community surrounding this cause) do to serve the mission together through your time, attention, and resources.
Nonprofit contributor-centric system
Moving from paper records to open source software
While at CURE International, one challenge the organization faced was a lack of electronic health records (EHR). Often, patients lived 300 km from healthcare providers, making long-term patient follow-up difficult.
Physicians and staff at the CURE Hospital, Kenya, load paper records onto a vehicle
We needed to replace paper records to get information to the field efficiently, and we needed a solution that leveraged what cloud technology could offer, even when the internet wasn't reliable. So a small team of software engineers built a modern, cloud-based healthcare information system (HIS).
At the time, there were other open source medical records systems, but not maintainer-friendly options, so we open-sourced our solution, HospitalRun. We engaged contributors from across the world by focusing on the developer experience of HospitalRun and inviting engineers to join us in advancing a free EHR/HIS software built specifically for developing world healthcare.
Building a contributor-centric system
As I reflect on my time at CURE International, I've developed a few principles that you might consider when creating a mission-aligned experience that invites contribution:
Remember who you're serving and why. Even though you're building a system to support secondary customers (i.e., contributors), you need to keep your core mission at the forefront of your system.
Communicate the mission clearly. I have found that conviction in the mission invites contribution. Perhaps counter-intuitively, casting the broadest net possible is unproductive when it comes to contributor engagement. Clarity of purpose demonstrates leadership in what it's for and who it's for.
Create norms with options. It might seem unintuitive, but contributors want to be told what to do and what normative behavior looks like in your community. People also want to make their own calls about how they engage once they know what most community members do. Both norms and options are needed.
Contributor engagement is a primary requirement. Contributor Experience is your key feature. Bake a sense of openness and welcome to the mission into any portion of the user experience possible. By treating every interaction as an opportunity to invite contributors, you increase the chance to find self-identified others and build community.
Make experiences personal. Technology that enhances human connection is the goal. We're not out to replace our work's personal nature with software but to shrink the gap between the contributor and the impact. Technology enables the key to contributor engagement: person-to-person interaction.
The relationship is the incentive. Recognition and rewards are useful, but they need to focus on tribal identity. Building a contributor community requires a higher order incentive than material prizes. Offering a sense of belonging to and a voice in the mission is the sticky incentive for a contributor-centric system. Conversely, transactional relationships center on the value of the goods exchanged.
Here are three questions to ask and answer on the journey to creating a contributor-centric system.
Are you communicating an opportunity that invites engagement?
What technology platform can you build/implement to invite contributors to grow in their direct participation in your mission?
How can you use technology to enhance your person-to-person engagement?
I hope we can all get smarter through dialog. Connect with me @tangollama.
Joel Worrall is the Director of Open Source and Developer Advocacy at New Relic. After 20 years as a software developer, product manager, and accidental marketer, he still writes code every week. Joel is passionate about how New Relic's programmable platform can make a positive difference in the world through open source and partnering with a vibrant and inclusive developer community.
How to monitor with Prometheus
What is Prometheus?


text:
Seeing From Both Sides
By Riley M. Lorimer ('08) in the Spring 2008 Issue
Four months in Central Asia put Miles Hansen on a path that wasn't on his map.
Raised minutes away from some of Utah's best snow, Miles C. Hansen ('08) has been skiing the local powder since he was 6. During winter semester 2006, however, Hansen made his first runs of the season at Mountain Ski Base Karakol, high in the mountains of Kyrgyzstan.
Hansen, an international studies major, never had plans to be in Kyrgyzstan, much less ski there. Originally, he had applied for an internship with the International Trade Center (ITC) in Geneva, Switzerland. But BYU's Kennedy Center for International Studies called him back to ask if he'd apply for another ITC internship—one that had opened up in Kyrgyzstan.
Hansen readily agreed. And then he went to locate Kyrgyzstan on a map.
Months later, Hansen moved to Kyrgyzstan—which, by the way, is in Central Asia—to begin his internship. At the ITC regional office in Bishkek, Hansen made use of the Russian he learned on a mission to St. Petersburg as he translated documents into Russian and English. The documents pertained to the development of the fruit- and vegetable-processing industry in Central Asia, which the ITC is striving to bolster. "The economic incentive exists,"Hansen explains, "but the necessary infrastructure and expertise are lacking."According to Hansen, the ITC's project will not only boost Kyrgyzstan's national economy but provide lower-income agrarian families with a viable livelihood.
By the time his internship ended, Hansen had traveled through much of Kyrgyzstan and felt compelled to continue his exploration of the region. From Kyrgyzstan, he flew to neighboring Tajikistan, where he stayed for three weeks with friends, friends of friends, and their cousins-three-times-removed. Traveling alone in an unfamiliar place, Hansen interacted with people from every walk of life, an experience he says afforded him invaluable perspective.
As he traveled, he was astounded by the generosity of the Tajikistani people. "The whole time I was in Tajikistan,"he says, "never once did I pay for food, and never once did I pay for lodging."And whenever he offered to pay, he'd get the same response: "You are a guest in our country, and how we treat guests is how we treat God."
While lodging in Khorog, a small village high in the Pamir Mountains, Hansen was invited to attend a Muslim prayer meeting. He sat apart while his hosts performed their prayers and was then invited to join the group at the feet of the village spiritual leader, or caliph, who proceeded to teach his people—and Hansen.
"I was taught about the importance of service, especially imparting what God has given me to my neighbor,"says Hansen. "I was taught about the importance of love. . . . The caliph said that if we will unconditionally love our enemies, then eventually our love will turn their hate to respect and then love in return."
The caliph's sermon on charity and the genuine goodness of the Tajikistani people touched Hansen so deeply that, upon his return to BYU, he changed his academic emphasis to Middle Eastern studies. He is now taking his second year of Farsi, the language spoken in Tajikistan as well as Iran and several other countries. With his international experience, Hansen hopes eventually to work in government service.
"I'd love to work for the state department and live abroad,"he says, "I want to work on strengthening ties between America and the Persian world. If you can see things from both sides, the solutions become more apparent."
Dekker's Boys
An alumna teaches high school at Rikers Island, one of the largest jail complexes in the world, with compassion.
Post-Lecture Post
BYU students' gratitude for learning opportunities took a lecturer from New York University by surprise.
Students Solve Dairy's Compost Woes
BYU Dairy manager Karl B. Ritchie was faced with an 18,000-ton dung dilemma.


text:
package android.view;

import android.annotation.NonNull;
import android.util.SparseArray;
import com.android.internal.util.XmlUtils;

import android.annotation.XmlRes;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.Bitmap;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

/**
 * Represents an icon that can be used as a mouse pointer.
 *

 * Pointer icons can be provided either by the system using system types,
 * or by applications using bitmaps or application resources.
 *

 */
public final class PointerIcon implements Parcelable {
    private static final String TAG = "PointerIcon";

    /** {@hide} Type constant: Custom icon with a user-supplied bitmap. */
    public static final int TYPE_CUSTOM = -1;

    /** Type constant: Null icon.  It has no bitmap. */
    public static final int TYPE_NULL = 0;

    /** Type constant: no icons are specified. If all views uses this, then falls back
     * to the default type, but this is helpful to distinguish a view explicitly want
     * to have the default icon.
     * @hide
     */
    public static final int TYPE_NOT_SPECIFIED = 1;

    /** Type constant: Arrow icon.  (Default mouse pointer) */
    public static final int TYPE_ARROW = 1000;

    /** {@hide} Type constant: Spot hover icon for touchpads. */
    public static final int TYPE_SPOT_HOVER = 2000;

    /** {@hide} Type constant: Spot touch icon for touchpads. */
    public static final int TYPE_SPOT_TOUCH = 2001;

    /** {@hide} Type constant: Spot anchor icon for touchpads. */
    public static final int TYPE_SPOT_ANCHOR = 2002;

    // Type constants for additional predefined icons for mice.
    /** Type constant: context-menu. */
    public static final int TYPE_CONTEXT_MENU = 1001;

    /** Type constant: hand. */
    public static final int TYPE_HAND = 1002;

    /** Type constant: help. */
    public static final int TYPE_HELP = 1003;

    /** Type constant: wait. */
    public static final int TYPE_WAIT = 1004;

    /** Type constant: cell. */
    public static final int TYPE_CELL = 1006;

    /** Type constant: crosshair. */
    public static final int TYPE_CROSSHAIR = 1007;

    /** Type constant: text. */
    public static final int TYPE_TEXT = 1008;

    /** Type constant: vertical-text. */
    public static final int TYPE_VERTICAL_TEXT = 1009;

    /** Type constant: alias (indicating an alias of/shortcut to something is
      * to be created. */
    public static final int TYPE_ALIAS = 1010;

    /** Type constant: copy. */
    public static final int TYPE_COPY = 1011;

    /** Type constant: no-drop. */
    public static final int TYPE_NO_DROP = 1012;

    /** Type constant: all-scroll. */
    public static final int TYPE_ALL_SCROLL = 1013;

    /** Type constant: horizontal double arrow mainly for resizing. */
    public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014;

    /** Type constant: vertical double arrow mainly for resizing. */
    public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015;

    /** Type constant: diagonal double arrow -- top-right to bottom-left. */
    public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016;

    /** Type constant: diagonal double arrow -- top-left to bottom-right. */
    public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017;

    /** Type constant: zoom-in. */
    public static final int TYPE_ZOOM_IN = 1018;

    /** Type constant: zoom-out. */
    public static final int TYPE_ZOOM_OUT = 1019;

    /** Type constant: grab. */
    public static final int TYPE_GRAB = 1020;

    /** Type constant: grabbing. */
    public static final int TYPE_GRABBING = 1021;

    // OEM private types should be defined starting at this range to avoid
    // conflicts with any system types that may be defined in the future.
    private static final int TYPE_OEM_FIRST = 10000;

    /** The default pointer icon. */
    public static final int TYPE_DEFAULT = TYPE_ARROW;

    private static final PointerIcon gNullIcon = new PointerIcon(TYPE_NULL);
    private static final SparseArray<PointerIcon> gSystemIcons = new SparseArray<PointerIcon>();
    private static boolean sUseLargeIcons = false;

    private final int mType;
    private int mSystemIconResourceId;
    private Bitmap mBitmap;
    private float mHotSpotX;
    private float mHotSpotY;
    // The bitmaps for the additional frame of animated pointer icon. Note that the first frame
    // will be stored in mBitmap.
    private Bitmap mBitmapFrames[];
    private int mDurationPerFrame;

    private PointerIcon(int type) {
        mType = type;
    }

    /**
     * Gets a special pointer icon that has no bitmap.
     *
     * @return The null pointer icon.
     *
     * @see #TYPE_NULL
     * @hide
     */
    public static PointerIcon getNullIcon() {
        return gNullIcon;
    }

    /**
     * Gets the default pointer icon.
     *
     * @param context The context.
     * @return The default pointer icon.
     *
     * @throws IllegalArgumentException if context is null.
     * @hide
     */
    public static PointerIcon getDefaultIcon(@NonNull Context context) {
        return getSystemIcon(context, TYPE_DEFAULT);
    }

    /**
     * Gets a system pointer icon for the given type.
     * If typeis not recognized, returns the default pointer icon.
     *
     * @param context The context.
     * @param type The pointer icon type.
     * @return The pointer icon.
     *
     * @throws IllegalArgumentException if context is null.
     */
    public static PointerIcon getSystemIcon(@NonNull Context context, int type) {
        if (context == null) {
            throw new IllegalArgumentException("context must not be null");
        }

        if (type == TYPE_NULL) {
            return gNullIcon;
        }

        PointerIcon icon = gSystemIcons.get(type);
        if (icon != null) {
            return icon;
        }

        int typeIndex = getSystemIconTypeIndex(type);
        if (typeIndex == 0) {
            typeIndex = getSystemIconTypeIndex(TYPE_DEFAULT);
        }

        int defStyle = sUseLargeIcons ?
                com.android.internal.R.style.LargePointer : com.android.internal.R.style.Pointer;
        TypedArray a = context.obtainStyledAttributes(null,
                com.android.internal.R.styleable.Pointer,
                0, defStyle);
        int resourceId = a.getResourceId(typeIndex, -1);
        a.recycle();

        if (resourceId == -1) {
            Log.w(TAG, "Missing theme resources for pointer icon type " + type);
            return type == TYPE_DEFAULT ? gNullIcon : getSystemIcon(context, TYPE_DEFAULT);
        }

        icon = new PointerIcon(type);
        if ((resourceId & 0xff000000) == 0x01000000) {
            icon.mSystemIconResourceId = resourceId;
        } else {
            icon.loadResource(context, context.getResources(), resourceId);
        }
        gSystemIcons.append(type, icon);
        return icon;
    }

    /**
     * Updates wheter accessibility large icons are used or not.
     * @hide
     */
    public static void setUseLargeIcons(boolean use) {
        sUseLargeIcons = use;
        gSystemIcons.clear();
    }

    /**
     * Creates a custom pointer icon from the given bitmap and hotspot information.
     *
     * @param bitmap The bitmap for the icon.
     * @param hotSpotX The X offset of the pointer icon hotspot in the bitmap.
     *        Must be within the [0, bitmap.getWidth()) range.
     * @param hotSpotY The Y offset of the pointer icon hotspot in the bitmap.
     *        Must be within the [0, bitmap.getHeight()) range.
     * @return A pointer icon for this bitmap.
     *
     * @throws IllegalArgumentException if bitmap is null, or if the x/y hotspot
     *         parameters are invalid.
     */
    public static PointerIcon create(@NonNull Bitmap bitmap, float hotSpotX, float hotSpotY) {
        if (bitmap == null) {
            throw new IllegalArgumentException("bitmap must not be null");
        }
        validateHotSpot(bitmap, hotSpotX, hotSpotY);

        PointerIcon icon = new PointerIcon(TYPE_CUSTOM);
        icon.mBitmap = bitmap;
        icon.mHotSpotX = hotSpotX;
        icon.mHotSpotY = hotSpotY;
        return icon;
    }

    /**
     * Loads a custom pointer icon from an XML resource.
     *

     * The XML resource should have the following form:
     *
     * <?xml version="1.0" encoding="utf-8"?>
     * <pointer-icon xmlns:android="http://schemas.android.com/apk/res/android"
     *   android:bitmap="@drawable/my_pointer_bitmap"
     *   android:hotSpotX="24"
     *   android:hotSpotY="24" />
     *
     *

     *
     * @param resources The resources object.
     * @param resourceId The resource id.
     * @return The pointer icon.
     *
     * @throws IllegalArgumentException if resources is null.
     * @throws Resources.NotFoundException if the resource was not found or the drawable
     * linked in the resource was not found.
     */
    public static PointerIcon load(@NonNull Resources resources, @XmlRes int resourceId) {
        if (resources == null) {
            throw new IllegalArgumentException("resources must not be null");
        }

        PointerIcon icon = new PointerIcon(TYPE_CUSTOM);
        icon.loadResource(null, resources, resourceId);
        return icon;
    }

    /**
     * Loads the bitmap and hotspot information for a pointer icon, if it is not already loaded.
     * Returns a pointer icon (not necessarily the same instance) with the information filled in.
     *
     * @param context The context.
     * @return The loaded pointer icon.
     *
     * @throws IllegalArgumentException if context is null.
     * @hide
     */
    public PointerIcon load(@NonNull Context context) {
        if (context == null) {
            throw new IllegalArgumentException("context must not be null");
        }

        if (mSystemIconResourceId == 0 || mBitmap != null) {
            return this;
        }

        PointerIcon result = new PointerIcon(mType);
        result.mSystemIconResourceId = mSystemIconResourceId;
        result.loadResource(context, context.getResources(), mSystemIconResourceId);
        return result;
    }

    /** @hide */
    public int getType() {
        return mType;
    }

    public static final Parcelable.Creator<PointerIcon> CREATOR
            = new Parcelable.Creator<PointerIcon>() {
        public PointerIcon createFromParcel(Parcel in) {
            int type = in.readInt();
            if (type == TYPE_NULL) {
                return getNullIcon();
            }

            int systemIconResourceId = in.readInt();
            if (systemIconResourceId != 0) {
                PointerIcon icon = new PointerIcon(type);
                icon.mSystemIconResourceId = systemIconResourceId;
                return icon;
            }

            Bitmap bitmap = Bitmap.CREATOR.createFromParcel(in);
            float hotSpotX = in.readFloat();
            float hotSpotY = in.readFloat();
            return PointerIcon.create(bitmap, hotSpotX, hotSpotY);
        }

        public PointerIcon[] newArray(int size) {
            return new PointerIcon[size];
        }
    };

    public int describeContents() {
        return 0;
    }

    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mType);

        if (mType != TYPE_NULL) {
            out.writeInt(mSystemIconResourceId);
            if (mSystemIconResourceId == 0) {
                mBitmap.writeToParcel(out, flags);
                out.writeFloat(mHotSpotX);
                out.writeFloat(mHotSpotY);
            }
        }
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }

        if (other == null || !(other instanceof PointerIcon)) {
            return false;
        }

        PointerIcon otherIcon = (PointerIcon) other;
        if (mType != otherIcon.mType
                || mSystemIconResourceId != otherIcon.mSystemIconResourceId) {
            return false;
        }

        if (mSystemIconResourceId == 0 && (mBitmap != otherIcon.mBitmap
                || mHotSpotX != otherIcon.mHotSpotX
                || mHotSpotY != otherIcon.mHotSpotY)) {
            return false;
        }

        return true;
    }

    private void loadResource(Context context, Resources resources, @XmlRes int resourceId) {
        final XmlResourceParser parser = resources.getXml(resourceId);
        final int bitmapRes;
        final float hotSpotX;
        final float hotSpotY;
        try {
            XmlUtils.beginDocument(parser, "pointer-icon");

            final TypedArray a = resources.obtainAttributes(
                    parser, com.android.internal.R.styleable.PointerIcon);
            bitmapRes = a.getResourceId(com.android.internal.R.styleable.PointerIcon_bitmap, 0);
            hotSpotX = a.getDimension(com.android.internal.R.styleable.PointerIcon_hotSpotX, 0);
            hotSpotY = a.getDimension(com.android.internal.R.styleable.PointerIcon_hotSpotY, 0);
            a.recycle();
        } catch (Exception ex) {
            throw new IllegalArgumentException("Exception parsing pointer icon resource.", ex);
        } finally {
            parser.close();
        }

        if (bitmapRes == 0) {
            throw new IllegalArgumentException("<pointer-icon> is missing bitmap attribute.");
        }

        Drawable drawable;
        if (context == null) {
            drawable = resources.getDrawable(bitmapRes);
        } else {
            drawable = context.getDrawable(bitmapRes);
        }
        if (drawable instanceof AnimationDrawable) {
            // Extract animation frame bitmaps.
            final AnimationDrawable animationDrawable = (AnimationDrawable) drawable;
            final int frames = animationDrawable.getNumberOfFrames();
            drawable = animationDrawable.getFrame(0);
            if (frames == 1) {
                Log.w(TAG, "Animation icon with single frame -- simply treating the first "
                        + "frame as a normal bitmap icon.");
            } else {
                // Assumes they have the exact duration.
                mDurationPerFrame = animationDrawable.getDuration(0);
                mBitmapFrames = new Bitmap[frames - 1];
                final int width = drawable.getIntrinsicWidth();
                final int height = drawable.getIntrinsicHeight();
                for (int i = 1; i < frames; ++i) {
                    Drawable drawableFrame = animationDrawable.getFrame(i);
                    if (!(drawableFrame instanceof BitmapDrawable)) {
                        throw new IllegalArgumentException("Frame of an animated pointer icon "
                                + "must refer to a bitmap drawable.");
                    }
                    if (drawableFrame.getIntrinsicWidth() != width ||
                        drawableFrame.getIntrinsicHeight() != height) {
                        throw new IllegalArgumentException("The bitmap size of " + i + "-th frame "
                                + "is different. All frames should have the exact same size and "
                                + "share the same hotspot.");
                    }
                    mBitmapFrames[i - 1] = ((BitmapDrawable)drawableFrame).getBitmap();
                }
            }
        }
        if (!(drawable instanceof BitmapDrawable)) {
            throw new IllegalArgumentException("<pointer-icon> bitmap attribute must "
                    + "refer to a bitmap drawable.");
        }

        // Set the properties now that we have successfully loaded the icon.
        mBitmap = ((BitmapDrawable)drawable).getBitmap();
        mHotSpotX = hotSpotX;
        mHotSpotY = hotSpotY;
    }

    private static void validateHotSpot(Bitmap bitmap, float hotSpotX, float hotSpotY) {
        if (hotSpotX < 0 || hotSpotX >= bitmap.getWidth()) {
            throw new IllegalArgumentException("x hotspot lies outside of the bitmap area");
        }
        if (hotSpotY < 0 || hotSpotY >= bitmap.getHeight()) {
            throw new IllegalArgumentException("y hotspot lies outside of the bitmap area");
        }
    }

    private static int getSystemIconTypeIndex(int type) {
        switch (type) {
            case TYPE_ARROW:
                return com.android.internal.R.styleable.Pointer_pointerIconArrow;
            case TYPE_SPOT_HOVER:
                return com.android.internal.R.styleable.Pointer_pointerIconSpotHover;
            case TYPE_SPOT_TOUCH:
                return com.android.internal.R.styleable.Pointer_pointerIconSpotTouch;
            case TYPE_SPOT_ANCHOR:
                return com.android.internal.R.styleable.Pointer_pointerIconSpotAnchor;
            case TYPE_HAND:
                return com.android.internal.R.styleable.Pointer_pointerIconHand;
            case TYPE_CONTEXT_MENU:
                return com.android.internal.R.styleable.Pointer_pointerIconContextMenu;
            case TYPE_HELP:
                return com.android.internal.R.styleable.Pointer_pointerIconHelp;
            case TYPE_WAIT:
                return com.android.internal.R.styleable.Pointer_pointerIconWait;
            case TYPE_CELL:
                return com.android.internal.R.styleable.Pointer_pointerIconCell;
            case TYPE_CROSSHAIR:
                return com.android.internal.R.styleable.Pointer_pointerIconCrosshair;
            case TYPE_TEXT:
                return com.android.internal.R.styleable.Pointer_pointerIconText;
            case TYPE_VERTICAL_TEXT:
                return com.android.internal.R.styleable.Pointer_pointerIconVerticalText;
            case TYPE_ALIAS:
                return com.android.internal.R.styleable.Pointer_pointerIconAlias;
            case TYPE_COPY:
                return com.android.internal.R.styleable.Pointer_pointerIconCopy;
            case TYPE_ALL_SCROLL:
                return com.android.internal.R.styleable.Pointer_pointerIconAllScroll;
            case TYPE_NO_DROP:
                return com.android.internal.R.styleable.Pointer_pointerIconNodrop;
            case TYPE_HORIZONTAL_DOUBLE_ARROW:
                return com.android.internal.R.styleable.Pointer_pointerIconHorizontalDoubleArrow;
            case TYPE_VERTICAL_DOUBLE_ARROW:
                return com.android.internal.R.styleable.Pointer_pointerIconVerticalDoubleArrow;
            case TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW:
                return com.android.internal.R.styleable.
                        Pointer_pointerIconTopRightDiagonalDoubleArrow;
            case TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW:
                return com.android.internal.R.styleable.
                        Pointer_pointerIconTopLeftDiagonalDoubleArrow;
            case TYPE_ZOOM_IN:
                return com.android.internal.R.styleable.Pointer_pointerIconZoomIn;
            case TYPE_ZOOM_OUT:
                return com.android.internal.R.styleable.Pointer_pointerIconZoomOut;
            case TYPE_GRAB:
                return com.android.internal.R.styleable.Pointer_pointerIconGrab;
            case TYPE_GRABBING:
                return com.android.internal.R.styleable.Pointer_pointerIconGrabbing;
            default:
                return 0;
        }
    }
}

redpajama_set_name: RedPajamaGithub


1580s, from Middle French exigence, from Latin exigentia "urgency," from exigentem (nominative exigens), from exigere "to demand, require; drive out" (see exact (v.)). Related: Exigencies (1650s).
Instantly, he was all alert to meet the exigencies of the situation.
The exigencies of practical affairs will not allow this endless balancing.
It has to do with conditioning the human being for the exigencies of life in peace or in war.
She did not know how to defend herself from their importunities, insolence and exigencies.
The soldier has all that he can do to attend to the exigencies of the battle.
For, dear soul, it would be so hard to explain to her the exigencies of school form.
But the exigencies of the pursuit might have brought about delay if she attempted to confuse her track.
I'll back you up in everything that is in accordance with the exigencies of the service.
Exigencies create the necessary ability to meet and conquer them.


8107/2016 26/10/16 ADQ. DE HORMIGÓN ELABORADO P/ CALLE DOMINGO GONZALEZ, Bº 6º C.E.C.
4682/2016 01/07/16 ADQ. DE MATERIALES ELÉCTRICOS PARA NUEVO H.C.D.
4083/2016 28/06/16 ADQ. DE SILLAS PARA H.C.D.
902/2016 19/02/16 ADQ. HORMIGON ELABORADO PARA PAVIMENTACIÓN CALLE J. MANZANARES, Bº 6º C.E.C.


This is actually related to my Something New Challenge. But more on that on Wednesday. At the moment, I truly am desperate to get my hands on a copy of Jeannette Walls' "The Silver Star". I need to have a copy like, NOW. I know I can read pretty fast compared to most people that I know, but I need to finish this book before Thursday for a book club meeting. Gulp!
Jeannette Walls has written a heartbreaking and redemptive novel about an intrepid girl who challenges the injustice of the adult world—a triumph of imagination and storytelling.
What do you think of it? Sounds a little bit heavy, but I want to know what happens!
Sounds good! Let us know what you think of it. Oh, and Griffin is gorgeous!
I loved it! Finished it and realised I'd stayed up until 3am. Oops! :) Thanks Udita!


In a post on his Twitter account, now no longer available, Moore has revealed to be in the middle of the screenplay adaptation for Hulu. There are no details regarding the episode, not even the director, cast or start date at this time.
Started in November 2016, Motor Girl " was created, written and drawn by Moore for ten issues, published by Abstract Studio before coming to an end in November 2017. The series follows Sam Lockyear, a veteran of the Iraq war suffering from the disorder post-traumatic stress disorder who lives his civil life as a mechanic in the american southwest. Sam converses with his imaginary friend, Mike, a huge gorilla. When the duo learns that the place where he worked Sam might be for sale, the two have to worry about the sudden arrival of the extraterrestrials.
This is the second title created by Moore is currently in development for a medium, given that Moore is also working on the adaptation of Strangers in Paradise.


According to a recent U.S. Department of Energy study, there is so much excess energy on the U.S. grid nightly that if every light-duty car and truck in America today used plug-in hybrid technology, 73 percent of them could be plugged in and "fueled" without constructing a single new power plant. So much for the myth that electric vehicles will cause more emissions.
The most interesting thing about this revelation is that the infrastructure is already there. We don't have to worry about supporting plug-in vehicles with refueling stations or special sources of energy. Every home is a source of fuel. The grid is more than happy to accommodate the extra load. Seems like a pretty good way to reduce oil consumption, drop emissions, and save a buck.


The property: A newly built four-bedroom home, outfitted with lots of luxurious imported materials.
The history: The sellers bought the property in 2013 and quickly went about rebuilding from the ground up. They began construction on the current structure in January of 2014, and completed it in March of this year. The sellers went all-out with Italian porcelain and wood. They even brought contractors over from Europe to install it all. Now, they're unloading the house so they can move to a more central location.
The fate: The buyer will be moving in with his family. He sees the property as an investment. Although the square footage of this house is a little on the low side relative to its sale price, the expensive materials made up the difference.
The sale: The sellers had the house listed for three months with another agent, but grew frustrated when the property didn't sell. Shortly after they hired a new agent, but before they could list the property again, the eventual buyer got in touch. They negotiated a price $88,000 under asking.
Victor Ochei is the former speaker of the Delta State Assembly, a legislative body that represents Delta State, an oil-producing region in southern Nigeria. He's also a member of a much-talked-about but little-seen demographic: foreign investors who buy luxury Toronto real estate by the handful.
Ochei and his wife, Hanatu, own at least three condos in Aura, one of Toronto's tallest and priciest condo towers. One of those units, a penthouse on the 78th floor, went on the market late last month for $3,688,888. It's a 3,100-square-foot suite with two bedrooms and a den, plus two parking spaces and a storage locker on a lower floor. Ochei closed on the property in March 2016—meaning he owned the unit for just under three months before putting it up for sale. His original purchase price was $2,499,115. It's not clear whether he, or anyone else, has ever lived there.
Ochei closed on his other two Aura condos in 2015. One of them, a smaller unit on the building's 56th floor, is titled in Hanatu's name. The couple bought it for $1,002,832. The other unit, a 77th-floor penthouse, originally cost Ochei $2,929,524.
It's possible the couple bought all three condos at roughly the same time, during the pre-construction phase of Aura's development. Ochei couldn't be reached for confirmation, and his local real estate agent declined comment.
Ochei was first elected to the Delta State Assembly in 2003. On top of his political activities, he claims to be the founder of an engineering and construction company called Davnotch Nigeria.
In 2009, while Ochei was a member of the Assembly, Davnotch won a lucrative government contract related to the construction of a power plant in Nigeria. According to reports in the Nigerian press, the power plant was never completed and much of the funding is unaccounted for. The Financial Times reports that the U.K.'s Serious Fraud Office is investigating the possibility that the Rolls-Royce corporation bribed Nigerian officials in exchange for the right to supply gas turbines for the project. Ochei has denied any wrongdoing. On his website, he claims to have divested all his Davnotch holdings in 2011, the same year he became speaker at the Delta State Assembly. He resigned his position in 2014.


text:
Q: Moving picture in C# I need to write a code which moves a picture1 to the top of the screen after a click of a button. After pictire1 reaches the top 20 pixels of the screen must become invisible and make picture2 visible. This is my wrong code:
private void button1_Click(object sender, EventArgs e)
{
    int b = pictureBox1.Top;

    for (int i = b; i < 20; i--)
    {
        pictureBox1.Top = i;
        System.Threading.Thread.Sleep(20);
    }

    if (pictureBox1.Top < 20)
    {
        pictureBox1.Visible = false;
        pictureBox2.Visible = true;
    }
}

Any ideas how can it be fixed?

A: This seems wrong:
for (int i = b; i < 20; i--)
{
    pictureBox1.Top = i;
    System.Threading.Thread.Sleep(20);
}

This would loop while i < 20. From your code, however, one can see that if Top == 20 is reached, you'd like to show another picture. So I guess that should be i >= 20 and the if should be Top <= 20.
Also, you are not refreshing your display. Due to the loop and the Sleep, there will be no UI updates.
Add this, as Cobra_Fast suggests before the Sleep:
this.Invalidate();
this.Refresh();

To sum it up, the following should work (I've also slightly modified the code to make it clearer):
private void button1_Click(object sender, EventArgs e)
{
    while (pictureBox1.Top >= 20)
    {
        pictureBox1.Top = pictureBox1.Top - 1;
        this.Invalidate();
        this.Refresh();
        System.Threading.Thread.Sleep(20);
    }

    // Here you KNOW that the picture box is at y-position 20, so there's not need
    // for the IF
    pictureBox1.Visible = false;
    pictureBox2.Visible = true;
}

The problem with the above code is that it blocks the UI. To keep it responsive, I'd use a timer as follows:
private void button1_Click(object sender, EventArgs e)
{
    // Create a threaded timer
    System.Timers.Timer animationTimer = new System.Timers.Timer();
    animationTimer.Interval = 20;
    animationTimer.AutoReset = false; // Only one Ping! We'll activate it if necessary
    animationTimer.Elapsed += new ElapsedEventHandler(AnimationStep);
    animationTimer.Start();

    // Disable the button also, because we don't want another timer instance to
    // interfere with our running animation
    button1.Enabled = false;
}

Then, create the event that's called when the timer fires:
private void AnimationStep(object source, ElapsedEventArgs e)
{
    // The following code needs to be executed in the context of the UI thread.
    // We need to use this.Invoke in Forms or this.Dispatcher.Invoke in WPF
    this.Invoke((Action)delegate()
    {
        // Move picture. Note that we don't need to update the display here
        // because the UI thread gets time to do its work while the timer waits
        // to fire below
        if (pictureBox1.Top > 20)
            pictureBox1.Top--;

        // Show other picture maybe. I use <= here because initially, the
        // position of the picture box may already smaller than 20.
        if (pictureBox1.Top <= 20)
        {
            pictureBox1.Visible = false;
            pictureBox2.Visible = true;
        }

        // Or let the timer fire again if we still need to animate
        else
        {
            (source as System.Timers.Timer).Start();
        }
    }
}

This works as follows: A timer is created that fires once after 20ms. It then moves the picture up one pixel and then either shows the other picture if the animation is finished or starts the timer again for moving the picture up another pixel.
This keeps the UI responsive and still allows you to animate your picture. The downside is, the animation may not be as smooth as you might want it to be in case your windows is moved or other "work" needs be done by the UI thread.

A: What if initially b is greater than 20? The loop won't run because the condition in the loop is that i < 20. Because the loop is not ran, nothing will ever happen.
Consider changing the condition in your loop. You probably want the picture to move up, as you're reducing the Top-property. Let's say that initially the Top of pictureBox1 is 40. Following code will work:
while(pictureBox1.Top >= 20)
{
    pictureBox1.Top--;
    System.Threading.Thread.Sleep(20);
    Invalidate();
    Refresh();
}

Since the Top is now less than 20, the if-statement can be omitted and you can just call:
pictureBox1.Visible = false;
pictureBox2.Visible = true;

Complete code:
while(pictureBox1.Top >= 20)
{
    pictureBox1.Top--;
    System.Threading.Thread.Sleep(20);
    Invalidate();
    Refresh();
}

pictureBox1.Visible = false;
pictureBox2.Visible = true;

A: After the pictureBox1.Top assignment, call:
this.Invalidate();
this.Refresh();

Assuming you're working with WinForms.


text:
How Kashmiri militants devoured their own in flawed struggl...| MENAFN.COM
How Kashmiri militants devoured their own in flawed struggle for Azadi
By Ahmed Ali Fayyaz
New Delhi, Jan 15: Senior separatist leader Abdul Gani Lone, Jamaat-e-Islami backed lawyer Mian Abdul Qayoom and human rights activist Hriday Nath Wanchoo were among the 23 Kashmiris who were nominated as 'Ministers by the Jammu and Kashmir Liberation Front (JKLF) Chairman, Amanullah Khan, in 1990.
One of the Pakistan-based founders of JKLF, Amanullah Khan, who was wanted in India for the diplomat Ravinder Mhatre's kidnapping and murder in Birmingham, announced the formation of 'Interim Government of the Independent State of Jammu and Kashmir' at a Press conference at Muzaffarabad Press Club in Pakistan-occupied Kashmir (PoK) on 18 June, 1990.
While Lone and Wanchoo were shot dead by none other than the militants themselves in Srinagar on 21 May 2002 and 5 December 1992 respectively, Qayoom survived an armed attack in which he was injured on 22 April 1995.
Even as the separatists' intellectual ecosystem, as usual, left no stone unturned to put the blame of all non-combatant killings on the 'Indian deep State' and security forces, Hurriyat's two-time chairman and founder Prof. Abdul Gani Bhat spilled the beans.
At a JKLF-organised function on 3 January 2011, Bhat asserted that all the Kashmiri leaders and intellectuals, including Mirwaiz Maulvi Mohammad Farooq, the JKLF ideologue and professor of Law at the University of Kashmir, Abdul Ahad Wani, and the Hurriyat stalwart Abdul Gani Lone had been killed by 'none other than our own Kashmiris, not India'.
Years later, on 26 April 2016, Amanullah Khan died a natural death at his residence in Rawalpindi, Pakistan, without contradicting Prof Bhat, whose own brother, Mohammad Sultan Bhat, was also killed by the Kashmiri militants. In April 2003, Prof. Bhat told Aljazeera TV: 'I know he was killed by the militants of the Hizbul Mujahideen. I have absolutely no doubt about that. I even know I became the reason for his killing but I don't want any revenge'.
Bhat, who taught Persian literature at J&K's colleges for 22 years before his dismissal by Governor Jagmohan for 'security reasons' in February 1986, played a key role in floating Muslim United Front (MUF)-mother of today's Hurriyat Conference-in July 1986. On account of his high profile, he continues to be rated as the separatists' most credible voice. His admissions about 'our own white-collar killers' are taken as the gospel truth, straight from the horse's mouth.
As JKLF disintegrated into half dozen factions, in Kashmir, Amanullah Khan was totally eclipsed by Yasin Malik. Khan managed to lead a nondescript guerrilla group, known as JKLF (Amanullah), but almost all of his 32 militants were wiped out in a major operation at Hazratbal by the Special Operations Group (SOG) of the Jammu and Kashmir Police under the command of the then IGP Kashmir, PS Gill, and SP Farooq Khan, now an advisor to J&K's Lieutenant Governor, in March-April 1996.
Denying any space to J&K's mainstream politicians-with glaring exception of the senior Congress leader, former Union Minister and former Sadr-e-Riyasat Dr Karan Singh-Amanullah Khan filled his so-called Cabinet with a host of the separatist leaders and militant commanders. They included hardliner JeI leader Syed Ali Shah Geelani, Dukhtaran-e-Millat founder-chairperson Asiya Andrabi, Prof Abdul Gani Bhat, Shabir Ahmad Shah and Azam Inquilabi.
Khan also inducted as 'Ministers' a number of the then active militants-JKLF's second 'chief commander' Yasin Malik, third 'chief commander' Abdul Hamid Sheikh, fourth 'chief commander' Javed Mir and the most dreaded 'chief' of the Jammu and Kashmir Students Liberation Front (JKSLF) Hilal Ahmad Beg. Beg, the architect of Kashmir's high profile kidnappings and accused murderer of the Kashmir University Vice Chancellor Prof. Musheerul Haq, later founded Ikhwanul Muslimeen and the Jammu and Kashmir Islamic Front (JKIF).
Hamid Sheikh, who was among the JKLF's first commanders and one among the five militants released in exchange for Rubaiya Sayeed in December 1989, was killed along with some other militants when BSF opened fire on their boat near Aalikadal in downtown Srinagar on 19 November 1992. Hilal Beg was killed in an encounter with the SOG near Shalteng, on Srinagar outskirts, on 16 July 1996. Other 'Ministers' of Amanullah Khan's 'Cabinet'-Yasin Malik, Javed Mir, Shakeel Bakhshi, Bashir Ahmad Bhat, Ghulam Nabi Bhat (Maqbool Bhat's brother) and Mian Qayoom-were arrested and released several times. Senior Hurriyat leaders like SAS Geelani, Mirwaiz Umar Farooq, Abdul Gani Lone, Prof Abdul Gani Bhat, Shabir Shah and Asiya Andrabi were also frequently detained and released till 2018-19 when National Investigation Agency (NIA) filed a terror-funding case against them and 40 CRPF men were killed in an unprecedented terror strike.
Since 2018-19, Yasin Malik, Shabir Shah, Asiya Andrabi and some others have been in Delhi's Tihar Jail. Only one of them, namely Azam Inquilabi, was never arrested, even after he returned by air from Pakistan and drove straight to his home in Srinagar. Released in 1987 after the Mahaz-e-Azadi founder Sofi Mohammad Akbar's death, Inquilabi went underground. As 'chief commander' of 'Operation Balakot', Inquilabi was the first militant who showed up with his AK-47 rifle in an interview to 'Kashmir Times' in 1989. He has since resigned his separatist activity.
While Mirwaiz claims to be under 'house arrest', his Hurriyat colleagues have gone into oblivion at their respective residences after revocation of J&K's special status in August 2019. Aga Syed Mustafa, SAS Geelani, Bhushan Bazaz and Ghulam Nabi Bhat have died natural death.
Thirty-two years later, when Amanullah Khan has silently died in Pakistan and the myth of his 'Government in Exile' has exploded, the Kashmiris have turned their back on the militants who killed thousands and didn't spare even the 'Ministers' of their own 'government'.
(The content is being carried under an arrangement with indianarrative.com)
--indianarrative