text:
Ahmad Lotfi is a Professor of Computational Intelligence and Head of Department of Computer Science at Nottingham Trent University, where he is also leading Computational Intelligence and Applications (CIA) research group. He is also a Visiting Professor at Tokyo Metropolitan University.
Professor Ahmad Lotfi received his BSc. and MTech. in control systems from Isfahan University of Technology, Iran and Indian Institute of Technology, India respectively. He received his PhD degree in Learning Fuzzy Systems from University of Queensland, Australia in 1995.
Professor Ahmad Lotfi joined Nottingham Trent University in December 2000 as a lecturer and was promoted to a Reader and Professor in 2011 and 2015 respectively. He has acted as the Postgraduate Research Tutor for SST from 2007 until 2019. He also leads the Computational Intelligence and Applications research group.
More information about Professor Lotfi's research and teachings are available from his personal page (_URL_), Linkedin or Twitter (@ProfAhmadLotfi).
Professor Ahmad Lotfi's research interest is mainly in the area of computational intelligence, ambient intelligence, robotics and machine learning. Specific areas of interest include learning fuzzy systems, evolutionary fuzzy systems, neuro computing, data mining, sensors network, smart homes, intelligent environments and intelligent mobile robot navigation strategies.
His works have been recognised internationally for significant contributions to the application of computational intelligence techniques in condition monitoring, control systems and intelligent environments. My strong communications and decision-making skills with a "make-it-happen" capability have helped me to meet targeted research objectives. Furthermore, my extensive background in the supervision and teaching of undergraduate and research students and the development of research programs in the theory and application of computational intelligence has helped me to contribute to the field of research.
His current research focuses on the identification of progressive changes in behaviour of elderly people suffering from Dementia or any other cognitive impairments. Accurate identification of progressive changes through utilisation of unobtrusive sensor network and/or robotics platform will enable carers (formal and informal) to intervene when deemed necessary.
Opportunities to carry out postgraduate research towards an MPhil /PhD exist in all of the areas identified above. Further information may be obtained from the NTU Doctoral School.
- Chair of the Programme Committee, The PErvasive Technologies Related to Assistive Environments (PETRA) conference, Corfu, 29 June -2 July 2021.
- Honorary Co-Chair, The 5th International Conference of Reliable Information and Communication Technology 2020 (IRICT2020)
- Member of the advisory committee, International Symposium on Community-centric Systems (CcS 2020), Tokyo, Japan, September 23-26, 2020.
- Proposal Evaluator and Panel Member for Horizon 2020; SCI-PM-15-2017: Personalised coaching for well-being and care of people as they age.
- Member of EPSRC Peer Review College (2016)
- Expert Evaluator for EU Framework Research Programmes, Decrease of cognitive decline, malnutrition and sedentariness by elderly empowerment in lifestyle management and social inclusion, 2014.
- Member of IEEE Computational Intelligence Society (CIS), Emergent Technologies Technical Committee (ETTC). The committee identifies, promotes, and nurtures new and emergent approaches, concepts, and areas that relate or are within the scope of the CIS.
- Chair of the organising committee, UKCI2018, Nottingham, 5-7 September 2018.
- Chair of the Smart Industry Workshop 2019, Nottingham, 9-11 January 2019.
- Member of the organising committee and programme chair, UKRAS19: Robotics and Autonomous Systems Conference, Loughborough, Jan 24th 2019.
- Details of my research publications are available from my Google Scholar profile (Ahmad Lotfi - Google Scholar).
- Member of the editorial board and Associate Editor, Soft Computing (Springer) [IF:1.3] [2012 – Present]
- Member of the editorial board, Journal of Ambient Intelligence and Smart Environments [IF: 1.1][2013 – Present]
- Editorial Board of International Journal of Computational Intelligence.
Research Students Supervision and Examination
- PhD supervision of 20 PhD students to successful completion. There are currently 8 PhD students under supervision.
- Acted as the PhD external examiner for 15 and internal examiner for over 10 candidates.
- More details about my research students are available from this personal page.
Sponsors and collaborators
Current and recent research is being conducted with the collaboration, funding and/or support of:
- Allsee Technologies Ltd.
- Alcuris Ltd.
- Engineering and Physical Sciences Research Council
- Innovate UK
- Just Checking Ltd.
- Knowledge Transfer Partnerships
- Nottingham City Homes Ltd.
- Tunstall Healthcare (UK) Ltd.
Recent research funding includes:
- Integrated Therapeutic Digital Display System (_PHONE_) Funded by Innovate UK (£204,289)[2021-2023]
- Community-centric system for elderly care and information support (IEC\R3\170114) Funded by The Royal Society - (£12,000)[2018-2020]
- TekChef (74559-501461)(£276,910) funded by Innovate UK [2017-2018] (Principal Investigator)
- iCarer (AAL-2012-5-239) (£254,624 [€318,281]) funded jointly by Innovate UK and EPSRC [2013-2016] (Principal Investigator)
- Nottingham City Homes (SKTP-100712) (£48,450) funded by Technology Strategy Board [2012-2013] (Principal Investigator)
NASER, A., LOTFI, A., MWANJE, M.D. and ZHONG, J., 2022. Privacy-preserving, thermal vision with human in the loop fall detection alert system. IEEE Transactions on Human-Machine Systems. ISSN 2168-2291
ZHONG, J., LI, J., LOTFI, A., LIANG, P. and YANG, C., 2022. An incremental cross-modal transfer learning method for gesture interaction. Robotics and Autonomous Systems, 155: 104181. ISSN 0921-8890
AFZALOV, A., LOTFI, A., INDEN, B. and AYDIN, M.E., 2022. A strategy-based algorithm for moving targets in an environment with multiple agents. SN Computer Science, 3 (6): 435. ISSN 2661-8907
NASER, A., LOTFI, A. and ZHONG, J., 2022. Calibration of low-resolution thermal imaging for human monitoring applications. IEEE Sensors Letters. ISSN 2475-1472
NASER, A., LOTFI, A. and ZHONG, J., 2022. Multiple thermal sensor array fusion towards enabling privacy-preserving human monitoring applications. IEEE Internet of Things Journal. ISSN 2327-4662
FABIETTI, M., MAHMUD, M. and LOTFI, A., 2022. Channel-independent recreation of artefactual signals in chronically recorded local field potentials using machine learning. Brain Informatics, 9: 1 (2022). ISSN 2198-4018
ALMAHADIN, G., LOTFI, A., CARTHY, M.M. and BREEDON, P., 2021. Enhanced Parkinson's disease tremor severity classification by combining signal processing with resampling techniques. SN Computer Science, 3 (1): 63. ISSN 2661-8907
ALMAHADIN, G., LOTFI, A., MCCARTHY, M. and BREEDON, P., 2021. Task-oriented intelligent solution to measure Parkinson's disease tremor severity. Journal of Healthcare Engineering, 2021: _PHONE_. ISSN 2040-2295
NASER, A., LOTFI, A. and ZHONG, J., 2021. Towards human distance estimation using a thermal sensor array. Neural Computing and Applications. ISSN 0941-0643
YAHAYA, S.W., LOTFI, A. and MAHMUD, M., 2021. Detecting anomaly and its sources in activities of daily living. SN Computer Science, 2 (1): 14. ISSN 2661-8907
HOWEDI, A., LOTFI, A. and POURABDOLLAH, A., 2020. Employing entropy measures to identify visitors in multi-occupancy environments. Journal of Ambient Intelligence and Humanized Computing. ISSN _PHONE_
ORTEGA ANDEREZ, D., LOTFI, A. and POURABDOLLAH, A., 2020. A deep learning based wearable system for food and drink intake recognition. Journal of Ambient Intelligence and Humanized Computing. ISSN _PHONE_
NASER, A., LOTFI, A. and ZHONG, J., 2020. Adaptive thermal sensor array placement for human segmentation and occupancy estimation. IEEE Sensors Journal. ISSN 1530-437X
ALZUBAIDI, A., TEPPER, J. and LOTFI, A., 2020. A novel deep mining model for effective knowledge discovery from omics data. Artificial Intelligence in Medicine, 104: 101821. ISSN 0933-3657
ALRAWAHI, A.S., LEE, K. and LOTFI, A., 2019. A multiobjective QoS model for trading Cloud of Things resources. IEEE Internet of Things Journal, Volume: 6 , Issue: 6 (IF: 9.5)
YAHAYA, S.W., LOTFI, A. and MAHMUD, M., 2019. A consensus novelty detection ensemble approach for anomaly detection in activities of daily living. Applied Soft Computing, 83: 105613. (IF: 4.9)
ORTEGA ANDEREZ, D., LOTFI


text:
Victoria's Chief Commissioner of Police has apologised unreservedly for police actions that have traumatised Indigenous Victorians.
WARNING: Aboriginal and Torres Strait Islander readers are advised that this article contains images and names of people who have died.
- Victorian police chief Shane Patton spoke at the Yoorrook Justice Commission, the state's Indigenous truth-telling inquiry
- Mr Patton acknowledged discriminatory policing has traumatised First Nation peoples and said police would take action to address the over-representation of Indigenous people in the justice system
- Yoorrook chairperson Eleanor Bourke said the apology must bring about real change
In a statement to Victoria's Indigenous truth-telling inquiry, the Yoorrook Justice Commission, Shane Patton said the Indigenous community's over-representation in the justice system was "unacceptable" and pledged that Victoria Police would take action to address it.
"As Chief Commissioner, and on behalf of Victoria Police, I wish to formally and unreservedly apologise for police actions that have caused or contributed to the trauma experienced by so many Aboriginal families in our jurisdiction," Mr Patton said.
"I see the Yoorrook Justice Commission as an opportunity for State agencies like Victoria Police to publicly acknowledge the wrongs that have occurred and which still occur and to make a public commitment to how we intend to operate and engage with Aboriginal individuals, organisations and communities and to then follow through with actions to implement the commitments."
In his statement, Mr Patton addressed a number of issues within the justice system that have disproportionately affected Indigenous Victorians, including public drunkenness laws, the age of criminal responsibility and the treatment of people in police custody.
The Commission has heard that the state government's 2018 bail reforms contributed to the "unprecedented" mass incarceration of First Peoples in this state.
Nearly 1,200 Aboriginal people went to prison in the last financial year while on remand — meaning they spent time behind bars without being sentenced by a judge. There have been five Aboriginal deaths in custody in Victoria since 2020.
"No person should die or sustain a serious illness or injury because of contact with the criminal justice system. Every death in police care or custody is tragic," Mr Patton said.
"Victoria Police is committed to improving outcomes for Aboriginal people in police care and custody, including in partnership with Aboriginal communities. There should be no deaths of Aboriginal people in or related to police care or custody, or in any part of the criminal justice system."
Apology must bring change, Yoorrook chair says
The Yoorrook chairperson, Professor Eleanor Bourke, acknowledged Mr Patton's apology, saying it was important that the chief commissioner's words were on the public record.
Professor Bourke said "since the very beginning", Victoria Police has acted as the primary enforcement arm of a government that forcibly occupied Indigenous lands and destroyed families.
"The 'systemic racism, racist attitudes and discriminatory actions of police' over the last 170 years, it has been perpetuated with the intent of making us – First Peoples – disappear," Professor Bourke said.
"Yoorrook has heard that our people continue to be targeted, attacked, harassed and racially profiled by police. Since then, our children have been born into over-policed communities.
"Your presence today is very important because if actions do not follow your apology, then what hope do we have? Your apology must bring real change. The Yoorrook Justice Commission asks for an undertaking today that Victoria Police protect Aboriginal communities and families and respect our culture and human rights."
Mr Patton said he was "extremely concerned" that Aboriginal people in Victoria continued to report encounters with police involving racism, unconscious bias and unequal application of discretionary powers.
He also expressed concern about low substantiation rates of complaints by Aboriginal people the disproportionately low numbers of cautions given to alleged Indigenous youth offenders and low levels of confidence Indigenous Victorians have in making complaints to Victoria Police.
"The facts and matters in my statement are evidence that Victoria Police accepts that deficiencies remain and that, while we have been taking wide-ranging action, we still have work to do," Mr Patton said.
"As Chief Commissioner of Victoria Police, I will not tolerate bias, racism or unequal exercise of discretionary powers toward Aboriginal people [or anyone else]."

source: m-a-p/FineFineWeb


text:
Sarstedt Research Prize 1990
(Walter Sarstedt, Dr. E. A. Bayer, Prof. Dr. M. Wilchek, Prof. Dr. Dr. Wisser)
On 13 June 1990, the Sarstedt Research Prize was awarded for the third time by the German Society for Clinical Chemistry as part of the opening ceremony for Sarstedt's new research and development centre.
The President of the German Society for Clinical Chemistry, Prof. Dr. Dr. Wisser, presented the Sarstedt Research Prize, worth DM 50,000, to Prof. Dr. M. Wilchek of Rehovot, Israel, and Dr. E. A. Bayer, of the Weizmann Institute, Rehovot, Israel.
Both prize winners received the award for their fundamental work in the use of the biotin-avidin system in biomedical analysis, the ligand receptor system, which has been applied in a wide range of areas of biomedical research.
The use of naturally occurring biochemical binding principles between the substances avidin and biotin enable numerous analytical procedures today, which are used for the early detection of diseases and disease predispositions.
With the biotin-avidin system, the two prize winners provided an important method for a range of disciplines, such as biology, biochemistry, medicine and genetics.


9 Creating a Pipeline to Transform and Analyze Data Streams
9.1 Creating a Pipeline
To create a pipeline:
 1. On the Catalog page, click Create New Item, and select Pipeline from the drop-down list.
 2. On the Type Properties screen, enter the following details:
 - Name
 - Description
 - Tags
 - Stream: Select a stream from the drop-down list.
 3. Click Save.
9.2 Adding a Query Stage
You can include simple or complex queries on the data stream without any coding to obtain refined results in the output.
 1. Open a pipeline in the Pipeline Editor.
 2. Right-click the stage after which you want to add a query stage, click Add a Stage, and then select Query.
 3. Enter a Name and Description for the Query Stage.
 4. Click Save.
9.3 Adding a Filter to a Query Stage
You can add filters in a pipeline to obtain more accurate streaming data.
To add a filter:
 1. Open a pipeline in the Pipeline Editor.
 2. Select the required query stage.
 3. Navigate to the Filters tab.
 4. Click Add a Filter.
 5. Select the required column and a suitable operator and value.
 You can also calculate fields within filters.
 Note:
 IN operator is available as an operator in the drop-down list. This operator is not supported for Interval, Interval YM, Timestamp, and SDO Geometry datatypes.
 You can use the IN filter to refer to a column in a database table. When you change the database column values at runtime, the pipeline picks up the latest values from the DB column, without republishing the pipeline.
 6. Click Add a Condition to add and apply a condition to the filter.
 7. Click Add a Group to add nested conditions.
 8. Repeat these steps for as many filters, conditions, or groups as you want to add.
 You can create blocks without adding condition expression, which you can add at any later stage.
 Link the blocks using AND/ OR
 Define complex conditions.
 Example:
 Query Filter Enhancement - Example
9.4 Adding a Summary to a Query Stage
To add a summary:
 1. Open a pipeline in the Pipeline Editor.
 2. Select the required query stage and click the Summaries tab.
 3. Click Add a Summary.
 4. Select the suitable function and the required column.
 5. Repeat the above steps to add as many summaries you want.
9.5 Adding a Summary with Group By
To add a group by:
 1. Open a pipeline in the Pipeline Editor.
 2. Select the required query stage and click the Summaries tab.
 3. Click Add a Group By.
 4. Click Add a Field and select the column on which you want to group by.
When you create a group by, the live output table shows the group by column alone by default. Turn ON Retain All Columns to display all columns in the output table.
You can add multiple group by's.
9.6 Applying a Window Function on Stream
Apply window functions, to specify time and event based windows, to process your stream.
To apply a Window function:
 1. Open a pipeline in the Pipeline Editor.
 2. Select the query stage to apply the window function.
 3. Click the Sources tab.
 4. Click the clock icon, and select the required window type from the Window Type drop-down list.
For more information on the available window types, see Applying Window Functions to Streams.
9.7 Applying Functions to Create a New Column
You can perform calculations on the data streaming in the pipeline, and also add new fields into the stream using in-built functions of the Expression Builder.
To launch the Expression Builder, click fx in the Live Output table.
Launch Expression Builder
Note:
Currently, you can use expressions only within a query stage.
Adding a Constant Value Column
A constant value is a simple string or number. No calculation is performed on a constant value. Enter a constant value directly in the expression builder to add it to the live output table.
Description of expr_constant_value.png follows
Description of the illustration expr_constant_value.png
Using Functions
You can select a CQL Function from the list of available functions and select the input parameters. Make sure to begin the expression with "=". Click Apply to apply the function to the streaming data.
Example expression using functions:
=float((CanceledOrdersFloat/NewOrdersFloat) * 100.0)
Description of list_of_functions.png follows
Description of the illustration list_of_functions.png
You can see custom functions in the list of available functions when you add/import a custom jar in your pipeline.
For a list of supported functions, see Using Functions in Expression Builder .
9.8 Correlating Streams and References
A correlation is used to enrich the incoming event in the data stream with static data in a database table or with data from other streams.
For example, if the event in the data stream only includes SensorId and Sensor Temperature, the event could be enriched with data from a table to obtain SensorMake, SensorLocation, SensorThreshold, and many more.
Correlating an event with other sources requires the join condition to be based on a common key. In the above example, the SensorId from the stream cand be used to correlate with SensorKey in the database table. The following query illustrates the above data enrichment scenario producing sensor details for all sensors whose temperature exceeds their pre-defined threshold.
Select T.SensorId, T.Temperature, D.SensorName, D.SensorLocation
From TemperatureStream[Now] T, SensorDetailsTable D
Where T.SensorId = D.SensorKey And T.Temperature > D.SensorThreshold
Queries like above and more complex queries can be automatically generated by configuring sources and filter sections of the query stage.
9.8.1 Joining Mutiple Streams
You can correlate a stream with another stream.
Stream-to-stream Correlation
 - A Stream is an unbounded sequence of events. To correlate a Stream with another Stream, first convert both streams to a Relation or a bounded sequence of events, by applying window functions.
 - After applying window functions on both streams, define a correlation condition that evaluates to true or false.
The output from stream-to-stream correlation is a subset of the Cartesian product of tuples from both windows, where the correlation condition is true.
9.8.2 Joining a Stream with a Reference or an External Source
You can join a stream with external data in a Database or a Coherence Cache.
Stream-to-Database Table Correlation
 - Convert the Stream to a bounded sequence of events, by applying a window function.
 - After applying the window function on the stream, define a correlation condition that evaluates to true or false.
The output from Stream-to-database correlation is the Cartesian product of tuples from window and the database table, where the correlation condition is true.
Stream-to-Cache Correlation
 - Convert the Stream to a bounded sequence of events, by applying a window function.
 - After applying the window function on the stream, define a correlation condition that evaluates to true of false.
The output from Stream-to-Cache is the Cartesian product of tuples from window and the cache, where the correlation condition is true. Currently, OSA supports only Coherence cache.
9.9 Adding a Rule Stage
Using a rule stage, you can add the IF-THEN logic to your pipeline. A rule is a set of conditions and actions applied to a stream. There is no specific sequence to add rules.
To add a rule stage:
 1. Open a pipeline in the Pipeline Editor.
 2. Right-click the stage after which you want to add a rule stage, click Add a Stage, and then select Rule.
 3. Enter a Name and Description for the rule stage.
 4. Click Add a Rule.
 5. Enter Rule Name and Description for the rule and click Done to save the rule.
 6. Select a suitable condition in the IF statement, THEN statement, and click Add Action to add actions within the business rules.
 Actions can also be expressions. For example, SET Revenue TO =-Revenue, will convert the current value of Revenue to a negative number.
 Expressions must always start with a '=' sign. For a constant text value, just type in the text. For example, SET CustomerType TO GOLD.
The rules are applied to the incoming events one by one and actions are triggered if the conditions are met.
9.10 Adding a Pattern Stage
A pattern is a template of an Oracle GoldenGate Stream Analytics application, with a business logic built into it. You can create pattern stages within the pipeline. Patterns are not stand-alone artifacts, they need to be embedded within a pipeline.
For detailed information about the various type of patterns, see Transforming and Analyzing Data using Patterns.
To add a pattern stage:
 1. Open a pipeline in the Pipeline Editor.
 2. Right-click the stage after which you want to add a pattern stage, click Add a Stage, and then select Pattern.
 3. Choose the required pattern from the list of available patterns.
 4. Enter a Name and Description for the pattern stage.
 The selected pattern stage is added to the pipeline.
 5. Click Parameters and provide the required values for the parameters.
 6. Click Visualizations and add the required visualizations to the pattern stage.
9.11 Adding a Query Group Stage
A query group is a combination of summaries (aggregation functions), group-bys, filters and a range window. Different query groups process your input in parallel and the results are combined in the query group stage output. You can also define input filters that process the incoming stream before the


text:
AfriGeneas Military Research Forum Archive
WWII - The 'Black Panther' Tank Battalion
From the editors of TheHistoryNet
The 'Black Panther' Tank Battalion
The 761st 'Black Panther' Tank Battalion was the first African-American armored unit to see combat.
By Joseph E. Wilson, Jr.
Before and during mobilization for World War II, officials in Washington, D.C., debated whether or not African-American soldiers should be used in armored units. Many military men and politicians believed that blacks did not have the brains, quickness or moral stamina to fight in a war.
Referring to his World War I experiences, Colonel James A. Moss, commander of the 367th Infantry Regiment, 92nd Division, stated, "As fighting troops, the Negro must be rated as second-class material, this primarily to his inferior intelligence and lack of mental and moral qualities." Colonel Perry L. Miles, commander of the 371st Infantry Regiment, 93rd Division, voiced a similar opinion: "In a future war, the main use of the Negro should be in labor organizations." General George S. Patton, Jr., in a letter to his wife, wrote that "a colored soldier cannot think fast enough to fight in armor."
THEY ALL WERE PROVEN WRONG - EXCELLENT ARTICLE - READ MORE at:
Messages In This Thread

source: HuggingFaceFW/fineweb-edu


text:
Yes, you heard me right - gradients in Microsoft Paint, and easy to make as well. For this tutorial, I will be using a very small pallet, 8x8, the size most commonly used for forum pips. REMEMBER - you can use ANY size you want.
1. Open Microsoft Paint and change the canvas size to 8x8 pixels (Image>Attributes). Then, click on the magnify tool and click on 8x.
2. Choose a color scheme (I am doing black).
3. Go to the line tool and set it to the smallest line.
4. Now, go to the color selection and choose the normal shade of the color you are using. For me, this is black.
5. Now, drag a line right across the top of the zoomed image.
6. Now, go a little brighter by double clicking the color in the color pallet.
7. Click "Define Custom Colors" and the modify the color using the slider bar on the far right.
8. Click "Add to Custom Colors"
9. Click "Ok"
10. Repeat the process (make sure to change the color tones each time )
11. Post your final result!
Here is mine. After I made it, I went into Photoshop to make it larger so you can see it better and to add a border (you can add a border in paint as well, should be obvious. Just draw a solid color line around each side). Remember, when you make your own it can be ANY size.


text:
Since a particle in one dimension can only move in a straight line. Is it possible to have potential energy? And how would the kinetic energy and potential energy differ in higher dimensions?
Sure, a particle can have potential energy in one dimension. Just look at Hooke's Law or the gravitational force. Both of those are conservative forces in one dimension ($x$ and $r$, respectively) that have a corresponding potential energy.
In higher dimensions, nothing has to change, but it is possible to have potential energies which depend on the value of more than one of the dimensions (for instance, take $U(x,y)=x^2y^2$).
If your question is about how particular forces would change if the world we lived in were of lower dimension, well, that's more complicated. Suffice it to say that, mathematically, one can write whatever one wants, but physically, it is generally taken to be the case that lower dimensional forms of gravity and the electrostatic force would not be inverse-square laws. In one dimension, it is possible that the inverse-square laws that we all know and love might be constant forces (to maintain a lower dimensional form of Gauss's Law). Constant forces correspond to linear potentials (i.e. $U(x)=kx$); examples of this would be the electric field between a set of parallel plate capacitors or the gravitational potential near the surface of the Earth ($mgh$).
Kinetic Energy is much simpler. In most situations kinetic energy is taken (to a good approximation) to be a quadratic degree of freedom (read: proportional to $v^2$) for all dimensionality.
Yes, a particle can have potential energy in one dimension as potential energy depends upon the configuration of the body. We can have configuration in one dimension as in hook's law and hence potential energy.

source: openbmb/Ultra-FineWeb


text:
The Boston Harbor Islands Advisory Council is the primary mechanism for public involvement on matters of park planning and management. The Council's role is to advise park managers in the planning and operation of the park, doing so through public meetings, workshops, and other general public forums. Notwithstanding the Council's role, the Partnership agency members also conduct public consultation independently on matters within their jurisdiction.
The National Park Service uses an online collaborative tool to aid conservation planning, environmental impact analysis, and informed decision-making. PEPC—Planning, Environment and Public Comment—is designed for:
To participate on line, go to _URL_.
Did You Know?
Scientists have recently identified a beach-dwelling ground beetle at Boston Harbor Islands that has not been seen in North America for over 100 years. It is believed the beetle, Bembmidion nigropiceum, was brought to Boston from Europe in the 1800s via ship ballasts.


text:
Calls for 2017 will open in April and close in September
Published on 28-03-2017 06:45:42 by AGRIFORVALOR
The Bio-based Industries Joint Undertaking (BBI JU) is a public-private initiative dedicated to supporting the commercial transformation of renewable, natural resources into innovative bio-based products in Europe.
Almost 75% of a total €3.7 billion (€2.7 billion) of the BBI JU budget is invested by Bio-based Industries Consortium (BIC) industry members from 2014-2020. This financial contribution will support the large-scale commercialisation of high-quality bio-based products, through investment in innovative bio-based production facilities and biorefining research and demonstration projects.
Projects supported under the BBI Initiative range from commercial flagship projects and demonstration projects to research and innovation actions and co-ordination and support initiatives. Among the flagship projects awarded under the program are FIRST2RUN and EXILVA. The FIRST2RUN biorefinery focuses on underutilized oil crops grown in arid and marginal land. The vegetable oil extracted from cardoon seeds is converted into bio-monomers (mainly pelargonic and azelaic acids) as building blocks for high added value bioproducts (biolubricants, cosmetics, bioplastics, additives) through the integration of chemical and biotech processes. EXILVA focuses on the commercial production of a microfibrillated cellulose from woody biomass sources. Another initiative, BIORESCUE, is a research and innovation action which is exploring enhanced bioconversion of agricultural residues (including spent mushroom compost and wheat straw) through cascading use. The consortium includes two Irish partners, Monaghan Mushrooms and Celignis. Five million tonnes of spent mushroom compost are generated per annum and storage and disposal of this has become a significant economic and logistical problem. Biorefining could offer not only a solution to this problem, but also develop a significant revenue stream from this resource. The schematic below offers an insight into some of the pathways being investigated.
Fig 1; Overview of BIORESCUE Biorefinery Process
The 2017 call for BBI proposals will open this April and will close in September with results published in December. Topics are orientated along feedstock, process, products and market. Potential topics of interest in the 2017 call include a flagship call for an integrated "zero waste" biorefinery utilising all fractions of the feedstock for the production of chemicals and materials, a research and innovation action on the production of proteins and other bioactive ingredients from sidestreams and a call for proposals on competitive biodegrable, compostable and/or recyclable biobased plastics for a sustainable end of life phase. For a full list of topics click here _URL_
To follow-up on the call for proposals the BBI JU will hosts its fourth Open Info Day & Brokerage event at the Alcide De Gasperi, Charlemagne Building of the European Commission in Brussels on 28 April 2017. In addition to bioeconomy expert speakers from EU and industry, the event will provide potential applicants with detailed information on how to prepare and submit a good proposal for the 2017 BBI JU Call, and there will be a dedicated networking and brokerage event in the afternoon.
James Gaffey, Institute of Technology, Tralee


Spring Data Neo4j Webinar Follow Up
Hey everyone,
As promised, here are the rest of the questions that we weren't able to cover during the Spring Data Neo4j session:
What's the difference between RelatedTo and RelatedToVia?
RelatedTo refers to the node-entities at the other end of the relationship, while RelatedToVia refers to relationships themselves (as relationship-entities).
Is there any facility for "supernode" relationship navigation? For example, if Movie has 1M Ratings, but I only care about obtaining the Director, to have an "automatic" IndexedRelationshipExpander
You might add indexing to the relationship-entities to write the index (with Indexed. You can also look into using computed properties with GraphTraversal and TraversalBuilder or go for template.traverse() or repository.traverse() to retrieve those (and use a custom expander there).
Can I open the same Neo4j graph database in two different applications using Embedded?
No. For embedded, only one JVM can access the store files at a time. You would have to make your own mini-server exposing a protocol (TCP, RMI, HTTP, Websockets, JMX) on top of that database to interact with it from other processes.
For more info on Spring Data Neo4j check out the following resources:


text:
The LSE Social Statistics group is delighted to announce this one day workshop.
This workshop takes place in the 'BOX' on the fifth floor, Tower 3 on the LSE campus on Tuesday 27 November 2012, staring at 10.30am. Attendance is free of charge, but registration is essential. Please email Sara Geneletti to register.
Researchers using statistical modelling in the analysis of survey data in social and medical research are often unsure how to make use of survey weights. In recent years a number of new methods have been proposed for incorporating survey weights into statistical models. This one day workshop looks at novel approaches to this problem in the context of small area estimation, multiple imputation and evidence synthesis. The talks will focus on how to apply these methods with real examples.
The provisional timetable for the meeting is:
10:45-10:55 Sara Geneletti (LSE): Introduction
10:55-11:25 Chris Skinner (LSE) : Incorporating survey weights into modelling: an overview
11:25-12:05 Michael R Elliott (University of Michigan School of Public Health): Bootstrapping Bayes estimators in complex sample designs
13:00-13:40 James Carpenter (London School of Hygiene and Tropical Medicine): Using survey weights with multiple imputation: a multilevel approach
13:40-14:20 Shaun Seaman (MRC Biostatistics Unit): Combining multiple imputation and inverse probability weighting
14:35-15:15 Jouni Kuha (LSE): Group means as explanatory variables in multilevel models
15:15-15:35 Discussants Sara Geneletti (LSE) and Nicky Best (Imperial College London)
15:35-16:00 Open discussion
Using survey weights with multiple imputation: a multilevel approach
Multiple imputation for partially observed data with survey weights has been criticized, because Rubin's variance formula may be invalid. Focusing on a regression setting, we discuss this criticism, and argue that multilevel imputation can address some of the issues. We illustrate with some simulations and an analysis of the Youth Cohort Study.
Michael R Elliott
Bootstrapping Bayes estimators in complex sample designs
Bayesian applications typically postulate independent observations in order to obtain tractable forms of likelihoods. Sample designs that involve clustering are easily handled in this setting by assuming independence conditional on latent random effects associated with each cluster, which can then be easily integrated out, typically through the use of numerical methods (e.g., Markov Chain Monte Carlo). However, other complex sample design features such as sampling weights and stratification are not so easily incorporated into Bayesian estimators (Gellman 2007). In the regression setting weights can be incorporated in model estimation by including interaction terms between weights and regression parameters (Elliott 2007); in other settings such as small area estimation summary statistics can be computed that incorporate sample design (Raghunathan et al. 2007). But a general solution to the problem of Bayesian estimation using data from complex sample designs has not been proposed. In this talk I will propose the use of posterior predictive distributions of a population from finite population Bayesian bootstraps (FPBB) (Dong, Elliott, Raghunathan 2012) as one such possible general solution. FPBB produce posterior predictive distributions that have simple random sample properties that can be used to derive posterior estimates of the parameters of interest by reweighting simulated draws from the original sample. I will consider the repeated sampling properties of this method in a simulation study.
Group means as explanatory variables in multilevel models
Research questions for clustered data often concern the effects of cluster-level averages of individual-level variables. Typically such averages are estimated using just data on respondents in a survey. This incurs a measurement error bias when these estimates are used as explanatory variables in modelling. The error variance can, however, be estimated, and we can then apply statistical measurement error methods to adjust for the error. This talk considers such estimation for generalised linear mixed models. The proposed approach involves two stages of estimation where survey weights and other information on sampling design may need to be used in the first stage even when they will not be in the second.
Combining multiple imputation and inverse probability weighting
Multiple imputation (MI) is a technique commonly used to deal with missing values when analysing data. Another technique used for the same purpose is inverse probability weighting (IPW). Inverse probability weights are also used to deal with differential sampling fractions in survey data. These latter weights are known as sampling (or survey) weights. MI may be used in combination with IPW for either or both of two reasons. First, MI may be used to deal with missing data in a study with sampling weights. Second, MI may be used only to impute isolated missing values and then inverse probability weights used to account for the remaining larger blocks of missing data. I shall compare MI and IPW, discuss why and how the two may be combined, and present theoretical and simulation results concerning the unbiasedness of parameter and variance estimates based on Rubin's Rules when MI and IPW are thus combined. An example involving data from the National Child Development Study will be presented.
Incorporating survey weights into modelling: an overview
This talk will aim to provide an overview of : types of survey weights and why weights are needed; standard methods for incorporating weights into modelling, such as weighted maximum likelihood methods and weights as covariates; challenges for incorporating weights into Bayesian modelling; weight modification and alternatives to weighting


text:
The Quakertown Well:
Historical Archeology of a Displaced
African American Community in Denton, Texas
by Douglas K. Boyd, Kim McCoig Cupit, and Nita Thurman
Historical Archeology of a Displaced
African American Community in Denton, Texas
by Douglas K. Boyd, Kim McCoig Cupit, and Nita Thurman
Civic Center Park. Subsequent investigation by members
of the Denton County Historical Commission and Texas
Historical Commission archeological steward Jim Blanton
revealed that the cavity was a rock-lined well. Nita Thurman,
chair of the county historical commission's archeology
committee, speculated that the well was associated with the
former African American community called Quakertown.
Prewitt and Associates, Inc. was then contracted to conduct
an archeological investigation of the well to determine its
historical significance. Archeological testing of the well was
done in October 2004, along with archival research to identify
the historical property on which the well was located. The
results of these investigations are reported by Boyd (2005).
Previous Work and Site Setting
The historic well is located in the northwest corner of Civic
Center Park, just north of downtown Denton (Figure 1).
It is part of archeological site 41DN481, which was initially
recorded by the University of North Texas in 1990 (Lebo
1990). Archeologists from Wendy Lopez & Associates, Inc.
did additional archeological work there in 1999 (Kahl and
Proctor 1999). The site was known to be the location of
historic Quakertown, which local historians had documented
as an African American community in Denton from about
1875 to 1922 (Glaze 1991; Odintz 2002). The community
ended in 1922–1923 with the razing of the neighborhood
and construction of the city park. The well was found in a
grass-covered area about 35 feet north of Pecan Creek, which
is now contained within a concrete-lined ditch constructed
sometime after 1937.
The origins of the name Quakertown are not known, but
some believe it was named in honor of the Quakers who
helped African Americans during Reconstruction years
(Odintz 2002). Precisely when the settlement began is not
known, but DeBurgos (1991:8) suggests that "Quakertown
was a town within a town by the early 1870's." The U.S.
Black Census for 1870 shows that there were already 187
African Americans living in the "Town of Denton, Prct. 1"
(DeBurgos 1991:7, 28). A Denton County judge signed an
order establishing "colored school #17" in August 1878.
By all accounts, Quakertown was a thriving African
American community in the late-19th and early-20th centuries
(DeBurgos 1991; Glaze 1991). Through the years, the neighborhood had various churches, a school, grocery stores and other businesses, and lodges for different men's and women's organizations. The 1921 Sanborn map shows more than 70
structures within the area that would become City Park,
including three churches, a grocery store, a barbershop, two
auto shops, and possibly other unspecified businesses.
The demise of Quakertown happened quickly and is
documented in the Denton City Commission minutes kept by
the city secretary (DeBurgos 1991:155–163). On March 1,
1921, the City Commission approved a petition brought
before them by J.L. Hooper and 150 property-tax-paying
voters. The petition called for a general election to approve
bonds to purchase the property occupied by Quakertown
and turn it into a park. The results of the election were documented on April 7, 1921, with the bond election passing by
a vote of 367 for and 240 against. A committee was immediately formed "to arrange with the negroes in the park area, for a mass meeting of said negroes; at which meeting the committee should appear before the negroes and assure them of fair treatment in their removal." This meeting was
apparently held not long after the City Commission's April meeting, and in September 1921 the city appointed members to a park board (DeBurgos 1991:14–15, 155–163).
The park development plan experienced some delays
while people looked for a suitable area to relocate the Quakertown residents and property-value negotiations took place (Glaze 1991). Out of the 58 property owners involved, only one man openly protested the city's actions. Will Hill filed
a lawsuit against the city, but he eventually dropped the suit
"fearing reprisals against his family" (Glaze 1991:11). Price
negotiations continued through most of 1922 and into 1923.
Twenty-two property owners appeared before the City Commission on one night in May of 1922 to plead their cases. A few settlements seemed to favor the landowners, but many were unresolved and later went to condemnation. At about
the same time, some white citizens filed petitions to prevent
the Quakertown people from moving into adjacent white
neighborhoods (Glaze 1991:11–12).
The city began buying Quakertown property in May
1922 (DeBurgos 1991:15), and by June 1922 a local rancher
had platted a 35-acre pasture southeast of town and offered
to sell lots to the displaced blacks (Glaze 1991:13–14). The
area, about one half-mile east-southeast of Quakertown,
became known as Solomon Hill. "Residents were given a
choice of selling their land and property outright or having
their houses moved to Solomon Hill" (Odintz 2002). By early
1923, most of the Quakertown land was vacant, and "equipment
leveled and graded the once-vibrant residential area"
The historical evidence shows there were two different
perspectives on the Quakertown resettlement episode. Local
historian Mike Cochran (1991) has studied documents prepared
by some of Denton's white residents for the WPA
Federal Writer's Project. A letter written in 1938 suggested
that "no friction from the move has been reported." It went
on to say that "Two old time colored men — Bill Maddox
and Charlie Hinkle — inform the writer that the move was
agreeable and smoothly executed so far as they know and
believe" and that the displaced people reported "no dissatisfaction
among their group." Cochran (1991:29) notes that
"the statements of Maddox and Hinkle about the 'agreeable'
circumstances of the Quakertown move should be read with
skepticism. According to correspondence from the Federal
Writer's Project, there was a tendency for African Americans
of the period to tell white project interviewers 'what they
wanted to hear.'"
In contrast to the contemporary white historical
record, evidence that Glaze (1991:9–21) compiled from a
variety of sources tells a different story. On the basis of oral
histories and personal communications with African Americans,
Glaze suggests that the Quakertown residents had little
or no say in the relocation process, were usually paid less
than market value for their property, and were threatened if
they tried to resist the relocation plan or tried to move into
white neighborhoods. Most had little choice but to move to
Solomon Hill, a less than desirable area well outside of town.
Some chose to move away completely, and at least one man
was so bitter he "vowed never to return to Denton" (Glaze
1991:17). The black community was slow to recover, and the
psychological trauma associated with the forced move had
lasting effects (Glaze 1991:20–21).
of the Quakertown Well
Hand excavations were done inside the well in October 2004.
The work revealed a rock-lined well about four feet below
surface, but the top of the well had been removed by blading
during park construction. The upper four feet of artificial fill
was removed with a backhoe to allow safe and easy access to
the well. Hand excavations revealed that the rest of the well
was intact (Figure 2a). The fill inside the well was excavated
in rough stratigraphic layers and was found to contain large
amounts of historic artifacts. The fill was hand dug from 4
feet to a depth of 7.5 feet below surface. Probing revealed
that the well went down several feet more, so a smaller hand
test, measuring 16 x 10 inches, was then dug along the west
wall of the well (Figure 2b). The fill became increasingly wet
as this excavation proceeded. The deep test ended at approximately 11 feet below surface when the water table was encountered. Additional probing from that point revealed there were some large objects, presumably artifacts, below the water line. Probing also revealed that a continuous hard
surface was present at about 13.5 feet below ground surface, and this is presumed to be the bottom of the well. The water table in the well is at about the same elevation as the bottom of the modern concrete-lined channel of Pecan Creek (Figure 3).
The rocks used to construct the walls are ferruginous
sandstone from the local Woodbine Formation (Bureau of
Economic Geology 1967). The interior wall is rather smooth,
indicating intentional size selection and great care in the
placement of the rocks. The builders intentionally laid the
rocks so the walls constricted as they went upward.
The artifacts were analyzed in the field, but only a
small sample of 38 diagnostic specimens was collected for
permanent curation. The 163 analyzed artifacts, which are
described in more detail in Boyd (2005), were grouped into
functional categories defined by South (1977) as follows:
Most of the unclassified artifacts are rusted iron
specimens that could not be positively identified. Of the 112
items classified by function, kitchen items are dominant and
consist mainly of ceramic vessel sherds (plate and bowl
pieces), glass fragments (bottles and drinking glasses), and
metal pieces (kettle and stove parts). Kitchen items also
include pig and cow bones that exhibit cut and saw marks
from hand butchering. The next best represented functional
group is architecture, which includes bricks, a concrete
fragment,


text:
You can type or hand write as well as sketch drawings in OneNote.
With OneNote, you can enter typed and handwritten notes and other information with a keyboard or an inking device such as a mouse, a Tablet PC, or a graphics tablet.
If you use a Tablet PC, handwritten notes can be converted into text (handwriting recognition). If you're using OneNote on a desktop or laptop, you can still use an inking device, or simply, "ink," for writing or drawing, but handwriting recognition is not available. Also, keep in mind that hand writing with a mouse is very difficult and is not recommended.
As with paper, you can write (or type) anywhere on a OneNote page. Just click and write. The inking technology is really great if you'd like to include sketches or diagrams; you can doodle away as you would on paper.


Kerbal Space Program
Kerbal Space Program
Not enough ratings
KSP: How to Plane
By Kerbal1
The basics of how to get your Kerbals up in the air using the invention known as the plane!!!

Rate
Favorite
Favorited
Unfavorite
What you'll need.
First things first, the control center. Now you could choose to make a drone using the RC module available in the game or you could put your Kerbal's life on the line. OBVIOUSLY use the Kerbals. Their faces are HILARIOUS(especially Jebediah). Back to the topic, you will want to choose a cockpit, which should probably, if you're a beginner, be the same type(size(Mk1, Mk2, etc.)) as what you will be using for fuel tanks(I find the easiest to be MK1). Once that is complete, you will need to attach fuel and maybe some empty fuselages. Keep in mind, that different types of engines have different requirements, so you MUST MAKE SURE YOU ARE USING THE RIGHT FUEL. Some engines might also need things such as air intakes. Also, don't forget the actual engine. It seems silly ,but it happens.
Here, it gets complicated(ish). As you may know, aerodynamics is a complex physics, and the game hasn't fallen short on some of the key principles. So, the VERY basics are in the following list.
1. You need wings and most likely you will want rudders or flaps to control the plane
2. For a relatively simple plane, it is best to have the center of lift a bit behind the center of mass. I find that the best relative positioning of the center of mass and center of lift is to have the center of the ball icon for the center of lift to be at the same location as the back point of the ball icon for the center of mass. Remember that the center of mass is the point representing the mean (yay back to 3rd grade math class. Thankfully the game calculates it for you) of all the matter, so changing the fuel level will affect the center of mass. And, since the wings and rudders/flaps/ailerons provide lift, shifting their position will change the center of lift.
3. You must have an engine obviously to provide thrust. Again depending on the type of engine, you will need different things like air intakes.
4. Unfortunately there is no absolute invincibility mode in KSP so you will have to put landing gear. Probably the easiest to place and most commonly used is the retractable landing gear which comes in different sizes. I would definitely use those.
Specifics
I talked a lot about engines and what they need because it is very important so your plane can actually have thrust. An extremely common type of engine in modern planes is the jet engine. KSP has many jet engines. The requirements for these are to have a source of liquid fuel and an air intake.
PLEASE NOTE: I have encountered a problem with the game where if you have two jet engines and two air intakes, only one engine may receive the air required. Thus, one of the engines will sputter and die out. I do not know EXACTLY how to fix this problem.
The most simple design would be to have the following in order from front to back:
1. Air intake
2. Cockpit
3. Fuel tank
4. Engine
>Note the wings, flaps, ailerons, rudders, and landing gear would be placed throughout the body of the plane and would have no definite position. It depends on how the plane is structured.
Building Controls
On the left with your parts you have buttons!(The list doesn't contain every button action)
These buttons do the following:
1. Mirror what you build on one side to the other
2. Show center of mass, lift ,and thrust
Another helpful tool is the movement of pieces. Once you place your piece you can make precise movements and rotations using the different ways of moving pieces which you toggle using the buttons on the top of the screen, located right of the parts menu. You can rotate, precisely move, and do more to pieces.
Flying Controls(The Defaults)
The controls are editable.
S = Pull nose up (pitch)
W = Push nose down (pitch)
A = Turn left (yaw)
D = Turn right (yaw)
Q = Rotate left (roll)
E = Rotate right (roll)
SPACE = Activate stages in order ( Unless you modified the stages, they should be in stage one, also unless you have more functional parts than I described).
CTRL = Throttle down
SHIFT = Throttle up
NOTE: I have not tested whether or not the default works for RSHIFT or RCTRL
G = Landing gear(retract and extend)
Z = Throttle at maximum
X = Throttle at minimum
F12 = Aerodynamic overlay
b(hold) = brakes
>And also please note that when flying, use SAS, at the top right of the navigation ball which will
auto-stabalize the plane.
< >
22 Comments
kickdowndoors Jun 8 @ 9:08am
okay great, thanks mate. and that sounds good! thank you!
Kerbal1 [author] Jun 8 @ 8:39am
i do not believ the air intakes have to be placed specifically, i think they auto connect to the engine. i don't play science mode too much because i like creating wacky creations, but you can drain some fuel to adjust center of mass
kickdowndoors Jun 8 @ 12:11am
one problem i encountered (before reading this guide) was at a low-level in science mode. i dont have any empty fuselages, so placing an air intake was really hard. how would you suggest i do this? also, does the air intake have to be placed in front of the fuel used for a specific engine? thanks!
Kerbal1 [author] Nov 2, 2017 @ 3:37pm
Good point however if they are tryino to do a type of cornering maneuver they will need to be able to turn
Javacat1 Nov 2, 2017 @ 3:21am
Another thing: don't use A and D to turn. Instead roll with Q or E in the direction you want, and press S to bring the nose towards where you rolled
Nolan041 Nov 1, 2017 @ 10:27pm
Intructions unclear: Dick torn up and drowned in toaster
Quinn Nov 1, 2017 @ 4:27pm
oh thanks kerbal
Kerbal1 [author] Nov 1, 2017 @ 4:03pm
if you are pressing A and D it is possible that the way the plane was designed makesit so that the tailfin turning has an affect that makes the plane roll
Quinn Oct 30, 2017 @ 4:05pm
i tried to add a tailfin, usually the AV-R1 winglet. still rolls around. infact, even some of the stock ones do the same thing.
Kerbal1 [author] Oct 30, 2017 @ 3:40pm
Quinn you need a vertical stabalizer that is controlable


text:
Are you getting frustrated with your AirPods because they don't always connect to your devices? You're not alone! I know the feeling all too well. Whether it's streaming music or taking a call, having a device that just won't link up can be beyond annoying.
In this article, we'll explore why AirPods sometimes struggle to stay connected and what you can do to resolve the issue. We'll look at troubleshooting tips from experts as well as simple solutions I've learned over my years of using Apple products. By the end of this article, you will have enough knowledge to get your devices connected quickly and keep them linked for longer periods of time! So let's dive in and start fixing those troublesome AirPods!
So, Why are airpods not always connecting? AirPods may not always connect due to a variety of reasons, such as low battery, interference from other Bluetooth devices, or incorrect settings. To fix this issue, try resetting your AirPods and ensuring that they are in close proximity to the device you're trying to pair them with. Additionally, make sure that all software is up-to-date on both the AirPods and the device you're connecting them to.
Read also: why is my airpod case dying so fast?
Why are airpods not always connecting?
AirPods can sometimes be difficult to connect, but there are a few things you can do to make sure the connection is successful. First, make sure that your AirPods are charged and that Bluetooth is enabled on your device. Additionally, try resetting your AirPods by pressing and holding the setup button for at least 15 seconds until the light flashes amber then white. If this doesn't work, try restarting both your AirPods and your device or connecting them manually through Settings > Bluetooth on iOS devices or Control Panel > Devices & Printers on Windows devices.
Read also: why is my airpod case making a noise?
Bluetooth Interference and How it Affects AirPods Connection
AirPods are a revolutionary piece of technology, allowing users to instantly connect and listen to music, podcasts, or audio books from any Bluetooth-compatible device. However, AirPods are not without their drawbacks; one such issue is the susceptibility of AirPods connectivity to interference from other Bluetooth devices.
What Causes Interference?
- Too many devices in close proximity: When too many devices (such as phones) are in close proximity to each other, they can cause interference with the connection between the AirPods and your device.
- Wireless networks: Wireless networks can interfere with the connection if there is too much traffic on them at once.
- Other bluetooth connections: Other bluetooth connections nearby such as headsets or speakers can also interfere with your AirPod's connection.
How Can You Avoid Interference?
- Limit number of connected devices in range : Try to limit the number of connected Bluetooth devices that you have in range. This will help reduce potential interference issues when connecting your AirPods. Turn off Wi-Fi when not needed : Turning off Wi-Fi when it isn't needed can help reduce interference from wireless networks. li
- Charge them overnight or whenever possible
- Turn off features like 'Automatic Ear Detection' which may drain power faster
- Charge Your Devices: Sometimes it's easy to overlook the obvious – make sure both your AirPods and the charging case have enough battery life! Connect them to power for at least ten minutes before testing again.
- Check Bluetooth Settings: For proper functioning, ensure Bluetooth is enabled on your device and that it's close enough (within 10 meters) for wireless communication.
- Restart And Reconnect: If these checks didn't solve the issue, try restarting your device then reconnecting your pods again.
Battery Level and Its Effect on AirPods Connectivity
AirPods are the perfect companion for today's digital world. They offer effortless connection and superior sound quality, providing a seamless listening experience. However, there is one factor that can greatly affect how well they perform – battery level. As AirPods rechargeable batteries drain over time, their ability to connect wirelessly with your device will decrease as well. The lower your AirPods' battery levels get, the weaker their wireless signal becomes and the less reliable their connection will be.
Battery Level vs Connection Strength
As mentioned earlier, when you have low battery in your AirPods it affects the strength of its wireless signal and therefore its connection range with your device. This means that if you're trying to use them at a distance from where you placed them last or in an area with more interference than usual (e.g., near other Bluetooth devices), it's likely that they won't be able to hold onto the connection long enough to maintain a solid link between them and your phone or laptop – resulting in audio stuttering or even complete dropouts.
Tips For Maintaining Your AirPod Battery & Connectivity
To ensure optimal performance of your AirPods regardless of distance or interference levels always make sure to keep an eye on their battery level before using them for extended periods of time:
Troubleshooting Guide for Fixing Common Connectivity Problems with AirPods
Understanding The Connectivity Problem
The incredible convenience and compact design of AirPods make them a top choice for many. But like any tech, they can sometimes have issues – and often the most common problem people encounter is with connectivity. You might find that your AirPods just aren't connecting to your device, or maybe there's only sound in one ear. Perhaps you're finding that they disconnect repeatedly during use, or even refuse to charge properly. These problems can be highly frustrating but don't worry – help is at hand! In this guide we'll walk through some simple troubleshooting steps to get your AirPods behaving as they should.
First thing's first – let's cross off the basics from our troubleshooting checklist:
If you've tried these basic steps but are still experiencing issues, fear not; there are more advanced measures we can take which we will delve into next time round.
Read also: Why are airpods not as loud?


text:
A high-level programming language noted for its ease of use and graphics capabilities. It is a recursive language that contains many list processing functions that are in LISP, although Logo's syntax is more understandable for novices.
Stemming from a National Science Foundation project, Logo was created by Seymour Papert in the mid-1960s along with colleagues at MIT and members of Bolt Beranek & Newman. Originally developed on large computers, it was later adapted to many personal computers. A wealth of information about Logo and its educational philosophy is available from the Logo Foundation, _URL_
Command the Turtle
Turtle Graphics is the graphics language built into Logo, which allows complex graphics images to be created with a minimum of coding. The turtle is a triangular-shaped cursor, which is moved on screen with commands that activate the turtle as if you were driving it, for example, go forward 100 units, turn right 45 degrees, turn left 20 degrees.
The following Object Logo example converts Fahrenheit to Celsius:
print "|Enter Fahrenheit |
make "fahr ReadWord
print "|Celsius is |
print (:fahr - 32) * 5 / 9


text:
Conservation science jobs in Urban Conservation
Broaden your search
Refine your search
Found 4 Direct Employer jobs
Promote increased biodiversity in Chicago and Cook County for the benefit of natural system function and human well-being as part of our urban team.
Primate Behavior Research Interns are challenged to further our understanding of Black-&-Gold Howler monkeys through research projects of their design
Develop & monitor the implementation of a strategic science vision for applied Conservation Science. Conduct original research and publish findings.
This is an opportunity to step out of the classroom and into the field, gaining hands-on experience running a research project of their own design.


Lazy Bee Scripts
'Pinocchio' by Jane Spamer - additional information.
'Pinocchio' by Jane Spamer
 More about Jane Spamer
Period and Geography
Location: a fictitious country. Time Period: Timeless
Settings and Set Complexity
Number of Sets: 5
Setting: Forest, Wilderness, Village, Shop/Store, Ship and 'Other Location'
Set Requirements: Backdrops/simple flats
Unspecified ages
 Language Advisory:Help
A list of the required properties
A list of the required sound effects
A lighting plot
Costume notes
British pantomime. (There are positions for songs and dances in the script, but no specific suggestions for music.)
The classic children's tale given a panto twist, with Gepetto replaced by Dame Gepetto and a new love story woven into the narrative.
Lazy Bee Scripts Home Page


Protocol Buffers
zero_copy_stream.h
#include <google/protobuf/io/zero_copy_stream.h>
namespace google::protobuf::io
This file contains the ZeroCopyInputStream and ZeroCopyOutputStream interfaces, which represent abstract I/O streams to and from which protocol buffers can be read and written.
For a few simple implementations of these interfaces, see zero_copy_stream_impl.h.
These interfaces are different from classic I/O streams in that they try to minimize the amount of data copying that needs to be done. To accomplish this, responsibility for allocating buffers is moved to the stream object, rather than being the responsibility of the caller. So, the stream can return a buffer which actually points directly into the final data structure where the bytes are to be stored, and the caller can interact directly with that buffer, eliminating an intermediate copy operation.
As an example, consider the common case in which you are reading bytes from an array that is already in memory (or perhaps an mmap()ed file). With classic I/O streams, you would do something like:
char buffer[[]BUFFER_SIZE];
input->Read(buffer, BUFFER_SIZE);
DoSomething(buffer, BUFFER_SIZE);
Then, the stream basically just calls memcpy() to copy the data from the array into your buffer. With a ZeroCopyInputStream, you would do this instead:
const void* buffer;
int size;
input->Next(&buffer, &size);
DoSomething(buffer, size);
Here, no copy is performed. The input stream returns a pointer directly into the backing array, and the caller ends up reading directly from it.
If you want to be able to read the old-fashion way, you can create a CodedInputStream or CodedOutputStream wrapping these objects and use their ReadRaw()/WriteRaw() methods. These will, of course, add a copy step, but Coded*Stream will handle buffering so at least it will be reasonably efficient.
ZeroCopyInputStream example:
 Read in a file and print its contents to stdout.
int fd = open("myfile", O_RDONLY);
ZeroCopyInputStream* input = new FileInputStream(fd);
const void* buffer;
int size;
while (input->Next(&buffer, &size)) {
 cout.write(buffer, size);
}
delete input;
close(fd);
ZeroCopyOutputStream example:
 Copy the contents of "infile" to "outfile", using plain read() for
 "infile" but a ZeroCopyOutputStream for "outfile".
int infd = open("infile", O_RDONLY);
int outfd = open("outfile", O_WRONLY);
ZeroCopyOutputStream* output = new FileOutputStream(outfd);
void* buffer;
int size;
while (output->Next(&buffer, &size)) {
 int bytes = read(infd, buffer, size);
 if (bytes < size) {
 Reached EOF.
 output->BackUp(size - bytes);
 break;
 }
}
delete output;
close(infd);
close(outfd);
Classes in this file
Abstract interface similar to an input stream but designed to minimize copying.
Abstract interface similar to an output stream but designed to minimize copying.
class ZeroCopyInputStream
#include <google/protobuf/io/zero_copy_stream.h>
namespace google::protobuf::io
Abstract interface similar to an input stream but designed to minimize copying.
Known subclasses:
Members
ZeroCopyInputStream()
virtual
~ZeroCopyInputStream()
virtual bool
Next(const void ** data, int * size) = 0
Obtains a chunk of data from the stream. more...
virtual void
BackUp(int count) = 0
Backs up a number of bytes, so that the next call to Next() returns data again that was already returned by the last call to Next(). more...
virtual bool
Skip(int count) = 0
Skips a number of bytes. more...
virtual int64
ByteCount() const = 0
Returns the total number of bytes read since this object was created.
virtual bool ZeroCopyInputStream::Next(
 const void ** data,
 int * size) = 0
Obtains a chunk of data from the stream.
Preconditions:
 - "size" and "data" are not NULL.
Postconditions:
 - If the returned value is false, there is no more data to return or an error occurred. All errors are permanent.
 - Otherwise, "size" points to the actual number of bytes read and "data" points to a pointer to a buffer containing these bytes.
 - Ownership of this buffer remains with the stream, and the buffer remains valid only until some other method of the stream is called or the stream is destroyed.
 - It is legal for the returned buffer to have zero size, as long as repeatedly calling Next() eventually yields a buffer with non-zero size.
virtual void ZeroCopyInputStream::BackUp(
 int count) = 0
Backs up a number of bytes, so that the next call to Next() returns data again that was already returned by the last call to Next().
This is useful when writing procedures that are only supposed to read up to a certain point in the input, then return. If Next() returns a buffer that goes beyond what you wanted to read, you can use BackUp() to return to the point where you intended to finish.
Preconditions:
 - The last method called must have been Next().
 - count must be less than or equal to the size of the last buffer returned by Next().
Postconditions:
 - The last "count" bytes of the last buffer returned by Next() will be pushed back into the stream. Subsequent calls to Next() will return the same data again before producing new data.
virtual bool ZeroCopyInputStream::Skip(
 int count) = 0
Skips a number of bytes.
Returns false if the end of the stream is reached or some input error occurred. In the end-of-stream case, the stream is advanced to the end of the stream (so ByteCount() will return the total size of the stream).
class ZeroCopyOutputStream
#include <google/protobuf/io/zero_copy_stream.h>
namespace google::protobuf::io
Abstract interface similar to an output stream but designed to minimize copying.
Known subclasses:
Members
ZeroCopyOutputStream()
virtual
~ZeroCopyOutputStream()
virtual bool
Next(void ** data, int * size) = 0
Obtains a buffer into which data can be written. more...
virtual void
BackUp(int count) = 0
Backs up a number of bytes, so that the end of the last buffer returned by Next() is not actually written. more...
virtual int64
ByteCount() const = 0
Returns the total number of bytes written since this object was created.
virtual bool ZeroCopyOutputStream::Next(
 void ** data,
 int * size) = 0
Obtains a buffer into which data can be written.
Any data written into this buffer will eventually (maybe instantly, maybe later on) be written to the output.
Preconditions:
 - "size" and "data" are not NULL.
Postconditions:
 - If the returned value is false, an error occurred. All errors are permanent.
 - Otherwise, "size" points to the actual number of bytes in the buffer and "data" points to the buffer.
 - Ownership of this buffer remains with the stream, and the buffer remains valid only until some other method of the stream is called or the stream is destroyed.
 - Any data which the caller stores in this buffer will eventually be written to the output (unless BackUp() is called).
 - It is legal for the returned buffer to have zero size, as long as repeatedly calling Next() eventually yields a buffer with non-zero size.
virtual void ZeroCopyOutputStream::BackUp(
 int count) = 0
Backs up a number of bytes, so that the end of the last buffer returned by Next() is not actually written.
This is needed when you finish writing all the data you want to write, but the last buffer was bigger than you needed. You don't want to write a bunch of garbage after the end of your data, so you use BackUp() to back up.
Preconditions:
 - The last method called must have been Next().
 - count must be less than or equal to the size of the last buffer returned by Next().
 - The caller must not have written anything to the last "count" bytes of that buffer.
Postconditions:
 - The last "count" bytes of the last buffer returned by Next() will be ignored.
Authentication required
You need to be signed in with Google+ to do that.
Signing you in...
Google Developers needs your permission to do that.


iVolunteer is our school based volunteering project.
vInspired is a nationally recognised organisation.
vInspired for schools – accreditation for all students who are volunteers.
What is it?
Each student has an online account where they log hours spent volunteering towards a vInspired award.
How does it work?
vInspired schools provides an opportunity for all young people who devote any of their own time volunteering for schools and other appropriate community activities to be recognised, whether this is attending a Student Voice meeting, helping to plan an assembly or organising a charity event.
Young people add hours to their online personal volunteering account. They include a referee (the name and contact details of an adult who is in charge of the activity e.g. the name of a teacher and their email address); this referee is used centrally to verify that volunteering has taken place. Volunteering hours build towards vInspired awards. These are v10, v50 and v100 certificates. The numbers are representative of the hours spent volunteering.
Does it extend to volunteering beyond New Mills School?
Yes! Students can log any volunteering that they do. For example, they may be involved with Scouts/ Guides or church organisations, to name a few. If students have a reference to verify the time that they have spent volunteering this can count towards their vInspired award. Older students can add time that they have spent volunteering to help to prepare them for future careers e.g. time spent in hospices, care homes etc. Students who are not currently involved with volunteering outside of NMS can also search for available opportunities through their membership of the scheme e.g. become an online mentor for primary school children.
What about after NMS?
vInspired schools is part of a wider charity called vInspired. This enables young people up to the age of 25 to continue to log their volunteering hours meaning that students can continue to build up a resume of what they have done. vInspired awards are recognised by UCAS and major employers as a way for students to formally quantify the volunteering that they have done.
If you are involved in any of the following activities within school you are eligible to register for vInspired.
 - Anti Bullying Ambassadors
 - Sports Leaders
 - Senior Students
 - Student Council Representatives
Register today or speak to Mrs Davies for more information.
Why Volunteer?
There are loads of benefits to doing something for a good cause. You learn new skills, meet new people, and help your career - all at the same time as doing some good in the world.
Into music? You could volunteer at a music festival and get a free ticket in return. Love sport? There's loads of local sports clubs looking for enthusiastic volunteers to help out. What about travelling? Try a different part of the world to expand your horizons. Or maybe you prefer to stay at home? No problem. You can sign up online and make a difference without moving off your sofa.
Wherever you want to go in life, volunteering can help you get there.
Volunteering hours will impress future employers!
73% of employers would recruit a candidate with volunteering experience over one without. 94% of volunteers got their first job or a promotion thanks to the experience.
Volunteering demonstrates transferable skills, which you'll need to get a job or impress at your university interview. By donating your time to others and showing off your vInspired Awards you become a skilled sort of someone that every employer wants on their team.


Take the 2-minute tour ×
Let $X$ be a complex manifold and $g$ a hermitian metric on $X$. Consider the Riemannian exponential $\exp_p: T_p X \to X$.
If $\exp_p$ is holomorphic for every $p \in X$, then $(\exp_p)^{-1}$, suitably restricted, provide holomorphic normal coordinates near $p$, with respect to which the metric osculates to order 2 to the standard metric at the origin. This shows that $g$ is a Kähler metric.
However, Kähler is not sufficient to ensure that $\exp_p$ is holomorphic: take $X$ a curve of genus $g \geq 2$. If $\exp_p:T_pX \to X$ is holomorphic, then it lifts to a holomorphic map from $T_pX$ to the universal cover $\widetilde{X} = \Delta$, giving a holomorphic map $T_pX \simeq \mathbb{C} \to \Delta$, which must be constant by Liouville's theorem. In fact, one can see that $\exp$ cannot be holomorphic if $X$ is Kobayashi hyperbolic.
This leaves the question: What are the hermitian manifolds/metrics whose exponential map is holomorphic?
share|improve this question
In the $1$ complex dimension case this forces the metric to be locally isomorphic to the standard metric. The exponential map preserves length in the radial direction, so if it is conformal then it must also preserve length in the other direction. – Tom Goodwillie Jun 16 '11 at 3:52
2 Answers 2
up vote 10 down vote accepted
NB: I've had a little time to think about this and can now improve my answer, in particular, removing the real-analytic assumption, which, as I suspected, was not necessary. Here is the improved answer:
If the metric $g$ is Kähler, then having the exponential map from a point $p\in M$ be holomorphic makes it flat in a neighborhood of $p$.
Suppose that $\exp_p:T_pM\to M$ is holomorphic near $0_p\in T_pM$ (where we use the natural holomorphic structure on the complex vector space $T_pM$). Let $z:T_pM\to\mathbb{C}^n$ be a complex linear isometry, so that the hermitian metric on $T_pM$ is just $|z|^2$ in the usual sense. Let $Z$ be the holomorphic 'radial' vector field on $\mathbb{C}^n$, whose real part is the standard radial vector field on $\mathbb{C}^n$.
Then $$ {\exp_p}^*g = g_{i\bar j}(z)\ dz^i\ d\overline{z}^j $$ for some functions $g_{i\bar j}$ on a neighborhood of $0\in\mathbb{C}^n$. Since $g$ is Kähler, there is a function $f$ defined on a neighborhood of $0\in\mathbb{C}^n$ such that $$ g_{i\bar j} = \frac{\partial^2f}{\partial z^i\ \partial\overline{z}^j}. $$
Now, the condition that $z$ furnish Gauss normal coordinates for ${\exp_p}^*g$ is easily seen to be that
$$ \mathcal{L}_Z\bigl(\bar\partial f\bigr) = \bar\partial\bigl(|z|^2\bigr). $$ In particular, $ \bar\partial\bigl(\mathcal{L}_Z(f - |z|^2)\bigr) = 0$, so $\mathcal{L}_Z(f - |z|^2) = h$ for some holomorphic function $h$ on a neighborhood of $0$. This $h$ must vanish at $0$, so it is easy, by adding the real part of the appropriate holomorphic function to $f$ (which won't change $g$) to arrange that $h\equiv0$ and, moreover, that $f(0) = 0$. But this now implies that the real-valued function $f-|z|^2$ vanishes at the origin and also is constant along the radial vector field. Thus, $f = |z|^2$, and the metric $g$ is flat in these coordinates.
share|improve this answer
I do not like complex numbers and can make a mistake easily...
Let $L_p$ be a complex line in a tangent space $T_pX$. It is easy to see that $\exp_p$ gives an isometric embedding $L_p\hookrightarrow X$ which is also star-shaped with center at $p$; set $L=\exp_p(L_p)$
Take any other point $q\in L$, and let $L_q\subset T_q$ be the tangent subspace to $L$. Note that the maps $\exp_p$ and $\exp_q$ coinside (up to a shift) on the geodesic $(pq)$. [Here I use that if two holomorphic maps coincide on the real line then they coincide in the complex plane.] It follows that $L=\exp_q(L_q)$. Therefore $L$ is totally geodesic.
In other words: For any complex sectional direction in $X$, there is a tangent totally geodesic surface which is isometric to complex plane.
In particular, the sectional curvature in all complex sectional directions is zero and therefore the curvature of $X$ is identically zero; the later stated in Kobayashi--Nomizu, Foundations of differential geometry, Volume 2 IX, Prop. 7.1. (thanks to RdN).
share|improve this answer
I don't quite understand your arguement for exp of a complex line to be totally geodesic. But if so there is a lemma in vol II of Kobayashi Nomizu (Prop. 7.1) that says if two tensors with the symmetry and J invariance of a Kahler curvature tensor agree on complex lines they must be equal. It's clear curves have to be flat by Gauss lemma and totally geodesic would mean the second fundamental vanishes, so we can measure R of the ambient space from such curves. Thus the Prop. says total curvature must vanish. – RdN Jun 25 '11 at 16:43
_USER_, Thank you, I will include it in the answer – Anton Petrunin Jun 28 '11 at 10:30
Your Answer


text:
The Sankey chart type contains both columns and a special type of line chart.
Sankey diagrams illustrate a flow through, a process, or a system. Transactional data is optimal for this type of diagram. For example, financial transactions that take place as money moves through accounts or as a product is processed. Many marketing users are familiar with Sankey charts as they analyze sales conversions.
When you build a Sankey chart, you must provide at least 2 (two) attributes and one measure. Your x-axis attributes can contain at most 13 values; any more and you cannot view a SanKey chart. ThoughtSpot Sankey charts are read from left to right. The width of the flow represents the measure, the attributes or "steps" appear as solid bars:
The Austin Animal Center Outcomes data shows the outcome of processing for different animal breeds. The measure is the count of total animals. The chart shows how the animal's classification when they entered the system predicts the outcome.
By clicking on each flow, you can see the total number of animals that have identical breed and outcome types. Many domestic short-haired cats (over 10k) were transferred to other agencies, and nearly as many were adopted. However, all bats that came into the system were euthanized; there is a surprisingly large number of bats processed.


text:
|Product #: ELP402698|
MODEL DRAWING FOR CHALLENGING WORDPROBLEMS
Take the Singapore model-drawing strategy to the next level!
Go beyond an introductory look at the process by extending the basic techniques and learning how to apply them to higher-level problems. Author Lorraine Walker, an experienced math teacher, invites teachers to try each problem on their own. Then she lets them "look inside her head" as she decides how to approach the problem and sets up an appropriate model. Includes plenty of reproducible practice problems and even a "final exam." (A complete solution key, with a suggested model for solving each problem, is suggested model for solving each problem, is included.) (6-9) 160 pp.
Submit a review


: 2013-05-21 11:47
I basically agree with Alain that the real problem is that one cannot refer to values in an absolute way.
I'm afraid there is no really clean solution for that, as the ability to hide components is an essential part of the ML module system.
But one could imagine a way to control scope.
I'm not a fan of scope capture or module naming, because this adds a new category of binders, whereas the real problem is how to refer to them, more than how to bind them. Moreover if you refer to them using the usual dot notation, it looks like a scope is a module, which of course is not the case.
(Note that I'm not following the discussion on namespaces, which may be related)
A simple approach would be to use modules names as scope markers, and to refer to scopes using a new syntax, moving in a stack of environments. Everytime you enter a new named module (or module type), you push the current environment with the previous name.
A syntax could be:
^ would mean the global scope (only builtins and definitions from cmi's)
^M would mean go back to the scope inside module M (which must enclose the current position)
and since there maybe several modules with the same name, one could further allow nesting
^M^M: go back to module M inside module M (the default being the most external one).
type t = t1
module M = struct
 type t = t2
 module N = struct
 type t = t3
 end
 module P = struct
 type t = t4
 module M = struct
 type t = t5
 module type S = sig
 type t1 = ^.t
 type t2 = ^M.t
 type t3 = ^M.N.t (* or just N.t if N is not shadowed *)
 type t4 = ^P.t
 type t5 = ^M^M.t
 end
 end
 end
end
Actually I'm not sure starting from the outermost scope is the right approach, w.r.t refactoring.
(_PHONE_)
lpw25 (developer)
2013-05-21 14:17
edited on: 2013-05-21 14:23
> A simple approach would be to use modules names as scope markers, and to refer to scopes using a new syntax, moving in a stack of environments. Everytime you enter a new named module (or module type), you push the current environment with the previous name.
This solution doesn't address the problem of unnamed modules (in particular
functors). In general I dislike these kind of solutions because they seem to
treat modules as static containers, and in doing so relegate functors to a kind
of second-class status.
> (Note that I'm not following the discussion on namespaces, which may be related)
Since namespaces are essentially named environments, this might be the best
route to a general solution. The ability to create a namespace by hand (or to
capture the current environment as a namespace) would definitely be a full
replacement for "nonrec" and provide a general mechanism for accessing any
previously defined component:
 module F = functor (M: sig end) -> struct
 type t = A | B
 open namespace {{ type t }} as N (* use an "open" syntax to emphasise that N will not be part of the struct *)
 module M = struct
 type t = N#t * string
 end
 end
(_PHONE_)
garrigue (manager)
2013-05-21 14:36
> > A simple approach would be to use modules names as scope markers, and to refer to scopes using a new syntax, moving in a stack of environments. Everytime you enter a new named module (or module type), you push the current environment with the previous name.
> This solution doesn't address the problem of unnamed modules (in particular
> functors). In general I dislike these kind of solutions because they seem to
> treat modules as static containers, and in doing so relegate functors to a kind
> of second-class status.
This is not the case.
Functors can be just handled the same way as modules:
module F = functor (X : argsig) -> body
in both body and argsig you can refer to locally shadowed definitions coming from outside of F.
I see no real difference. If you have a submodule inside body you can also use ^F to refer to definitions in body outside of this submodule.
The point is that to use several times the same name you need nesting, and to get nesting you need to name modules anyway.
(_PHONE_)
lpw25 (developer)
2013-05-21 15:04
> If you have a submodule inside body you can also use ^F to refer to definitions in body outside of this submodule.
I see, so ^M refers to the "module M = module_expr" construct itself rather than to the module M.
> The point is that to use several times the same name you need nesting, and to get nesting you need to name modules anyway.
This is not technically true, you can put module expressions (and therefore create nested scopes) in other places than "module M = ..." :
 type t = A
 include (struct
 type t = B
 module M = struct
 type t = t * int
 end
 end : sig end)
or
 type t = A
 let m =
 (module struct
 type t = B
 module M = struct
 type t = t * int
 end
 end)
although these are obviously less important than functors.
(_PHONE_)
garrigue (manager)
2013-05-23 07:10
edited on: 2013-05-23 07:33
> I see, so ^M refers to the "module M = module_expr" construct itself rather than to the module M.
This is the idea.
A more restrictive definition would say: all the names in the current scope that were introduced inside module_expr, but not under another "module N = ..." construct.
I.e. this gives a partition of non-qualified identifiers.
It might be sensible to remove identifiers added through open from this list.
> This is not technically true, you can put module expressions (and therefore create nested scopes) in other places than "module M = ..."
Actually, your example with include is not valid: you end up defining two versions of t, which is not allowed in the same module.
A valid version would replace "type t = B" with "open N", with N containing a type t.
However, I think this goes outside of the original goal, which was about allowing access to t without changing the exported signature: you can already write the same code without using open.
(The problem is also solved by having ^ exclude all names introduced by open)
Concerning first-class modules, they are indeed a way to create modules without the "module" keyword.
However, your code is again easily rewritten as
 let m =
 let module M0 = struct
 type t = B
 module M = struct
 type t = ^M0.t * int
 end
 end in (module M0 : S)
without changing the signature.
(_PHONE_)
lpw25 (developer)
2013-05-23 12:24
edited on: 2013-05-23 12:30
> Actually, your example with include is not valid: you end up defining two versions of t, which is not allowed in the same module.
It is valid because the signature prevents the double definition. However, these examples don't actually matter, I was only illustrating that it was possible.
Personally, I still don't like this feature because it uses module names to refer to things that are not modules, and I think it will mostly just confuse people. I would prefer either a simple "nonrec" feature or a more general feature built around namespaces (or some other explicit handling of environments).
(_PHONE_)
yminsky (reporter)
2013-08-02 00:27
This thread seems to have died. What do people think about the original idea of adding a nonrec tag to the compiler? The syntax-extension version we use is an annoyance, and we'd like to stop using it.
My basic view is that it is that nonrec definitions are as natural at the type level as they are at the value level, and it would be best if the compiler made them available.
(_PHONE_)
yallop (developer)
2014-01-03 02:19
It looks like it's going to be difficult to reach agreement on adding a new keyword. How about introducing a different binding symbol for simple non-recursive aliases?
 type t
 module M = struct
 type t := t
 end
(cf. make's recursively expanded vs simply expanded variables, which also use '=' and ':=' respectively: _URL_ [^])
(_PHONE_)
gasche (developer)
2014-01-03 09:50
It's a bit doubtful as it mirrors the syntax for destructive substitution, and it's not regular (while we could allow both "rec" and "nonrec" on all binding forms, irrespectively of what their default is). I'm sorry to find myself in the position of impeding


syntactic extension where a "new" expression followed by an argument is identical to
 * invoking the constructor and passing the argument to it, so you can write the above example also as:
+ *

 *

 * var task = new TimerTask {
 * run: function() {
@@ -124,30 +131,38 @@
 * }
 * }
 *

+ *

 * which is very similar to Java anonymous inner class definition. On the other hand, if the type is an abstract
 * type with a single abstract method (commonly referred to as a "SAM type") or all abstract methods it has share
 * the same overloaded name), then instead of an object, you can just pass a function, so the above example can
 * become even more simplified to:
+ *

 *

 * var task = new TimerTask(function() { print("Hello World!") })
 *

+ *

 * Note that in every one of these cases if you are trying to instantiate an abstract class that has constructors
 * that take some arguments, you can invoke those simply by specifying the arguments after the initial
 * implementation object or function.
- *

The use of functions can be taken even further; if you are invoking a Java method that takes a SAM type,
+ *

+ *
The use of functions can be taken even further; if you are invoking a Java method that takes a SAM type,
 * you can just pass in a function object, and Nashorn will know what you meant:
+ *

 *

 * var timer = new Java.type("java.util.Timer")
 * timer.schedule(function() { print("Hello World!") })
 *

+ *

 * Here, {@code Timer.schedule()} expects a {@code TimerTask} as its argument, so Nashorn creates an instance of a
 * {@code TimerTask} subclass and uses the passed function to implement its only abstract method, {@code run()}. In
 * this usage though, you can't use non-default constructors; the type must be either an interface, or must have a
 * protected or public no-arg constructor.
- *

+ *

+ *

 * You can also subclass non-abstract classes; for that you will need to use the {@link #extend(Object, Object...)}
 * method.
- *
Accessing static members

+ *

+ *
Accessing static members

 * Examples:
 *

 * var File = Java.type("java.io.File")
@@ -176,7 +191,7 @@
 * var File = Java.type("java.io.File")
 * print(File.class.static === File) // prints true
 *

- *
{@code instanceof} operator

+ *
{@code instanceof} operator

 * The standard ECMAScript {@code instanceof} operator is extended to recognize Java objects and their type objects:
 *

 * var File = Java.type("java.io.File")
@@ -368,6 +383,7 @@
 *
If the Java method is overloaded (as in the above example {@code List.add()}), then your JavaScript adapter
 * must be prepared to deal with all overloads.

 *
You can't invoke {@code super.*()} from adapters for now.

+ *

 * @param self not used
 * @param types the original types. The caller must pass at least one Java type object of class {@link StaticClass}
 * representing either a public interface or a non-final public class with at least one public or protected
--- a/nashorn/src/jdk/nashorn/internal/runtime/CodeInstaller.java Thu Feb 28 22:59:31 2013 +0100
+++ b/nashorn/src/jdk/nashorn/internal/runtime/CodeInstaller.java Fri Mar 01 15:58:29 2013 +0530
@@ -30,7 +30,7 @@
 * As only the code generating package (i.e. Context) knows about
 * the ScriptLoader and it would be a security hazard otherwise
 * the Compiler is given an installation interface for its code.
- *
>
+ *

 * The compiler still retains most of the state around code emission
 * and management internally, so this is to avoid passing around any
 * logic that isn't directly related to installing a class
--- a/nashorn/src/jdk/nashorn/internal/runtime/Context.java Thu Feb 28 22:59:31 2013 +0100
+++ b/nashorn/src/jdk/nashorn/internal/runtime/Context.java Fri Mar 01 15:58:29 2013 +0530
@@ -509,7 +509,7 @@
 *
 * @param fullName full name of class, e.g. jdk.nashorn.internal.objects.JO$2P1 contains 2 fields and 1 parameter.
 *
- * @return the Class<?> for this structure
+ * @return the {@code Class<?>} for this structure
 *
 * @throws ClassNotFoundException if structure class cannot be resolved
 */
@@ -523,7 +523,7 @@
 *
 * @param fullName full name of class to load
 *
- * @return the Class<?> for the name
+ * @return the {@code Class<?>} for the name
 *
 * @throws ClassNotFoundException if class cannot be resolved
 */
--- a/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java Thu Feb 28 22:59:31 2013 +0100
+++ b/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java Fri Mar 01 15:58:29 2013 +0530
@@ -1463,7 +1463,7 @@
 }

 /**
- * Returns the set of <property, value> entries that make up this
+ * Returns the set of {@literal <property, value>} entries that make up this
 * ScriptObject's properties
 * (java.util.Map-like method to help ScriptObjectMirror implementation)
 *
@@ -1524,7 +1524,7 @@
 * of their keys to their values
 * (java.util.Map-like method to help ScriptObjectMirror implementation)
 *
- * @param otherMap a <key,value> map of properties to add
+ * @param otherMap a {@literal <key,value>} map of properties to add
 */
 public void putAll(final Map<?, ?> otherMap) {
 final boolean strict = getContext()._strict;
--- a/nashorn/src/jdk/nashorn/internal/runtime/ScriptRuntime.java Thu Feb 28 22:59:31 2013 +0100
+++ b/nashorn/src/jdk/nashorn/internal/runtime/ScriptRuntime.java Fri Mar 01 15:58:29 2013 +0530
@@ -815,7 +815,7 @@
 }

 /**
- * ECMA 11.8.1 - The less than operator (<) - generic implementation
+ * ECMA 11.8.1 - The less than operator ({@literal <}) - generic implementation
 *
 * @param x first object to compare
 * @param y second object to compare
@@ -828,7 +828,7 @@
 }

 /**
- * ECMA 11.8.2 - The greater than operator (>) - generic implementation
+ * ECMA 11.8.2 - The greater than operator ({@literal >}) - generic implementation
 *
 * @param x first object to compare
 * @param y second object to compare
@@ -841,7 +841,7 @@
 }

 /**
- * ECMA 11.8.3 - The less than or equal operator (<=) - generic implementation
+ * ECMA 11.8.3 - The less than or equal operator ({@literal <=}) - generic implementation
 *
 * @param x first object to compare
 * @param y second object to compare
@@ -854,7 +854,7 @@
 }

 /**
- * ECMA 11.8.4 - The greater than or equal operator (>=) -


Definitions for
Overview of noun yawn
The noun yawn has 1 senses? (first 1 from tagged texts)
1. (1) yawn, yawning, oscitance, oscitancy
Overview of verb yawn
The verb yawn has 2 senses? (first 1 from tagged texts)
1. (3) yawn
(utter a yawn, as from lack of oxygen or when one is tired; "The child yawned during the long performance")
2. gape, yawn, yaw
(be wide open; "the deep gaping canyon") © 2001-2013, Demand Media, all rights reserved. The database is based on Word Net a lexical database for the English language. see disclaimer
Classroom | Privacy Policy | Terms | Ad Choices