Dr. Jeffrey William Hollister
Curriculum Vitae
U.S. Environmental Protection Agency
Atlantic Ecology Division
27 Tarzwell Drive
Narragansett, RI 02882
cell:<PHONE_NUMBER>
office:<PHONE_NUMBER>
email<EMAIL_ADDRESS>Education:
Doctor of Philosophy in Environmental Science, December 2004
Department of Natural Resources Science, University of Rhode Island, Kingston, RI
Areas of emphasis: Landscape Ecology, Geospatial Sciences, and Environmental Monitoring
Coursework in: Coastal Ecology, Geographic Information Systems, Landscape Ecology, and Statistics
Dissertation Topic: Predicting Condition of Small Estuarine Systems along the United States' Atlantic
Coast. (Advisor: Peter V. August, Ph. D.)
Master of Environmental Management, May 1997
Nicholas School of the Environment, Duke University, Durham, NC
Areas of emphasis: Resource Ecology, Landscape Ecology, and Geospatial Sciences
Coursework in: Ecology, Geographic Information Systems, Remote Sensing, Landscape Ecology, Spatial
Statistics and Analysis, Conservation Biology, Statistics, and Forest Ecology
Master's project: An Analysis of Red Spruce Establishment Success in Highland County, Virginia.
(Advisor: Patrick N. Halpin, Ph. D.)
Bachelor of Science, Magna Cum Laude, May 1995
Baker University, Baldwin City, KS
Major: Biology with emphasis in ecology. (Advisor: Roger L. Boyd, Ph.D.)
Recent Coursework:
Data Mining and Analysis (STATS 202), Fall 2012
Stanford University, Stanford Center for Professional Development
Introduction to Computer Science using Java I (CSCI E-50a), Fall 2012
Harvard University, Division of Continuing Education
Introduction to Computer Science using Java II (CSCI E-50b), Spring 2013
Harvard University, Division of Continuing Education
Appointments:
Aug 2008 - Present Research Ecologist, US Environmental Protection Agency, Atlantic Ecology Division,
Narragansett, RI
Jan 2007 – Present Adjunct Assistant Professor, Department of Natural Resources Science, University of
Rhode Island, Kingston, RI
Dec 2005 – Present Senior Fellow, Coastal Institute, University of Rhode Island, Narragansett, RI
May 2006 – July 2008 Postdoctoral Landscape Ecologist, US Environmental Protection Agency, Atlantic
Ecology Division, Narragansett, RI
Aug 2005 – May 2006 Postdoctoral Teaching Fellow, Department of Science, Marine Science Section, U.S.
Coast Guard Academy, New London, CT
Jan 2005 – July 2005 Postdoctoral Associate, American Institute of Biological Sciences, National Ecologica
l Observatory Network (NEON) Project Office, Washington, DC
Jan 2004 – Dec 2004 Departmental Webmaster, Department of Natural Resources Science, University of
Rhode Island, Kingston, RI
Sep 2002 – Dec 2004 Graduate Teaching Assistant, Department of Natural Resources Science, University of
Rhode Island, Kingston, RI
May 2003 – Aug 2004 Geographic Information Systems/Biological Database Consultant, Rhode Island Natural
History Survey (RINHS), Kingston, RI
Jan 2001 – June 2001 Geographic Information Systems Consultant, Save the Bay, Inc. Kingston, RI
Sep 2000 – Sep 2002 Graduate Research Assistant, Department of Natural Resources Science, University of
Rhode Island, Kingston, RI
Sep 2000 – Sep 2002 Predoctoral Fellow, USEPA Atlantic Ecology Division/University of Rhode Island
Northeast Environmental Research Training Program, Narragansett, RI/Kingston, RI
June 1998 – July 2000 Lead Research Technician in Landscape Ecology, Landscape Ecology Lab, Joseph W.
Jones Ecological Research Center, Newton, GA
Aug 1997 – Jan 1998 Geographic Information Systems Specialist, Research Triangle Institute, Research
Triangle Park, NC
Research:
Statement of Research Interests: It is my general research philosophy to conduct nationally relevant research and
apply the results of that research to locally important issues. Both levels of research serve to inform
environmental policy and improve the environment, which is the ultimate goal of applied environmental research.
Towards that end, I hope to contribute to research in landscape ecology, geospatial technologies (e.g. geographic
information systems, spatial statistics, and remote sensing), ecoinformatics/reproducible research/data science,
and broad scale environmental monitoring and modeling. Specifically, I wish to continue my past work and use
broad scale monitoring data (e.g. Environmental Monitoring and Assessment Program data (EMAP), National
Land Cover Dataset (NLCD)) to explore the links between landscape structure (e.g. landscape composition and
configuration) and the ecological health and integrity of receiving waters. Furthermore, I am keenly interested in
applying cutting edge informatics and data science tools (e.g. semantic web, analytics, “Big Data”, eScience, etc.)
to environmental research conducted by the US EPA.
Research and Professional Experience:
Aug 2008 - Present Research Ecologist, U.S. Environmental Protection Agency, Atlantic Ecology Division,
Narragansett, RI
I serve as principle investigator and provide leadership to the division on landscape
ecological research, on application of geospatial sciences to the understanding of water
quality in fresh and estuarine waters, and on the use of informatics and information
management tools in environmental research. In this role, I have developed tools and
methodologies (GIS and statistical) using numerous software packages and languages (R,
ArcGIS, GRASS, Python, MS Excel) and have continued prior research on technology
transfer of data, analytical methods and predictive tools to Northeast States; and
developed statistical and modeling tools to facilitate use of defensible techniques in water
quality criteria development. Previously I have: served as Co-lead on a project studying
ecosystem services related to nutrient cycling in Northeastern lakes and ponds, was the
liaison between the National Ecological Observatory Network (NEON) and EPA’s
Ecosystem Services Research Program (ESRP), was task lead for our lakes ecosystem
services work, and served as co-task lead for developing decision support tools for a
project in Narragansett Bay and its watershed. I am currently serving as a co-Task Lead
on a project exploring cyanobacterial risk in lakes of the Northeastern US. I am also
exploring the use of data science, Big Data, informatics, and related technologies in our
various research programs. These data efforts include course work, a linked open data
project, and involvement with various outside organizations such as the ESIP Federation
and Data.gov
May 2006 – July 2008 Postdoctoral Landscape Ecologist, U.S. Environmental Protection Agency, Atlantic
Ecology Division, Narragansett, RI
Contributed to research and technology transfer of National Coastal Assessment data,
analytical methods and predictive tools to Northeast States. Developed statistical and
modeling tools (e.g. Conditional Probability Analysis with R and Excel) to facilitate use
of defensible techniques in water quality criteria development. Provided Landscape
Ecology, Spatial Statistics and GIS support to a variety of ongoing projects at the Atlantic
Ecology Division and within US EPA’s Office of Research and Development. Explored
linkages between landscape and downstream receiving waters and examined utility of
broad scale monitoring data in identifying and assessing ecological impairment.
Aug 2005 – May 2006 Postdoctoral Fellow, U.S. Coast Guard Academy, Dep. of Science, Marine Sciences
Section, New London, CT
Continued prior research on multi-scale interactions between landscape structure (via
NLCD) and sediment metal concentrations (via EMAP) and predictive modeling of
estuarine impairment. Worked with students, faculty and colleagues in the Marine
Sciences Section, the International Ice Patrol, and Information Services Division on a
wide variety of Geographic Information Systems projects.
Jan 2005 – July 2005 Postdoctoral Associate, American Institute of Biological Sciences, National Ecological
Observatory (NEON) Project Office, Washington, DC
Researched and assisted in planning of ecological observatories designed to address the
National Research Council’s Environmental Grand Challenges. Made specific
contributions in the design of the land use change component of NEON and design of a
Multi-Scaled Remote Sensing System designed to support and develop NEON analytical
tools and ecological forecasting models. Other duties included managing Geographic
Information Systems operations in the Project Office, maintaining the NEON web
presence (http://www.neoninc.org), interacting with research scientists and educators on
the NEON Senior Management Team and National Network Design Committee, and
assisting with the day-to-day operations of the NEON Project Office.
Sep 2000 – Dec 2004 U.S. EPA/URI Pre-doctoral Fellow/Doctoral Research/Graduate Research Assistant,
USEPA Atlantic Ecology Division/University of Rhode Island Northeast Environmental
Research Training Program, Narragansett, RI/Kingston, RI
Used monitoring data from the Environmental Monitoring and Assessment Program
(EMAP) and the National Land Cover Dataset (NLCD) to explore relationships between
landscape structure and indicators of estuarine condition. I specifically researched the
accuracy of the NLCD at multiple spatial scales, the role of spatial scale on the
relationship between landscape organization (e.g. landscape composition) and ecological
health and integrity of Atlantic coast estuaries, and built predictive models of estuarine
condition designed to locate estuaries with impacted ecological integrity. As member of
Landscape Ecology Working Group, discussed and assisted on projects at USEPA
Atlantic Ecology Division and URI utilizing landscape ecology, spatial analysis and
broad scale environmental monitoring data, in particular NLCD and EMAP.
May 2003 – Aug 2004 Geographic Information Systems/Biological Database Specialist, Rhode Island Natural
History Survey, Kingston, RI
Contributed towards the design and implementation of the Rhode Island Natural History
Survey (RINHS) Biodiversity Databases, specifically the Odonata of Rhode Island and
the Biota of Rhode Island. Designed field sampling methodology to accurately map
invasive species with geostatistical techniques.
Jan 2001 – June 2001 Geographic Information System/Eelgrass Restoration Modeling Consultant, Save the
Bay, Inc., Kingston, RI
Compiled bathymetry, current and historic eelgrass locations, historic, and water quality
data sets for use in eelgrass restoration efforts. Using the Short et al. (2002)
methodology, built geographic information system models of eelgrass restoration
potential and generated maps of areas in Narragansett Bay with higher potential of
eelgrass restoration success.
June 1998 – July 2000 Lead Research Technician in Landscape Ecology, J.W. Jones Ecological Research
Center, Landscape Ecology Lab, Newton, GA
Conducted research on ecological impacts of small wetland loss in the Southeastern
United States, use of home range in the design of gopher tortoise (Gopherus polyphemus)
reserves, and habitat use and landscape ecology of Northern Bobwhite Quail . Other
research duties included remote sensing data analysis (e.g. Landsat Thematic Mapper,
SPOT-XS, B&W and CIR Aerial Photography), analysis of vector and raster GIS data,
and field data collection (e.g. GPS, vegetation data). Supervised and assisted other
technicians, graduate students and summer field workers and managed day-to-day
operations of the Landscape Ecology Lab.
Aug 1997 – Jan 1998 Geographic Information Systems Specialist, Research Triangle Institute, Research
Triangle Park, NC
Developed a GIS methodology and series of Arc Macro Language scripts to facilitate the
identification of river reaches, as required by the Clean Water Act, in the states of North
Dakota and Arkansas.
May 1996 – July 1997 Resource Ecology Master’s Research, Duke University, Landscape Ecology Lab,
Durham, NC
Researched environmental, ecological, and spatial controls on the establishment success
of Red Spruce (Picea rubens) in northwestern Virginia. Research techniques included a
variety of geographic information systems analytical tools (e.g. Topographic
Convergence Index) and spatial statistics techniques (e.g. partial mantel’s tests).
Teaching:
Jan 2007 – Present Adjunct Assistant Professor, University of Rhode Island, Department of Natural
Resources Science, Kingston, RI
Team taught in alternating Spring Semesters, with Dr. Peter V. August, Ecology of
Fragmented Landscapes (NRS 534) a graduate level seminar course in Landscape
Ecology. Course included readings and group discussion of the concepts and principles
of landscape ecology.
Aug 2005 – May 2006 Postdoctoral Teaching Fellow, U.S. Coast Guard Academy, Department of Science,
Marine Sciences Section, New London, CT
Responsible for teaching 3 laboratory sections of Introduction to Geospatial Sciences
(major topics include: introduction to ESRI products, geospatial data management, spatial
analysis, cartography, coordinate systems and projections, geodatabases, development of
geodatabase for emergency management and hazardous materials response) and teaching
3 sections of a core course in Oceanography (major topics include: marine and coastal
ecology, fisheries, meteorology, physical oceanography, coastal oceanography, estuarine
classification, and oil spill impact/response).
Sep 2002 – Dec 2004 Graduate Teaching Assistant, University of Rhode Island, Department of Natural
Resource Science, Kingston, RI
Coordinated Conservation of Populations and Ecosystems course (major topics include:
conservation biology, ecological and socioeconomic importance of biodiversity,
introductory population, community, and ecosystems ecology, genetics, metapopulations,
landscape ecology, and data analysis for conservation biology). Taught laboratory
sections for Fundamentals of Geographic Information Systems (major topics include:
operating systems essentials for GIS, ArcInfo Workstation, Editing and creating spatial
data, cartography, and introductory spatial analysis).
May 2003 – Aug 2004 Geographic Information Systems/Database Consultant, Rhode Island Natural History
Survey, Kingston, RI
Provided training to Rhode Island Natural History Survey and Ecological Inventory and
Monitoring Stewardship Program Staff on ArcView and ArcMap GIS and Trimble GPS.
Training focused on use of these products for ecological and natural history applications.
June 2001 Geographic Information Systems Consultant, National Park Service, Gateway
National Recreation Area, Staten Island, NY
Trained Gateway National Recreation Area staff in use of ArcView, Spatial Analyst, and
Trimble GPS products.
Publications (21 total):
Peer Reviewed Articles
Milstead, W. B., J.W. Hollister, R. B. Moore, H. A. Walker (Submitted). Estimating Summer Nutrient
Concentrations in Northeastern Lakes from SPARROW Load Predictions and Modeled Hydraulic Residence
Time. Submitted to PLoS ONE.
Hollister, J. W., W.B. Milstead, M.A. Urrutia (2011). Predicting Maximum Lake Depth from Surrounding
Topography. PLoS ONE 6(9): e25764. doi:10.1371/journal.pone.0025764. Contribution no. AED-11-013
Hollister, J. W., W.B. Milstead (2010). Using GIS to Estimate Lake Volume from Limited Data. Lake and
Reservoir Management. 26(3)194-199. Contribution no. AED-10-018.
Morzillo, A. T., A. G. Mertig, J. W. Hollister, N. Garner, J. Liu (2010). Socioeconomic Factors Affecting
Local Support for Black Bear Recovery Strategies. Environmental Management. 45:1299-1311. Contribution
no. WED-09-060
Benyi, S. J., J. W. Hollister, J. A. Kiddon, H. A. Walker. (2009). A Process for Comparing and Interpreting
Differences in Two Benthic Indices in New York Harbor. Marine Pollution Bulletin. 59:65-71 Contribution
no. AED-08-023.
Hale, S. S. and J. W. Hollister. (2009) Beyond Data Management: How Ecoinformatics Can Benefit
Environmental Management Programs. Environmental Monitoring and Assessment. 150:227-235.
Contribution No. AED-07-077.
Hollister, J. W., J. F. Paul, and H. A. Walker (2008). CProb: A Computational Tool for Conducting
Conditional Probability Analysis. Journal of Environmental Quality. 37(6):2392-2396. Contribution No.
AED-07-095.
Hollister, J. W., P. V. August, J. F. Paul, and H. A. Walker. (2008). Predicting Estuarine Sediment Metal
Concentrations and Inferred Ecological Conditions: An Information Theoretic Approach. Journal of
Environmental Quality. 37(1):234-244. Contribution No. AED-07-013.
Hollister, J. W., P. V. August, and J. F. Paul. (2008). Effects of Spatial Extent on Landscape Structure and
Sediment Metal Concentration Relationships in Small Estuarine Systems of the United States’ Mid-Atlantic
Coast. Landscape Ecology. 23(SI):91-106. Contribution No. AED-06-074.
Hollister, J. W., M. L. Gonzalez, J. F. Paul, P. V. August, J. L. Copeland (2004). Assessing the Accuracy of
the National Land Cover Dataset at Multiple Spatial Extents. Photogrammetric Engineering and Remote
Sensing. 70(4):405-414. Contribution No. AED-02-012.
Paul, J. F., J. L. Copeland, M. Charpentier, P. V. August, and J. W. Hollister (2003). Overview of Geographic
Information Systems applications in Estuarine Monitoring and Assessment Research. Marine Geodesy.
26:63-72. Contribution No. AED-02-061
Eubanks, J. O., J. W. Hollister C. Guyer, and W.K. Michener. (2002). Reserve Area Requirements for Gopher
Tortoises (Gopherus polyphemus). Chelonian Conservation and Biology. 4(2).
Chapters
Michener, W. K., J. B. Atkinson, D. G. Edwards, J. W. Hollister, P. F. Houhoulis, P. M. Johnson, and R. N.
Smith. (2000). Habitat Characteristics of Northern Bobwhite Quail-Hunting Party Encounters: A Landscape
Perspective. Pages 173-182 in L.A. Brennan, W.E. Palmer, L.W. Burger, Jr., and T.L. Pruden (eds.). Quail
IV: Proceedings of the Fourth National Quail Symposium, Tall Timbers Research Station, Tallahassee, FL.
Non Peer Reviewed Submissions (i.e., Letters, Magazine Articles, etc.)
Hollister, J.W. (2010). Ecology on the Web – 3 Years Old. Submitted to Ecology on the Web, Bulletin of the
Ecological Society of America. 91(2).
Morzillo, A. T., J. W. Hollister, C. A. Drew, M. E. Rocca, M. E. Baker, J. M. Bossenbroek, C. A. Mazzarella.
(2008). A Young Scientist’s Guide to Gainful Employment: Recent Graduates’ Experiences and Successful
Strategies. Bulletin of the Ecological Society of America. 89(2)193-203. WED Contribution No. WED-07-
178. Contribution No. AED-08-047.
Hollister, J. W. (2007). Moving Forward with Ecological Informatics and Reproducibility. ESA News and
Views Blog. http://www.esa.org/esablog/?p=62. Contribution No. AED-07-097.
Hollister, J. W. (2007). Natural Resource Management Partnership Annotated Website Link. Submitted to
Ecology on the Web, Bulletin of the Ecological Society of America. 88(2).
Hollister, J. W. and H. A. Walker (2007). Beyond Data: Reproducible Research in Ecology and
Environmental Science. Frontiers in Ecology and the Environment. 5(1):11-12. Contribution No. AED-07-
003.
Hollister, J. W. and L. M. Ernst (2001) Eelgrass Habitats get a Boost from Geographic Information Systems.
Maritimes. 43(1):16-18.
Thesis/Dissertations
Hollister, J. W. (2004). Predicting Condition of Small Estuarine Systems Along the United States’ Atlantic
Coast. Ph.D. Dissertation, University of Rhode Island. 143 pp.
Hollister, J. W. (1997). An Analysis of Red Spruce Establishment Success in Highland County, Virginia.
Masters of Environmental Management Project, Duke University.
Presentations (40 total):
Special Sessions and Workshops
“Who am I and Why am I here: Lakes, Linked Data, and R” (Invited presentation to Data.gov Semantic Web
and Linked Data working group). Aug 2012
“Job Hunting Experiences of Recent Graduates in Landscape Ecology” (Co-organized with Anita Morzillo).
US Chapter of the International Association for Landscape Ecology Annual Meeting, Tucson, AZ. April
2007.
“Conditional Probability Analysis: Demonstration using R and R-Excel” (Co-presented with John F. Paul).
Workshop for Developing Suspended and Bedded Sediment Water Quality Criteria, Arlington, VA.
November 2006.
"Marine and Coastal Applications of Landscape Ecology" (Co-organized with Matt Nicholson, Elizabeth
Hinchey and Brad Robbins). US Chapter of the International Association for Landscape Ecology Annual
Meeting, Las Vegas, Nevada. April 2004.
“Spatial Analysis Workshop” (Invited workshop on Spatial Statistics and Spatial Analysis for St. Lawrence
University Faculty and Staff). St. Lawrence University, Canton, NY. December 2002.
Seminars, Presentations, and Accepted Abstracts
Hollister, J.W., W. B. Milstead, K. C. Hychka, H.A. Walker, J. L. Copeland. Nutrients, Ecosystem Services,
and Human Health in Northeastern Lakes and Ponds. Invited Seminar at Western Connecticut State
University, Dept of Biology Seminar Series. 30 November, 2011.
Hollister, J. W. and W. B. Milstead. Using GIS to Estimate Lake Volume from Limited Data. Annual
Meeting of the North American Lake Management Society, Hartford, CT. October 2009. Contribution No.
AED-09-068.
Hollister, J. W. and W. B. Milstead. A Simple GIS Approach for Estimating Lake Volume from Limited
Data. Northeast Arc Users Group Annual Meeting, Nashua, NH. October 2009. Contribution No. AED-09-
067.
Hollister, J.W. “Using CProb in R and Excel to conduct conditional probability analysis” Annual Meeting of
the North East Association of Environmental Biologists, Westport, CT. March 2009.
Walker, H. A., J. W. Hollister, B. Wilson, R. Scarborough, D. Carter, D Kreeger, K. Laudenabuch-Nelson, A.
Howell, C. Strobel. More precise assessment of benthic conditions in Delaware Bay using probability survey
data, targeted sampling and acoustic habitat maps. Sixth National Monitoring Conference, “Monitoring: Key
to understanding our waters”. Atlantic City, New Jersey. May 2008. Contribution No. AED-08-xxx
Hollister, J. W. The new space race: Getting landscape data more fully integrated into causal analysis. Super
Causal Analysis Team Workgroup (SuperCAT) Meeting. February 2008.
Hollister, J. W. Estuarine monitoring and assessment: The integral role of GIS. Rhode Island Geographic
Information Systems Conference, Narragansett RI, June 2007. Contribution No. AED-07-074
Walker, H. A., J. W. Hollister, B. Wilson, R. Scarborough, D. Carter, D Kreeger, K. Laudenabuch-Nelson, A.
Howell, C. Strobel. More precise assessment of benthic conditions in Delaware Bay. Environmental
Monitoring and Assessment Program Annual Symposium, Washington DC, April 2007. Contribution No.
AED-07-027.
Hollister, J. W. Ecoinformatics: What is it and why should you care? Seminar at US EPA Atlantic Ecology
Division, February 2007.
Hollister, J. W. Predicting Condition of Small Estuarine Systems along the United States Atlantic Coast.
Seminar at US EPA Atlantic Ecology Division, June 2006.
Hollister, J. W., P.V. August, J.F. Paul. Predicting Estuarine Sediment Metal Concentration along the United
States’ Atlantic Coast. North Atlantic Chapter of the Society of Environmental Toxicology and Chemistry
12th Annual Meeting, Portland, ME. June 2006.
Hollister, J. W., P. V. August, J. F. Paul. Predictive modeling of estuarine condition along the United States’
Atlantic Coast. US Chapter of the International Association for Landscape Ecology Annual Meeting, San
Diego, CA. April 2006.
Hollister, J. W., J. Copeland, P. V. August, J. F. Paul. Coastal landscape structure and estuarine condition
relationships: How does scale alter model reliability? US Chapter of the International Association for
Landscape Ecology Annual Meeting, Las Vegas, Nevada. April 2004.
Hollister, J. W. Assessing and Monitoring out Nation's Estuaries: The Past, Present and Future of Geographic
Information Systems Applications? Invited Speaker for Geographic Information Systems and Environmental
Monitoring special session at the North Atlantic Chapter of the Society of Environmental Toxicology and
Chemistry 9th Annual Meeting, Mystic, CT. April 2003
Hollister, J. W., J. Copeland, P. V. August, J. F. Paul. Assessing the Predictive Capability of Hydrologically
Defined Sampling Units for Landscape Analysis. Invited speaker at St. Lawrence University, Canton, NY.
December 2002
Hollister, J. W., J. Copeland, P. V. August, J. F. Paul. Utilizing Hydrologically Defined Sampling Units for
Landscape Analysis. Northeast Arc Users Group Annual Meeting, Mt. Washington Hotel, Bretton Woods,
NH. November 2002.'
Contributed Posters
Copeland, J. L., J. W. Hollister. Geospatial Tools for Ecosystem Services. ESRI International Users
Conference, San Diego, CA. June 2010. Contribution No. AED-10-076.
Hollister, J. W., W. B. Milstead. Linking landscapes to ecosystem services: Landscape structure as an
indicator and predictor of water clarity in New England lakes. US Chapter of the International Association
for Landscape Ecology Annual Meeting, Athens, GA. April 2010. Contribution No. AED-10-021
Milstead, W. B., J. W. Hollister, H. A. Walker, J. A. Kiddon, J. L. Copeland, H. W. Buffum, M. A.
Charpentier, D. J Keith. A Northeastern US Lakes Database to Support Ecosystem Services Research.
Annual Meeting of the North East Association of Environmental Biologists, Newport, RI, March 2010.
Contribution No. AED-10-031
Hollister, J. W., A. Kuhn-Hines, J. L. Copeland. Mapping human population density in and around New
Hampshire’s common loon lakes: A comparison of dasymetric methods. US Chapter of the International
Association for Landscape Ecology Annual Meeting, Snowbird, UT April 2009. Contribution No. AED-09-
018
Hollister, J. W., J. L Copeland. Where New England Lives: A dasymetric population map for New England.
Northeast Arc Users Group Annual Meeting, Hyannis, MA September 2008. Contribution No. AED-08-057
Hollister, J. W., H. W. Walker. Landscape Thresholds and the Condition of Northeastern Estuaries. New
England Estuarine Research Society Spring Meeting. Portsmouth, NH. May 2008. Contribution No. AED-
08-035.
Keith, D. J., J. W. Hollister, A. Kuhn-Hines. The Distribution of Colored Dissolved Organic Matter and
Salinity along the Southern New England Coast from Aircraft Remote Sensing. American Society of
Limnology and Oceanography annual meeting, Orlando, FL. March 2008. Contribution No. AED-07-111
Hollister, J.W., A. T. Morzillo, E. J. Weissberger, J. A. Nestlerode, and J. F. Paul. Comparing Apples to
Apples: Generating a Nationally Consistent Index of Benthic Biology in Estuarine Waters. Estuarine
Research Foundation Annual Meeting, Providence, RI November 2007. Contribution No. AED-07-081.
Benyi, S.J., Kiddon, J. A., Hollister, J.W., Walker, H. A. Interpreting Differences in Several Benthic Indices.
Estuarine Research Foundation Annual Meeting, Providence, RI November 2007.
Hollister, J.W. and J.L. Copeland. Relating distance weighted measures of landscapes to water quality: Does
distance matter? US Chapter of the International Association for Landscape Ecology Annual Meeting,
Tucson, AZ. April 2007. Contribution No. AED-07-004.
Weissberger, E. J. , J. A. Nestlerode, A. T. Morzillo, J. W. Hollister, J. F. Paul. Developing a nationally
consistent approach for assessing regional associations between nutrients and benthic biological condition in
estuarine waters. Environmental Monitoring and Assessment Program Annual Symposium, Washington DC,
April 2007. Contribution No. GED-07-2880.
Hollister, J. W., J. F. Paul, J. L. Copealand, M. L. Gonzalez, P.V. August. Accuracy of the 1992 National
Land Cover Dataset area estimates: An analysis at multiple spatial extents. North American Land Cover
Summit, Washington, DC. September 2006. Contribution No. OD-06-017.
Hayden, B, Brewer C., Estrin D., Goldman J., Michener W., Baru C., Cid C., Collinge S., Foster D., Franklin
J., Goldberg, D., Huenneke, L., Krishtalka, L., Levitt, J., MacMahon, J., Nadelhoffer, K., Palmer, M.,
Reichman, O. J., Swain, H., Welge, M., Hollister, J. W. Designing the National Ecological Observatory
Network (NEON). North American Carbon Program Data Management Workshop, New Orleans, LA.
January 2005.
Hollister, J. W., J. Copeland, P. V. August, J. F. Paul. Assessing the Predictive Capability of Landscape
Sampling Units of Varying Scale in the Analysis of Estuarine Condition. US Chapter of the International
Association for Landscape Ecology Annual Meeting, Banff, Alberta. April 2003.
Hollister, J. W., J. F. Paul, J. Copeland, R. L. Comeleo, M. Charpentier, P. V. August, M. Brush. Relating
Estuarine Condition with Landscape Structure in the Mid-Atlantic Region of the United States. Ecological
Society of America Annual Meeting, Madison, WI. August 2001.
Hollister, J. W., J. F. Paul, J. Copeland, R. L. Comeleo, M. Charpentier, P. V. August, M. Brush. Landscape
Structure and Estuarine Condition in the Mid-Atlantic Region of the United States: II. Assessing the Accuracy
of the National Land Cover Dataset at Multiple Extents. Poster Presentation for the US-International
Association for Landscape Ecology Annual Meeting, Tempe, AZ. April 2001.
J. Ott., J. W. Hollister, C. Guyer, and W. K. Michener. Re-evaluating Guidelines for Gopher Tortoise
(Gopherus polyphemus) Reserve Design. Ecological Society of America Annual Meeting, Snowbird, UT.
August 2000.
Hollister, J. W., J. Ott, C. Guyer, and W. K. Michener. Estimating Preserve Size for Gopher Tortoises
(Gopherus polyphemus). US Chapter of the International Association for Landscape Ecology Annual
Meeting, Ft. Lauderdale, FL. April 2000.
Hollister, J. W. and W. K. Michener. Landscape Ecology of the Northern Bobwhite Quail in the Coastal Plain
of Georgia. International Association for Landscape Ecology World Congress, Snowmass, CO. July/Aug
1999.
Grants:
Geospatial Statistical Analysis Seminar, A Cooperative Training Project Between the University of Rhode
Island and the US EPA Atlantic Ecology Division, US EPA NHEERL Grant, June 2003. PI's: P. August, L.
González; Co-PI's: R. Sand, J. Opaluch, J. Hollister, and D. Grossman-Garber.
Estuarine Condition and Landscape Structure Relationships in the Mid-Atlantic and Southern New England
Regions of the United States, EPA/URI Pre-Doctoral Fellowship (Major Advisor: Peter V. August, EPA
Mentor: John F. Paul).
Awards:
2011 US EPA, Region 1, Commendable Service Award for Contributions to the Northeast Lakes and Ponds
2010 US EPA Science and Technological Achievement Award Honorable Mention
2010 ESRI International Users Conference, First Place Poster in Software Integration.
2007 USEPA, National Health and Environmental Effects Laboratory, Strategic Goal 4 Award: Science
Integration –Interdivisional Laboratory Research, Received with Eric Weissberger, Anita Morzillo, Janet
Nestelrode, and John Paul.
2006 USEPA, Atlantic Ecology Division, On The Spot Award, Contributions to SABS Workshop
2003 Best Student Presentation, North Atlantic Chapter of the Society of Environmental Toxicology and
Chemistry 9th Annual Meeting, Mystic CT
2003 Rhode Island Surfrider Foundation Robert Lloyd Scholarship
2001 NASA-MSU Professional Enhancement Award
Phi Eta Sigma National Honor Society
Blue Key National Honor Society
Graduate Advising and Committees:
Kylie Bishop, 2008, Ph. D. Thesis Defense Committee, Deakin University, Warrnambool, Australia
Ann Borowik, 2008, Masters of Environmental Science and Management Written Comprehensive Exam
Committee, University of Rhode Island, Kingston, RI.
Professional Activities:
Liaison between USEPA’s Ecosystem Services Research Program (ESRP) and the National Ecological
Observatory Network (NEON).
Provided Peer Review for: Landscape Ecology, Trends in Ecology and Evolution, Plant Ecology, Integrated
Environmental Assessment and Management, Remote Sensing of Environment, Journal of Environmental
Quality, Selbyana, Minnesota Sea Grant, and numerous USEPA Office of Research and Development internal
reviews.
List administrator for R-sig-ecology, a Special Interest Group mailing list on the use R in Ecology.
Participated in the Causal Analysis/Diagnosis Decision Information System (CADDIS) Planning Retreat at
Hueston Woods Conference Center, Oxford, OH, April 30 – June 3.
Co-organized (along with Jason Grear, Suzy Ayvazian, Peter August and Deb Coty) a short course by David
Anderson entitled, "Information Theoretic Model Selection and Multimodel Inference in Science and
Managament", March 28-29, URI Coastal Institute, Narragansett, RI.
Section Editor,“Ecology on the Web” Department of the Bulletin of the Ecological Society of America, Feb
2007 - Present
Attended Science Environment for Ecological Knowledge (SEEK) Postdoctoral and New Faculty Training in
econiformatics: Jan 8-12, 2007, University of New Mexico.
Graduate Student Representative to Department of Natural Resources Science at the University of Rhode
Island for 4 years
Graduate student representative at URI-ADVANCE workshops with Department of Natural Resources
Science at the University of Rhode Island
Helped draft a Diversity Statement for Department of Natural Resources Science at the University of Rhode
Island
Assisted with compiling links of software and graduate programs in spatial ecology for the US-IALE web
page (http://www.usiale.org/rellinks.htm).
Society Memberships and Committees (Past and Current):
US Chapter of the International Association of Landscape Ecology
Counselor at Large, 2012-Present
Chair, Site Selection Committee 2012- Present
Program Chair, 2012 Annual Meeting, Newport, RI
Strategic Planning Committee, 2004-2006
Awards Committee, 2009 - Present
Society for Conservation GIS
Ecological Society of America
Rhode Island Natural History Survey
Northeast Arc Users Group
Host Committee and Social Chair for 2010 Northeast Arc Users Group annual meeting in Newport,
RI.
Chair, Poster session 2006 Northeast Arc Users Group annual meeting in Mystic, CT
Host Committee for 2006 Northeast Arc Users Group annual meeting in Mystic, CT
Software and Computing Skills:
Geographic Information Systems: approximately 18 years experience with ArcGIS, Arc/INFO, ArcView;
approximately 3 years experience with Geostatistical Analyst; approximately 1 year experience with ArcIMS
and ArcGIS Server
Remote Sensing: approximately 3 years experience with ERDAS Imagine
GPS: approximately 3 years experience with Trimble ProXR, Trimble GeoExplorer, Trimble GeoXT,
Trimble Pathfinder Office
Statistics: approximately 8 years experience with R, including using R as a GIS; approximately 5 years
experience with SAS; approximately 2 years experience with SPSS; approximately 1 year experience with SPlus,
and SigmaPlot
Database: approximately 3 years experience with MS Access and SQL
Webpage Maintenance, Design and Administration: approximately 3 years experience with HTML;
approximately 2 years experience with Dreamweaver; approximately 1 year experience with Typo3;
approximately 1 year experience with Apache and Internet Information Server; approximately 1 year
experience with MovableType; approximately 1 year experience using Drupal; less than 1 year experience
with RApache and javascript
Programming: approximately 9 years experience with Arc Macro Language; approximately 5 years
experience with Python; approximately 2 years experience with Visual Basic for Applications - MS Access,
and MS Excel; less than 1 year experience with Java
Operating Systems and Office Software: daily use and systems administration with Windows NT/2000/XP;
daily use and extensive knowledge of Microsoft Office 2000; former daily UNIX user. Red Hat and Ubuntu
Linux user.
Additional Information:
Award Winning Homebrewer
Barbeque-er
Mediocre Dart player
SCUBA Certified
References:
Available upon request


You don't necessarily need to use Git to get our source code. GitHub offers a source tarball download for any revision of our repository.
For details on how to contribute code have a look at this Wiki Page.


class: center, middle, inverse, title-slide .title[ # Session 6: Introduction to R Markdown ] .subtitle[ ## R for Stata Users ] .author[ ### Luiza Andrade, Marc-Andrea Fiorina, Rob Marty, Rony Rodriguez-Ramirez, Luis Eduardo San Martin, Leonardo Viotti ] .date[ ### The World Bank – DIME |
WB Github
March 2023 ] ---  # Preamble - Make sure you have the packages `tinytex`, `stargazer`, and `huxtable` installed ```r # Packages we used for other sessions, install only if needed install.packages("dplyr") install.packages("huxtable") # New packages install.packages("tinytex") install.packages("stargazer") # No need to load the packages for now ``` --- # Preamble (
5 min) - Use `tinytex` to install LaTeX - If you're using a WB computer: 1. Download this file: https://osf.io/sehzg 1. Run `tinytex:::install_prebuilt("location/to/file.zip")` (notice the triple colon) - If you're not: 1. Run `tinytex::install_tinytex()` --- # Preamble This will take a while. Leave it running  --- # Preamble - LaTeX can be unpredictable in WB computers. It's possible that this didn't work - Don't worry for now, just follow the approppriate instructions we'll specify in the exercises --- # Introduction - This is an **introduction** to R Markdown - We'll show: 1. How to write and knit (output) R Markdown documents 2. How to format text and R code in R Markdown documents 3. How to include regression tables in R Markdown documents --- # Table of contents 1. [Dynamic documents](#dynamic-documents) 2. [Knitting](#knitting) 3. [Markdown](#markdown) 4. [R code](#r-code) 5. [R plots](#r-plots) 6. [Inline code](#r-inline-code) 7. [Regression outputs](#regression-outputs) 8. [Annex](#annex) --- class: inverse, center, middle name: dynamic-documents # Dynamic documents

 --- # Dynamic documents and R Markdown - Dynamic documents are documents that include both text and code outputs - They are generated by a script and are updated automatically every time the script runs - R Markdown is a type of dynamic document --- # Dynamic documents - Code and documentation is produced together  --- # Why use dynamic documents? - Increased research transparency. Documents are fully reproducible - No more copying and pasting outputs from R to a document editor - Nice option for simple documents that don't require a lot of formatting - Can include code snippets --- class: inverse, center, middle name: knitting # Knitting R Markdown documents

 --- # Knitting R Markdown documents - R markdown combines text, R code, and rendered outputs - The text follows Markdown's syntax - The code and outputs follow R's syntax - Knitting an R Markdown document is rendering the text and code portions into a single output - The output can be a PDF, Word, or HTML document --- # Knitting R Markdown documents .exercise[ ## Exercise 1: Knit an R Markdown document (
2 min, leave it running) 1. Go to the course repository: https://osf.io/86g3b/ 2. In the files panel, download `R for Stata Users - 2023 March` > `scripts` > `r-markdown-template.Rmd` 3. Open this file in RStudio + If the installation of tinytex didn't work, change line 2 to: `output: html_document` 4. Click on `Knit`. If RStudio asks you to update some packages, select `Yes` ] --- # Knitting R Markdown documents Note that this might take a while  We'll continue with markdown syntax while it finishes --- class: inverse, center, middle name: markdown # Markdown

 --- # Markdown - The text part of R Markdown follows the syntax of Markdown - Markdown is a "light" markup language. It's similar to Latex or HTML, but simpler - Markdown was designed to be easily readable while allowing to format text and document sections --- # Markdown - Headers - Headers in markdown are preceded by pound (`#`) symbols - Additional pound symbols denote a lower level in the headers hierarchy  --- # Markdown - Paragraphs - Text not preceded by special symbols are regular paragraphs.  --- # Markdown - Text emphasis - Emphasized text is enclosed by special symbols.  --- # Markdown - Lists - Markdown allows us to use both ordered and unordered lists.  --- # Markdown - Lists - Markdown allows us to use both ordered and unordered lists.  --- # Markdown - Links - We can also include links as text in Markdown.  --- # Markdown - Tables - Lastly, we can include tables in Markdown text.  --- # Markdown - Tables - Lastly, we can include tables in Markdown text.  --- # Exercise 1 results - If exercise 1 worked, you'll now see this PDF file (or HTML) in the folder where you saved `r-markdown-template.Rmd`  - If it's still running, let it run until it finishes - If it failed, try again after changing `output: html_document` in line 2 --- class: inverse, center, middle name: r-code # R Code

 --- # Including R code - R code in R Markdown goes inside **fenced code blocks**, as the one below ```` ```{r} # Your R code goes here ``` ```` --- # Including R code - To add new block, you can type the fences directly, go to `Insert` > `R` in the script panel of RStudio, or type `CTRL` + `ALT` + `i`  --- # Including R code .exercise[ ## Exercise 2: Include the summary of a variable (
2 min) 1. Create a header named `R Code` at the bottom of `r-markdown-template.Rmd` 2. Create a new fenced code block where you load the dataset `mtcars` + `mtcars` is a built-in dataset. Load it with: `data(mtcars)` 3. Inside the same block, get the summary of the variable `mpg` with `summary(mtcars$mpg)` 4. Knit. You'll have to close the PDF document if you have it opened ] --- # Including R code ```` ## R Code ```{r} data(mtcars) summary(mtcars$mpg) ``` ```` --- # Including R code  --- # Including R code - Note that the output echoes both the code and the output - What if we wanted to include the output but not the code? - We use the argument `echo = FALSE` in the fenced code block for that - Code block arguments are separated by commas inside the curly brackets, as in: `{r, echo = FALSE}` --- # Including R code .exercise[ ## Exercise 3: Omit the code when knitting R code (
1 min) 1. Add the option `echo = FALSE` to the fenced code block created in exercise 2 2. Knit the document and see how it's different now ] --- # Including R code ```` ```{r, echo = FALSE} data(mtcars) summary(mtcars$mpg) ``` ```` --- # Including R code  --- # Including R code - To include only R code but not the output, we use the option `eval = FALSE` ```` ```{r, eval = FALSE} data(mtcars) summary(mtcars$mpg) ``` ```` --- # Including R code  --- class: inverse, center, middle name: r-plots # R Plots

 --- # Including R plots - Adding R plots is similar to adding R code - Include the code producing the plot in a fenced block - The block option `echo = FALSE` is useful when we only want to include the plot but not the code producing it --- # Including R plots .exercise[ ## Exercise 4: Include an R plot in your document (
2 min) 1. Create a header named `R Plots` 2. Create a new fenced code block with the option `echo = FALSE` 3. Add the following code inside the new block: ```r plot(mtcars$wt, mtcars$mpg, main = "Plot example", xlab = "Car weight", ylab = "Miles per gallon") ``` ] --- # Including R plots ```` # R plots ```{r, echo = FALSE} plot(mtcars$wt, mtcars$mpg, main = "Plot example", xlab = "Car weight", ylab = "Miles per gallon") ``` ```` --- # Including R plots  --- class: inverse, center, middle name: r-inline-code # Inline code

 --- # Including code inline - Inline code is enclosed by backtick followed by an r (``r`) and a single backtick - For example: ~~~ The mean of mpg is `r mean(mtcars$mpg)`. ~~~ - Will be rendered as: ```` The mean of mpg is 20.090625. ```` --- # Including code inline .exercise[ ## Exercise 5 (
2 min) 1. Create a new header named `Inline code` in `markdown-template.Rmd` 2. Add an unordered list with the following text and include inline R code to render the corresponding numbers in each case + The number of elements in mtcars is: (use function `nrow(mtcars)`) + The mean of weight is: (use function `mean(mtcars$wt)`) + The standard deviation is: (use function `sd(mtcars$wt)`) ] --- # Including code inline ~~~ # Inline code - The number of elements in mtcars is `r nrow(mtcars)` - The mean of weight is `r mean(mtcars$wt)` - The standard deviation is `r sd(mtcars$wt)` ~~~ --- # Including code inline  --- # Including code inline You can use the function `round()` to control the number of decimals displayed. ~~~ # Inline code - The number of elements in mtcars is `r nrow(mtcars)` - The mean of weight is `r round(mean(mtcars$wt), 1)` - The standard deviation is `r round(sd(mtcars$wt), 2)` ~~~ --- # Including code inline You can use the function `round()` to control the number of decimals displayed.  --- # Including code inline You can also combine R inline code with the markdown syntax for tables to produce statistics tables. ~~~ # Inline code in tables |Column: weight| Value | |--------------|-----------------------------| |N |`r nrow(mtcars)` | |Mean |`r round(mean(mtcars$wt), 1)`| |SD |`r round(sd(mtcars$wt), 2)` | ~~~ --- # Including code inline You can also combine R inline code with the markdown syntax for tables to produce statistics tables.  --- class: inverse, center, middle name: regression-outputs # Including regression outputs

 --- # Including regression outputs - In a previous session, we saw that we can produce regression tables in LaTeX - We can use code producing LaTeX outputs along with the code block option `results = "asis"` to display them in the knitted document --- # Including regression outputs - Stargazer - First, we'll start with the function `stargazer()` from the package `stargazer` - The first argument of `stargazer()` is a regression result - We also include the arguments `echo = FALSE` and `message = FALSE` in the code block to omit printing the code and messages that appear when loading stargazer - In `stargazer()` we include `header = FALSE` to omit printing stargazer metadata **Important:** When using external packages in RMarkdown, you need to have them loaded in a code block regardless of if they're already loaded in your current session. Libraries have to load again for each knit. --- # Including regression outputs - Stargazer ```` ```{r, echo = FALSE, message = FALSE, results = "asis"} # Loading stargazer library(stargazer) # Creating a simple regression model <- lm(mpg ~ cyl + hp, data = mtcars) # Printing it with stargazer stargazer(model, header = FALSE) # add: type = "html" if knitting to HTML ``` ```` --- # Including regression outputs - Stargazer  --- # Including regression outputs - Stargazer .exercise[ ## Exercise 6 (
3 min) 1. Create a new header named `Regressions - Stargazer` in `r-markdown-template.Rmd` 1. Add a new code block with the arguments `echo = FALSE` and `results = "asis"` 1. Load stargazer in the code block 1. Add a regression of the variable `mpg` on `wt` and `hp` 1. Use stargazer's arguments `header = FALSE`, `title = "your_title"` and `omit = c("Constant")` to customize your table + If your output is HTML instead of PDF, include the argument `type = "html"` in `stargazer()` ] --- # Including regression outputs - Stargazer ```` # Regressions - Stargazer ```{r, echo = FALSE, message = FALSE, results = "asis"} library(stargazer) model <- lm(mpg ~ wt + hp, data = mtcars) stargazer(model, header = FALSE, title = "Best table ever", omit = c("Constant")) ``` ```` --- # Including regression outputs - Stargazer  --- # Including regression outputs - Huxtable - Remember `huxtable`? we can also use it to include regression tables in R Markdown - The advantage of using `huxtable` compared to `stargazer` is that we don't have to define the type of output we're generating with R Markdown. `huxtable` automatically detects it and will transform the output as needed in the resulting document - `huxtable` has an important disadvantage, though: it requires to install external libraries in your local LaTeX installation --- # Including regression outputs - Huxtable - Conveniently, the library `huxtable` has a function that handles that installation for us (needed only if you're knitting to PDF) ```r # Only if you're knitting to PDF: huxtable::install_latex_dependencies() ``` - Once this finishes, we can use `huxtable` with R Markdown --- # Including regression outputs - Huxtable - For regressions, we use the function `huxreg()` as in the example below - Note that the option `results = "asis"` is not used with `huxtable` ```` ```{r, echo = FALSE, warning = FALSE} library(huxtable) model <- lm(mpg ~ wt + hp, data = mtcars) huxreg(model) ``` ```` --- # Including regression outputs - Huxtable - For regressions, we use the function `huxreg()` as in the example below - Note that the option `results = "asis"` is not used with `huxtable`  --- # Including regression outputs - Huxtable .exercise[ ## Exercise 7: Now with Huxtable (
2 min) 1. Create a new header named `Regressions - Huxtable` in `r-markdown-template.Rmd` 1. Add a new code block with the argument `echo = FALSE` 1. Load huxtable in the code block 1. Add a regression table of the variable `mpg` on `wt` and `hp` using `huxreg()` 1. Use huxreg's argument `omit_coefs = c("(Intercept)")` to customize your table ] --- # Including regression outputs - Huxtable ```` # Regressions - Huxtable ```{r, echo = FALSE, warning = FALSE} library(huxtable) model <- lm(mpg ~ wt + hp, data = mtcars) huxreg(model, omit_coefs = c("(Intercept)")) ``` ```` --- # Including regression outputs - Huxtable  --- # Including regression outputs - Huxtable - If you want to include a title in your regression, use the command `set_caption()` with the result of `huxreg()` as argument ```` ```{r, echo = FALSE, warning = FALSE} library(huxtable) library(dplyr) model <- lm(mpg ~ wt + hp, data = mtcars) table <- huxreg(model, omit_coefs = c("(Intercept)")) table %>% set_caption("Another nice table") ``` ```` --- # Including regression outputs - Huxtable  --- class: inverse, center, middle # Thank you! --- class: inverse, center, middle name: annex # Annex

 --- # Annex - Opening a new R Markdown in R Studio - Go to `File` > `New File` > `R Markdown` - You can register the author name and the document title. This can be changed later if needed - You can also define the default output format (HTML, PDF, Word). This can also be changed later - Selecting `OK` will generate a template with document sections and code blocks that you can modify - Selecting `Create Empty Document` will ignore the author, title, and output format registered and will result in a completely blank R Markdown document --- # Annex - Author, title, and output type - The section enclosed in `---` at the beginning of the document can contain the author, title, and default output format - You can add the author and document title with `author: NAME` and `title: TITLE` - You can also change the default output format. Some options are: + `output: html_document` + `output: pdf_document` + `output: word_document` + `output: beamer_presentation` --- # Annex - Naming R code blocks - You can name R code blocks if you add the name after the `r` in the initial brackets - The example below has the name `my-r-code` ```` ```{r my-r-code} summary(mtcars$mpg) ``` ```` --- # Annex - Naming R code blocks - This is very convenient to debug code blocks by clicking on `Output` under the `R Markdown` tab of the console, in case your file has an error  --- # Annex - Including images - The Markdown syntax to include images is: `![Image name](path/to/image)` - For example: ```` ![R logo](img/r-markdown/r-logo.jpg) ```` - Renders: ![R logo](img/r-markdown/r-logo.jpg) --- # Annex - Including a LaTeX preamble in a PDF doc - If you want to further customize a PDF document in R Markdown and you're familiar with LaTeX, you can include a LaTeX preamble that will be executed when you knit your document - To enable this feature, replace `output: pdf_document` with the following code in the section enclosed by the three dashes (`---`) at the beginning of your document ``` output: pdf_document: includes: in_header: "preamble.tex" ``` --- # Annex - Looking ahead - [Markdown guide](https://www.markdownguide.org/) - [R Markdown: The Definitive Guide](https://bookdown.org/yihui/rmarkdown/basics.html) - [An introduction to Stata Markdown](https://osf.io/nam2d/) - [Stargazer official manual](https://cran.r-project.org/web/packages/stargazer/stargazer.pdf) - [Introduction to Huxtable](https://cran.r-project.org/web/packages/huxtable/vignettes/huxtable.html)


|
Drake
|
Structure containing the results of a collision query. More...
#include <drake/attic/multibody/collision/point_pair.h>
Public Member Functions | |
| PointPair () | |
| PointPair (const Element *elementA_in, const Element *elementB_in, const Vector3< T > &ptA_in, const Vector3< T > &ptB_in, const Vector3< T > &normal_in, const T &distance_in) | |
| template<typename U > | |
| PointPair (const PointPair< U > &other) | |
| Scalar-converting copy constructor. More... | |
Public Attributes | |
| const Element * | elementA {nullptr} |
| Element A in the pair participating in the collision. More... | |
| const Element * | elementB {nullptr} |
| Element B in the pair participating in the collision. More... | |
| ElementId | idA {0} |
| Id of element A participating in the collision. More... | |
| ElementId | idB {0} |
| Id of element B participating in the collision. More... | |
| Vector3< T > | ptA |
| Collision point on the surface of body A. More... | |
| Vector3< T > | ptB |
| Collision point on the surface of body B. More... | |
| Vector3< T > | normal |
| Outwards normal on body B. More... | |
| T | distance {} |
| Distance between the point on body A and the point on body B. More... | |
Structure containing the results of a collision query.
|
inline |
|
inline |
| T distance {} |
Distance between the point on body A and the point on body B.
| ElementId idA {0} |
Id of element A participating in the collision.
| ElementId idB {0} |
Id of element B participating in the collision.
| Vector3<T> normal |
Outwards normal on body B.
On body A it points in the opposite direction.
| Vector3<T> ptA |
Collision point on the surface of body A.
| Vector3<T> ptB |
Collision point on the surface of body B.


Unicorn Making A Difference
David Delmar
David Delmar
Thank you for giving me the opportunity to be apart of an amazing boot camp this summer. I really learned a lot. Hopefully I'll continue to use these skills wherever my path leads me.
From DevonteDel has been just a cool dude who I can count on.
From LangstonThe Opportunity you've given me is priceless. For that, I am eternally grateful
From Matt“I alone cannot change the world, but I can cast a stone across the water to create many ripples.” —Mother Teresa We are you stones
From DuniaDavid has been pushing everyone to do what is best. He is honest and realistic. He runs this program and genuinely cares.
From Ashleydel has taught us amazing business skills and even brought professionals who have taught us for the greater good giving us a whole head start in making it in the big world.
From JahiResilientbootcamp has gave me a key to many doors, and I dont know how to return the favor. But I know I will take my time to make the best of this opportunity. Thank You
From Sterlingthank you for all your help from personal issues to me needing bus fare your willingness to help me gave me hope that i can make it with this coding stuff
From GeoThank you for creating such a great program and for seeing potential in Boston's youth
From Sean


Five-Thirty-Eight Converts into a Generic News Website
2 min read
It looks like Nate Silver has turned Five-Thirty-Eight into a generic news website ,and, in the process of this conversion is killing killing what made the old Five-Thirty-Eight website so popular. Or at least Nate Silver has ventured out of the areas that he is skilled at (ie. forcasting elections), and venturing into the world of making a fool of himself (although it does seem that the problem articles are largely ones written by others).
It also looks like Nate Silver is going for that whole be shocking, even at the expense of the facts thing. Look at his climate change coverage:
Think Progress: "First Climate Article On Nate Silver’s Data Website Uses ‘Deeply Misleading’ Data, Top Climatologists Say"
One of the first articles on Nate Silver’s highly anticipated data-driven news site used flawed data to make its conclusions, according to some of the nation’s top climate scientists. Silver’s FiveThirtyEight published its first article about climate change on Wednesday, entitled “Disasters Cost More Than Ever — But Not Because of Climate Change.” But climate scientists are condemning the article and its author, Roger Pielke Jr., saying he ignored critical data to produce a “deeply misleading” result.
Ooh.. SHOCKING result! Climate change isn't increasing the cost of disasters! However, there is a big asterisk on that story, as you will find out if you read the Think Progress article.
The Five-Thirty-Eight economics coverage also seems to have some flaws, and Krugman has written a take down.
#natesilver #old #old #rogerpielkejr #shocking #thinkprogress #uncategorized


| Class | Description |
|---|---|
| Example |
This class provides a base class for examples.
|
| Example1 |
This class implements an example on how to use the API by directly providing
the input datasets.
|
| Example10 |
This class implements an example on how to apply the d-presence privacy model
and create a research subset by providing a data subset.
|
| Example11 |
This class implements an example on how to apply the d-presence privacy model
and create a research subset by providing a data selector.
|
| Example12 |
This class implements an example on how to apply the d-presence privacy model
and create a research subset by providing a complex data selector.
|
| Example13 |
This class implements an simple example for using multiple sensitive attributes and
different privacy models.
|
| Example14 |
This class implements an example on how to use the Loss Metric.
|
| Example16 |
This class implements an example of how to use the API for access to basic statistics
about the data.
|
| Example17 |
This class implements an example of how to list the available data types.
|
| Example18 |
This class implements examples of how to use the builders for generalization hierarchies.
|
| Example19 |
This class implements an example of how to use the API for creating different
output representations of an input dataset.
|
| Example2 |
This class implements an example on how to use the API by providing CSV files
as input.
|
| Example20 |
This class implements examples of how to use aggregate functions.
|
| Example21 |
This class demonstrates the use of the data import facilities provided by the
ARX framework.
|
| Example22 |
This class implements an example on how to use the l-diversity privacy model
without protecting sensitive assocations.
|
| Example23 |
This class implements an example on how to use multiple instances of l-diversity
without protecting sensitive associations.
|
| Example24 |
This class implements examples on how to directly use empty and functional
hierarchies.
|
| Example25 |
This class implements an example for using the generalized loss metric with different types of
generalization hierarchies.
|
| Example26 |
This class implements examples of how to use an interval-based hierarchy builder
with high precision .
|
| Example27 |
This class implements an example on how to use data cleansing capabilities
|
| Example28 |
This class implements an example on how to use data cleansing using the DataSource functionality.
|
| Example29 |
This class implements an example of how to perform risk analyses with the API
|
| Example3 |
This class implements an example on how to use the API by directly providing
the input datasets.
|
| Example30 |
This class implements an example of how to compute summary statistics
|
| Example31 |
This class implements an example of how to use microaggregation
|
| Example32 |
This class implements an example of how to use microaggregation with generalization
|
| Example33 |
This class implements an example of how to use microaggregation.
|
| Example34 |
This class implements an example of how to use the heuristic search algorithm
|
| Example35 |
This class implements an example of how to find HIPAA identifiers.
|
| Example36 |
This class implements an example of how to use utility-based microaggregation
|
| Example37 |
This class implements an example of how to use (e,d)-DP
|
| Example38 |
This class implements an example of how to use local recoding with ARX
|
| Example39 |
This class implements an example on how to compare data mining performance
|
| Example4 |
This class implements an example on how to use the API for tools such as GUIs.
|
| Example40 |
This class implements an example on how to compare data mining performance
|
| Example41 |
This class implements an example on how to use the k-map model
|
| Example42 |
This class implements an example on how to use the k-map and d-presence models combined
|
| Example43 |
This class implements an example of how to evaluate combined risk metrics
|
| Example44 |
This class implements an example of how to use the k-map privacy model with a statistical estimator.
|
| Example45 |
This class implements an example of how to use the mixed risk model.
|
| Example46 |
This class implements an example of how to use the distribution of risks
|
| Example47 |
Example for evaluating distinction and separation of attributes as described in
R.
|
| Example48 |
This class implements an example of how to use ordered distance t-closeness.
|
| Example49 |
Examples of using the no-attack variant of the game-theoretic approach for
performing a monetary cost/benefit analysis using prosecutor risk.
|
| Example5 |
This class implements an example on how to use the API by directly providing
the input datasets.
|
| Example50 |
Examples of using the no-attack variant of the game-theoretic approach for
performing a monetary cost/benefit analysis using journalist risk.
|
| Example51 |
Examples of using the game-theoretic approach for
performing a monetary cost/benefit analysis using prosecutor risk.
|
| Example52 |
Examples of using the game-theoretic approach for
performing a monetary cost/benefit analysis using journalist risk.
|
| Example53 |
This class implements an example on how to generate reports
|
| Example54 |
This class implements an example on how to access quality statistics
|
| Example55 |
This class implements an example of how to use a fast algorithm for local recoding with ARX
|
| Example56 |
This class implements an example of how to evaluate risk with wildcard matching
|
| Example57 |
This class implements an example on how to analyze risks with wildcards for data transformed with cell suppression
|
| Example58 |
This class implements an example that shows consistent handling of suppressed records in input and output
|
| Example59 |
This class implements an example that shows handling of suppressed values and records in input data
|
| Example6 |
This class implements an example on how to use the API for tools such as GUIs.
|
| Example60 |
This class implements an example of processing highdimensional data
|
| Example7 |
This class implements an example on how to use the API for tools such as GUIs.
|
| Example8 |
This class implements an example on how to apply the t-closeness criterion.
|
| Example9 |
This class implements an example on how to apply the d-presence criterion.
|


Module: ActionMailer::TestHelper
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Included In:
| |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Instance Chain:
|
|
| Defined in: | actionmailer/lib/action_mailer/test_helper.rb |
Overview
Provides helper methods for testing Action Mailer, including #assert_emails and #assert_no_emails.
Constant Summary
::ActiveSupport::Testing::Assertions
- Included
Instance Attribute Summary
Instance Method Summary
-
#assert_emails(number, &block)
Asserts that the number of emails sent matches the given number.
-
#assert_enqueued_email_with(mailer, method, params: nil, args: nil, queue: nil, &block)
Asserts that a specific email has been enqueued, optionally matching arguments and/or params.
-
#assert_enqueued_emails(number, &block)
Asserts that the number of emails enqueued for later delivery matches the given number.
-
#assert_no_emails(&block)
Asserts that no emails have been sent.
-
#assert_no_enqueued_emails(&block)
Asserts that no emails are enqueued for later delivery.
-
#capture_emails(&block)
Returns any emails that are sent in the block.
-
#deliver_enqueued_emails(queue: nil, at: nil, &block)
Delivers all enqueued emails.
- #delivery_job_filter(job) private
::ActiveJob::TestHelper
- Included
| #assert_enqueued_jobs | Asserts that the number of enqueued jobs matches the given number. |
| #assert_enqueued_with | Asserts that the job has been enqueued with the given arguments. |
| #assert_no_enqueued_jobs | Asserts that no jobs have been enqueued. |
| #assert_no_performed_jobs | Asserts that no jobs have been performed. |
| #assert_performed_jobs | Asserts that the number of performed jobs matches the given number. |
| #assert_performed_with | Asserts that the job has been performed with the given arguments. |
| #perform_enqueued_jobs | Performs all enqueued jobs. |
| #queue_adapter | Accesses the queue_adapter set by |
| #queue_adapter_for_test | Specifies the queue adapter to use with all Active Job test helpers. |
| #clear_enqueued_jobs, #clear_performed_jobs, #deserialize_args_for_assertion, #enqueued_jobs_with, #filter_as_proc, #flush_enqueued_jobs, #instantiate_job, #jobs_with, #performed_jobs_with, #prepare_args_for_assertion, #queue_adapter_changed_jobs, #validate_option, #after_teardown, #before_setup |
::ActiveSupport::Testing::Assertions
- Included
| #assert_changes | Assertion that the result of evaluating an expression is changed before and after invoking the passed in block. |
| #assert_difference | Test numeric difference between the return value of an expression as a result of what is evaluated in the yielded block. |
| #assert_no_changes | Assertion that the result of evaluating an expression is not changed before and after invoking the passed in block. |
| #assert_no_difference | Assertion that the numeric result of evaluating an expression is not changed before and after invoking the passed in block. |
| #assert_not | Asserts that an expression is not truthy. |
| #assert_nothing_raised | Assertion that the block should not raise an exception. |
| #assert_raise | |
| #assert_raises | Asserts that a block raises one of |
| #_assert_nothing_raised_or_warn |
Instance Method Details
#assert_emails(number, &block)
Asserts that the number of emails sent matches the given number.
def test_emails
assert_emails 0
ContactMailer.welcome.deliver_now
assert_emails 1
ContactMailer.welcome.deliver_now
assert_emails 2
end
If a block is passed, that block should cause the specified number of emails to be sent.
def test_emails_again
assert_emails 1 do
ContactMailer.welcome.deliver_now
end
assert_emails 2 do
ContactMailer.welcome.deliver_now
ContactMailer.welcome.deliver_later
end
end
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 35
def assert_emails(number, &block) if block_given? diff = capture_emails(&block).length assert_equal number, diff, "#{number} emails expected, but #{diff} were sent" else assert_equal number, ActionMailer::Base.deliveries.size end end
#assert_enqueued_email_with(mailer, method, params: nil, args: nil, queue: nil, &block)
Asserts that a specific email has been enqueued, optionally matching arguments and/or params.
def test_email
ContactMailer.welcome.deliver_later
assert_enqueued_email_with ContactMailer, :welcome
end
def test_email_with_parameters
ContactMailer.with(greeting: "Hello").welcome.deliver_later
assert_enqueued_email_with ContactMailer, :welcome, args: { greeting: "Hello" }
end
def test_email_with_arguments
ContactMailer.welcome("Hello", "Goodbye").deliver_later
assert_enqueued_email_with ContactMailer, :welcome, args: ["Hello", "Goodbye"]
end
def test_email_with_named_arguments
ContactMailer.welcome(greeting: "Hello", farewell: "Goodbye").deliver_later
assert_enqueued_email_with ContactMailer, :welcome, args: [{ greeting: "Hello", farewell: "Goodbye" }]
end
def test_email_with_parameters_and_arguments
ContactMailer.with(greeting: "Hello").welcome("Cheers", "Goodbye").deliver_later
assert_enqueued_email_with ContactMailer, :welcome, params: { greeting: "Hello" }, args: ["Cheers", "Goodbye"]
end
def test_email_with_parameters_and_named_arguments
ContactMailer.with(greeting: "Hello").welcome(farewell: "Goodbye").deliver_later
assert_enqueued_email_with ContactMailer, :welcome, params: { greeting: "Hello" }, args: [{farewell: "Goodbye"}]
end
def test_email_with_parameterized_mailer
ContactMailer.with(greeting: "Hello").welcome.deliver_later
assert_enqueued_email_with ContactMailer.with(greeting: "Hello"), :welcome
end
def test_email_with_matchers
ContactMailer.with(greeting: "Hello").welcome("Cheers", "Goodbye").deliver_later
assert_enqueued_email_with ContactMailer, :welcome,
params: ->(params) { /hello/i.match?(params[:greeting]) },
args: ->(args) { /cheers/i.match?(args[0]) }
end
If a block is passed, that block should cause the specified email to be enqueued.
def test_email_in_block
assert_enqueued_email_with ContactMailer, :welcome do
ContactMailer.welcome.deliver_later
end
end
If args
is provided as a ::Hash
, a parameterized email is matched.
def test_parameterized_email
assert_enqueued_email_with ContactMailer, :welcome,
args: {email<EMAIL_ADDRESS>do
ContactMailer.with(email: 'user@example.com').welcome.deliver_later
end
end
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 157
def assert_enqueued_email_with(mailer, method, params: nil, args: nil, queue: nil, &block) if mailer.is_a? ActionMailer::Parameterized::Mailer params = mailer.instance_variable_get(:@params) mailer = mailer.instance_variable_get(:@mailer) end if args.is_a?(Hash) ActionMailer.deprecator.warn <<~MSG Passing a Hash to the assert_enqueued_email_with :args kwarg causes the Hash to be treated as params. This behavior is deprecated and will be removed in Rails 7.2. To specify a params Hash, use the :params kwarg: assert_enqueued_email_with MyMailer, :my_method, params: { my_param: "value" } Or, to specify named mailer args as a Hash, wrap the Hash in an array: assert_enqueued_email_with MyMailer, :my_method, args: [{ my_arg: "value" }] # OR assert_enqueued_email_with MyMailer, :my_method, args: [my_arg: "value"] MSG params, args = args, nil end args = Array(args) unless args.is_a?(Proc) queue ||= mailer.deliver_later_queue_name || ActiveJob::Base.default_queue_name expected = ->(job_args) do job_kwargs = job_args. [mailer.to_s, method.to_s, "deliver_now"] == job_args && params === job_kwargs[:params] && args === job_kwargs[:args] end assert_enqueued_with(job: mailer.delivery_job, args: expected, queue: queue.to_s, &block) end
#assert_enqueued_emails(number, &block)
Asserts that the number of emails enqueued for later delivery matches the given number.
def test_emails
assert_enqueued_emails 0
ContactMailer.welcome.deliver_later
assert_enqueued_emails 1
ContactMailer.welcome.deliver_later
assert_enqueued_emails 2
end
If a block is passed, that block should cause the specified number of emails to be enqueued.
def test_emails_again
assert_enqueued_emails 1 do
ContactMailer.welcome.deliver_later
end
assert_enqueued_emails 2 do
ContactMailer.welcome.deliver_later
ContactMailer.welcome.deliver_later
end
end
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 91
def assert_enqueued_emails(number, &block) assert_enqueued_jobs(number, only: ->(job) { delivery_job_filter(job) }, &block) end
#assert_no_emails(&block)
Asserts that no emails have been sent.
def test_emails
assert_no_emails
ContactMailer.welcome.deliver_now
assert_emails 1
end
If a block is passed, that block should not cause any emails to be sent.
def test_emails_again
assert_no_emails do
# No emails should be sent from this block
end
end
Note: This assertion is simply a shortcut for:
assert_emails 0, &block
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 63
def assert_no_emails(&block) assert_emails 0, &block end
#assert_no_enqueued_emails(&block)
Asserts that no emails are enqueued for later delivery.
def test_no_emails
assert_no_enqueued_emails
ContactMailer.welcome.deliver_later
assert_enqueued_emails 1
end
If a block is provided, it should not cause any emails to be enqueued.
def test_no_emails
assert_no_enqueued_emails do
# No emails should be enqueued from this block
end
end
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 211
def assert_no_enqueued_emails(&block) assert_enqueued_emails 0, &block end
#capture_emails(&block)
Returns any emails that are sent in the block.
def test_emails
emails = capture_emails do
ContactMailer.welcome.deliver_now
end
assert_equal "Hi there", emails.first.subject
emails = capture_emails do
ContactMailer.welcome.deliver_now
ContactMailer.welcome.deliver_later
end
assert_equal "Hi there", emails.first.subject
end
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 269
def capture_emails(&block) original_count = ActionMailer::Base.deliveries.size deliver_enqueued_emails(&block) new_count = ActionMailer::Base.deliveries.size diff = new_count - original_count ActionMailer::Base.deliveries.last(diff) end
#deliver_enqueued_emails(queue: nil, at: nil, &block)
Delivers all enqueued emails. If a block is given, delivers all of the emails that were enqueued throughout the duration of the block. If a block is not given, delivers all the enqueued emails up to this point in the test.
def test_deliver_enqueued_emails
deliver_enqueued_emails do
ContactMailer.welcome.deliver_later
end
assert_emails 1
end
def test_deliver_enqueued_emails_without_block
ContactMailer.welcome.deliver_later
deliver_enqueued_emails
assert_emails 1
end
If the :queue
option is specified, then only the emails(s) enqueued to a specific queue will be performed.
def test_deliver_enqueued_emails_with_queue
deliver_enqueued_emails queue: :external_mailers do
CustomerMailer.deliver_later_queue_name = :external_mailers
CustomerMailer.welcome.deliver_later # will be performed
EmployeeMailer.deliver_later_queue_name = :internal_mailers
EmployeeMailer.welcome.deliver_later # will not be performed
end
assert_emails 1
end
If the :at
option is specified, then only delivers emails enqueued to deliver immediately or before the given time.
# File 'actionmailer/lib/action_mailer/test_helper.rb', line 251
def deliver_enqueued_emails(queue: nil, at: nil, &block) perform_enqueued_jobs(only: ->(job) { delivery_job_filter(job) }, queue: queue, at: at, &block) end
#delivery_job_filter(job) (private)
[ GitHub ]# File 'actionmailer/lib/action_mailer/test_helper.rb', line 278
def delivery_job_filter(job) job_class = job.is_a?(Hash) ? job.fetch(:job) : job.class Base.descendants.map(&:delivery_job).include?(job_class) end


Compare and contrast the performance of workers, orchards, foremen and farms over periods of time.
Extensive filtering and fine grained control is provided. Predictive graphs are shown using prior performance
history to give an estimate of what might be expected in the future.


About Me
I am a 16 year old student who is currently taking a course in Multimedia Software Development and the Malta College of Arts Science and Technology (MCAST). Photography has been a hobby for a very long time and has been recent that I have started studying photography. I mostly study Photography by reading articles, watching videos and practicing in my free time.Types of Photography which interests me:
- Landscape Photography
- Portrait photography
- Night Photography
- Long Exposures
- Star Trails


21 Jan 2019 3 Comments 2 Likes Repeat predefined chunks Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
20 Feb 2020 30 Comments 20 Likes Making it look readable Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
22 Feb 2019 10 Comments 26 Likes Treatise on the theory Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
22 Feb 2019 10 Comments 26 Likes Treatise on the theory Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
22 Feb 2019 10 Comments 26 Likes Treatise on the theory Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
20 Jan 2019 3 Comments 2 Likes scrambe it to make a type Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
22 Feb 2019 10 Comments 26 Likes Treatise on the theory Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
20 Jan 2019 3 Comments 2 Likes A Galley of type and scrambe Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...
20 Jan 2019 3 Comments 2 Likes Various versions have evole Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's...


interface CordappInfo
A CordappInfo describes a single CorDapp currently installed on the node
type
- A description of what sort of CorDapp this is - either a contract, workflow, or a combination.
name
- The name of the JAR file that defines the CorDapp
shortName
- The name of the CorDapp
minimumPlatformVersion
- The minimum platform version the node must be at for the CorDapp to run
targetPlatformVersion
- The target platform version this CorDapp has been tested against
version
- The version of this CorDapp
vendor
- The vendor of this CorDapp
licence
- The name of the licence this CorDapp is released under
jarHash
- The hash of the JAR file that defines this CorDapp
jarHash |
abstract val jarHash: SecureHash |
licence |
abstract val licence: String |
minimumPlatformVersion |
abstract val minimumPlatformVersion: Int |
name |
abstract val name: String |
shortName |
abstract val shortName: String |
targetPlatformVersion |
abstract val targetPlatformVersion: Int |
type |
abstract val type: String |
vendor |
abstract val vendor: String |
version |
abstract val version: String |


Semantics
Many productions operating on grammar are the same whether or not an |WithClause|/second |ImportCall| parameter is included; the new parameter is ignored. In this section, only the semantically significant changes are included, and the PR to merge into the main specification would fill in the straightforward details.
Import Calls
Runtime Semantics: Evaluation
ImportCall : `import` `(` AssignmentExpression `,`? `)`
1. Let _referencingScriptOrModule_ be ! GetActiveScriptOrModule().
1. Let _argRef_ be the result of evaluating |AssignmentExpression|.
1. Let _specifier_ be ? GetValue(_argRef_).
1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
1. Let _specifierString_ be ToString(_specifier_).
1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
1. Perform ! HostImportModuleDynamically(_referencingScriptOrModule_, _specifierString_, *undefined*, _promiseCapability_).
1. Return _promiseCapability_.[[Promise]].
ImportCall : `import` `(` AssignmentExpression `,` AssignmentExpression `,`? `)`
1. Let _referencingScriptOrModule_ be ! GetActiveScriptOrModule().
1. Let _argRef_ be the result of evaluating the first |AssignmentExpression|.
1. Let _specifier_ be ? GetValue(_argRef_).
1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
1. Let _specifierString_ be ToString(_specifier_).
1. IfAbruptRejectPromise(_specifierString_, _promiseCapability_).
1. Let _argRef_ be the result of evaluating the second |AssignmentExpression|.
1. Let _arg_ be ? GetValue(_argRef_).
1. If _arg_ is *undefined*, let _attributes_ be *undefined*.
1. Otherwise, let _attributes_ be ? Get(_arg_, *"with"*).
1. Perform ! HostImportModuleDynamically(_referencingScriptOrModule_, _specifierString_, _attributes_, _promiseCapability_).
1. Return _promiseCapability_.[[Promise]].
Runtime Semantics: HostResolveImportedModule ( _referencingScriptOrModule_, _specifier_, _attributes_ )
HostResolveImportedModule is an implementation-defined abstract operation that provides the concrete Module Record subclass instance that corresponds to the |ModuleSpecifier| String, _specifier_, occurring within the context of the script or module represented by the Script Record or Module Record _referencingScriptOrModule_. _referencingScriptOrModule_ may also be *null*, if the resolution is being performed in the context of an `import()` expression, and there is no active script or module at that time. The _attributes_ parameter is an ECMAScript value representing the module attributes, originating either from an `import` statement or the second parameter of a dynamic `import()` expression. If no module attributes are provided, the value will be *undefined*.
An example of when _referencingScriptOrModule_ can be *null* is in a web browser host. There, if a user clicks on a control given by
<button type="button" onclick="import('./foo.mjs')">Click me</button>
there will be no active script or module at the time the `import()` expression runs. More generally, this can happen in any situation where the host pushes execution contexts with *null* ScriptOrModule components onto the execution context stack.
The implementation of HostResolveImportedModule must conform to the following requirements:
-
The normal return value must be an instance of a concrete subclass of Module Record.
-
If a Module Record corresponding to the
pairtuple _referencingScriptOrModule_, _specifier_, _attributes does not exist or cannot be created, an exception must be thrown.
-
Each time this operation is called with a specific _referencingScriptOrModule_, _specifier_, _attributes_
pairtuple as arguments it must return the same Module Record instance if it completes normally.
-
If _attributes_ is not *undefined*, then the implementation of HostResolveImportModule must perform ? Get(_attributes_, *"type"*). Let _type_ be the result. The following requirements apply:
- If _type_ is *"json"*, then this algorithm must either invoke ParseJSONModule and return the resulting Module Record, or throw an exception.
- Each time this operation is called with a specific _referencingScriptOrModule_, _specifier_, _otherAttributes_ tuple as arguments, if _otherAttributes_ differs from _attributes_ only based on the value of _type_ it must return the same Module Record instance if it completes normally.
-
Multiple different _referencingScriptOrModule_, _specifier_ pairs may map to the same Module Record instance. The actual mapping semantic is implementation-defined but typically a normalization process is applied to _specifier_ as part of the mapping process. A typical normalization process would include actions such as alphabetic case folding and expansion of relative and abbreviated path specifiers.
Runtime Semantics: HostImportModuleDynamically ( _referencingScriptOrModule_, _specifier_, _attributes_, _promiseCapability_ )
HostImportModuleDynamically is an implementation-defined abstract operation that performs any necessary setup work in order to make available the module corresponding to the |ModuleSpecifier| String, _specifier_, occurring within the context of the script or module represented by the Script Record or Module Record _referencingScriptOrModule_, with module attributes _attributes. (_referencingScriptOrModule_ may also be *null*, if there is no active script or module when the `import()` expression occurs.) It then performs FinishDynamicImport to finish the dynamic import process.
The implementation of HostImportModuleDynamically must conform to the following requirements:
-
The abstract operation must always complete normally with *undefined*. Success or failure must instead be signaled as discussed below.
-
The host environment must conform to one of the two following sets of requirements:
- Success path
-
- At some future time, the host environment must perform FinishDynamicImport(_referencingScriptOrModule_, _specifier_, _attributes_, _promiseCapability_, NormalCompletion(*undefined*)).
- Any subsequent call to HostResolveImportedModule after FinishDynamicImport has completed, given the arguments _referencingScriptOrModule_, _specifier_, and _attributes_ must complete normally.
- The completion value of any subsequent call to HostResolveImportedModule after FinishDynamicImport has completed, given the arguments _referencingScriptOrModule_, _specifier_, and _attributes_ must be a module which has already been evaluated, i.e. whose Evaluate concrete method has already been called and returned a normal completion.
- Failure path
-
- At some future time, the host environment must perform FinishDynamicImport(_referencingScriptOrModule_, _specifier_, _attributes_, _promiseCapability_, an abrupt completion), with the abrupt completion representing the cause of failure.
-
If the host environment takes the success path once for a given _referencingScriptOrModule_, _specifier_, _attributes_
pairtuple, it must always do so for subsequent calls.
-
The operation must not call _promiseCapability_.[[Resolve]] or _promiseCapability_.[[Reject]], but instead must treat _promiseCapability_ as an opaque identifying value to be passed through to FinishDynamicImport.
The actual process performed is implementation-defined, but typically consists of performing whatever I/O operations are necessary to allow HostResolveImportedModule to synchronously retrieve the appropriate Module Record, and then calling its Evaluate concrete method. This might require performing similar normalization as HostResolveImportedModule does.
Runtime Semantics: FinishDynamicImport ( _referencingScriptOrModule_, _specifier_, _attributes_, _promiseCapability_, _completion_ )
The abstract operation FinishDynamicImport takes arguments _referencingScriptOrModule_, _specifier_, _attributes_, _promiseCapability_, and _completion_. FinishDynamicImport completes the process of a dynamic import originally started by an `import()` call, resolving or rejecting the promise returned by that call as appropriate according to _completion_. It is performed by host environments as part of HostImportModuleDynamically. It performs the following steps when called:
1. If _completion_ is an abrupt completion, then perform ! Call(_promiseCapability_.[[Reject]], *undefined*, « _completion_.[[Value]] »).
1. Else,
1. Assert: _completion_ is a normal completion and _completion_.[[Value]] is *undefined*.
1. Let _moduleRecord_ be ! HostResolveImportedModule(_referencingScriptOrModule_, _specifier_, _attributes_).
1. Assert: Evaluate has already been invoked on _moduleRecord_ and successfully completed.
1. Let _namespace_ be GetModuleNamespace(_moduleRecord_).
1. If _namespace_ is an abrupt completion, perform ! Call(_promiseCapability_.[[Reject]], *undefined*, « _namespace_.[[Value]] »).
1. Else, perform ! Call(_promiseCapability_.[[Resolve]], *undefined*, « _namespace_.[[Value]] »).
Synthetic Module Records
This Synthetic Module Records specification text comes from the JavaScript Standard Library proposal and was written by Domenic Denicola. A version of this text exists in WebIDL. A version of the text is copied here to clarify that the concept of Synthetic Module Records can proceed in standardization independently of the built-in modules effort.
A Synthetic Module Record is used to represent information about a module that is defined by specifications. Its exports are derived from a pair of lists, of string keys and of ECMAScript values. The set of exported names is static, and determined at creation time (as an argument to CreateSyntheticModule), while the set of exported values can be changed over time using SetSyntheticModuleExport. It has no imports or dependencies.
A Synthetic Module Record could be used for defining a variety of module types: for example, built-in modules, or JSON modules, or CSS modules.
In addition to the fields defined in , Synthetic Module Records have the additional fields listed in . Each of these fields is initially set in CreateSyntheticModule.
| Field Name
| Value Type
| Meaning
|
| [[ExportNames]]
| List of String
| A List of all names that are exported.
|
| [[EvaluationSteps]]
| An abstract operation
| An abstract operation that will be performed upon evaluation of the module, taking the Synthetic Module Record as its sole argument. These will usually set up the exported values, by using SetSyntheticModuleExport. They must not modify [[ExportNames]]. They may return an abrupt completion.
|
CreateSyntheticModule ( _exportNames_, _evaluationSteps_, _realm_, _hostDefined_ )
The abstract operation CreateSyntheticModule creates a Synthetic Module Record based upon the given exported names and evaluation steps. It performs the following steps:
1. Return Synthetic Module Record { [[Realm]]: _realm_, [[Environment]]: *undefined*, [[Namespace]]: *undefined*, [[HostDefined]]: _hostDefined_, [[ExportNames]]: _exportNames_, [[EvaluationSteps]]: _evaluationSteps_ }.
It seems we could set up the environment either here or in Instantiate(). I've chosen to do so in Instantiate() for symmetry with Source Text Module Records, but I don't think there's any actual requirement in that regard.
SetSyntheticModuleExport ( _module_, _exportName_, _exportValue_ )
The abstract operation SetSyntheticModuleExport can be used to set or change the exported value for a pre-established export of a Synthetic Module Record. It performs the following steps:
1. Let _envRec_ be _module_.[[Environment]]'s EnvironmentRecord.
1. Perform _envRec_.SetMutableBinding(_exportName_, _exportValue_, *true*).
Concrete Methods
The following are the concrete methods for Synthetic Module Record that implement the corresponding Module Record abstract methods.
I find having this wrapping sub-clause cleaner and suggest we do the same for Source Text Module Records in the main spec.
GetExportedNames( _exportStarSet_ )
The GetExportedNames concrete method of a Synthetic Module Record implements the corresponding Module Record abstract method.
It performs the following steps:
1. Let _module_ be this Synthetic Module Record.
1. Return _module_.[[ExportNames]].
ResolveExport( _exportName_, _resolveSet_ )
The ResolveExport concrete method of a Synthetic Module Record implements the corresponding Module Record abstract method.
It performs the following steps:
1. Let _module_ be this Synthetic Module Record.
1. If _module_.[[ExportNames]] does not contain _exportName_, return null.
1. Return ResolvedBinding Record { [[Module]]: _module_, [[BindingName]]: _exportName_ }.
Instantiate ( )
The Instantiate concrete method of a Synthetic Module Record implements the corresponding Module Record abstract method.
It performs the following steps:
1. Let _module_ be this Synthetic Module Record.
1. Let _realm_ be _module_.[[Realm]].
1. Assert: _realm_ is not *undefined*.
1. Let _env_ be NewModuleEnvironment(_realm_.[[GlobalEnv]]).
1. Set _module_.[[Environment]] to _env_.
1. Let _envRec_ be _env_'s EnvironmentRecord.
1. For each _exportName_ in _module_.[[ExportNames]],
1. Perform ! _envRec_.CreateMutableBinding(_exportName_, *false*).
1. Perform ! _envRec_.InitializeBinding(_exportName_, *undefined*).
1. Return *undefined*.
Evaluate ( )
The Evaluate concrete method of a Synthetic Module Record implements the corresponding Module Record abstract method.
It performs the following steps:
1. Let _module_ be this Synthetic Module Record.
1. Let _moduleCxt_ be a new ECMAScript code execution context.
1. Set the Function of _moduleCxt_ to *null*.
1. Assert: _module_.[[Realm]] is not *undefined*.
1. Set the Realm of _moduleCxt_ to _module_.[[Realm]].
1. Set the ScriptOrModule of _moduleCxt_ to _module_.
1. Set the VariableEnvironment of _moduleCxt_ to _module_.[[Environment]].
1. Set the LexicalEnvironment of _moduleCxt_ to _module_.[[Environment]].
1. Suspend the currently running execution context.
1. Push _moduleCxt_ on to the execution context stack; _moduleCxt_ is now the running execution context.
1. Let _result_ be the result of performing ? _module_.[[EvaluationSteps]](_module_).
1. Suspend _moduleCxt_ and remove it from the execution context stack.
1. Resume the context that is now on the top of the execution context stack as the running execution context.
1. Return Completion(_result_).
CreateDefaultExportSyntheticModule ( _defaultExport_ )
The CreateDefaultExportSyntheticModule abstract operation creates a Synthetic Module Record whose default export is _defaultExport_. It performs the following steps:
1. Return CreateSyntheticModule(« *"default"* », the following steps, the current Realm, _defaultExport_) with the following steps given _module_ as an argument:
1. SetSyntheticModuleExport(_module_, *"default"*, _module_.[[HostDefined]]).
ParseJSONModule ( _source_ )
The abstract operation ParseJSONModule takes a single argument _source_ which is a String representing the contents of a module.
1. Let _json_ be ? Call(%JSONParse%, *undefined*, « _source_ »).
1. Return CreateDefaultExportSyntheticModule(_json_).
TODO
- There's a parse-time algorithm which converts WithClause into a List of Attribute Records of the form { [[AttributeKey]]: String, [[AttributeValue]]: String }, and similarly, a runtime algorithm for dynamically created attributes passed through `import()`.
- RequestedModules becomes a List of Records of the form { [[Specifier]]: String, [[Attributes]]: List of Attribute Records }.
- Update the RequestedModules algorithm to calculate it correctly.
- Update InnerModuleLinking and InnerModuleEvaluation to pass both the specifier and attributes from [[RequestedModules]] records up to HostResolveImportedModule.
- Update most other callsites of HostResolveImportedModule, where the attributes are not so readily available, to search through [[RequestedModules]] to find the attribute value (or, to pass up a don't-care-sentinel).
Sample host integration: The Web embedding
The module attributes proposal is intended to give key information about how modules are interpreted to hosts. For the Web embedding and environments which aim to be similar to it, the string is interpreted as the "module type". This is not the primary way the module type is determined (which, on the Web, would be the MIME type, and in other environments may be the file extension), but rather a secondary check which is required to pass for the module graph to load.
In the Web embedding, the following changes would be made to the HTML specification for module attributes:
- The module script would have an additional item, which would be the module type, as a string (e.g., *"json"*), or *undefined* for a JavaScript module.
- HostResolveImportedModule and HostImportModuleDynamically would take an extra _attributes_ parameter, which would be passed down through several abstract operations to reach the fetch a single module script algorithm. Somewhere near the entrypoint, if _attributes_ is not *undefined*, then let _type_ be ? Get(_attributes_, *"type"*); otherwise let _type_ be *undefined*. If the type is invalid, then an exception is thrown and module loading fails. Otherwise, this will equal the module type, if the module can be successfully fetched with a matching MIME type.
- In the fetch the descendents of a module script algorithm, when iterating over [[RequestedModules]], the attribute is saved in parallel with module URLs, and passed on to the internal module script graph fetching procedure (which sends it to "fetch a single module script". Other usage sites of [[RequestedModules]] ignore the attribute.
- "Fetch a single module script" would check the attribute in two places:
- If the module is found in the module map, then _type_ is checked against he module script's type field. If they differ, then an exception is thrown and module loading fails.
- When a new module is fetched, before writing it into the module map, the MIME type is checked to ensure that it matches _type_. (Note that the interpretation of the module is still driven by the MIME type, but once the MIME type is established, this is checked against the _type_.) If they differ, then an exception is thrown and module loading fails. The _type_ is written into the module script as the type.
Note that the module map remains keyed by the absolute URL; the _type_ is not part of the module map key, and initially, no other module attributes are supported, so they are also not present.


Jump in Wholesale Prices Tied to Higher Gas Costs
by KEVIN LESSMILLER(CN) – Mirroring last month’s boost in consumer prices, U.S. wholesale prices also increased 0.4% in October, driven up by rising gasoline costs.
The government’s producer price index, which measures inflation before it reaches the consumer marketplace, is up 1.1% from this time last year. The increase from September to October is the largest monthly gain since April.
Excluding the always volatile food, energy and trade services categories, core wholesale prices rose just 0.1% in October and 1.5% from a year ago, according to a Labor Department report released Thursday.
Wholesale energy prices shot up 2.8% last month, pushed higher by a 7.3% increase in gasoline costs for producers. Meanwhile, wholesale food prices went up 1.3%.
On Wednesday, the Labor Department reported that the consumer price index, another measure of inflation that tracks changes in what Americans pay for a range of products, also grew by 0.4% in October. The increase was driven largely by a 3.7% boost in consumer gas prices.
Consumer inflation is up 1.8% from a year ago, which falls below the Federal Reserve’s 2% annual inflation target.
Not counting food and energy costs, core consumer prices increased by a more modest 0.2% last month, and grew by 2.3% over the past year.
The Fed has cut its key interest rate three times this year because of the low inflation pressures and economic uncertainty based on factors like President Donald Trump’s trade war with China, which has gone on for over a year
However, economists do not expect the central bank to cut rates a fourth time this year.
Federal Reserve Chairman Jerome Powell indicated Wednesday that the benchmark short-term rate will likely remain in the range of 1.5% and 1.75% as long as economic growth stays at its current level.
“Looking ahead, my colleagues and I see a sustained expansion of economic activity, a strong labor market, and inflation near our symmetric 2% objective as most likely,” Powell told lawmakers on the Joint Economic Committee.
The U.S. economy entered its 11th consecutive year of growth this summer, the longest streak on record.
Copyright © 2019 courthousenews.com


Dear
Your JHipster account has been created by RADAR-base team.
Your user name is
Please click on this link below to activate your account by resetting your password.
login
Regards, JHipster.