OpenLLM-France/wikimedia huggingface dataset:
# Software Design/Don't use get- prefix in the name of an expensive function

Checklist questions:
* Names of expensive functions start with compute-, prepare-, etc., but not with get-?
* Names of functions that access "external" state (via RPC calls, reading from disk, querying a database, etc.) start with retrieve-, query-, etc., but not with get-?

## Why

Programmers are used to thinking of functions whose names start with "get" as cheap accessors to some state. Therefore, if an expensive function is called getSomething developers might use it mindlessly in a loop or on the hot path of some other function, thus introducing a performance bug. Requiring developers to be very careful to not blow up the performance of the system is a form of fragility in code.
You can use the following prefixes instead of get- to indicate that a function performs some computations: compute-, calculate-, prepare-, count-, determine-, acquire-, extract-, parse-, obtain-, etc. Prefixes such as retrieve-, request-, download-, query-, and read- may indicate that a function reads the data from disk, or accesses a database, or performs an RPC call or a request to some REST API to prepare the result, so a call to the function may take a long time.
For example, if there is a class representing a histogram, a function that sums the data in the buckets and computes the mean value may better be called computeMean than getMean, according to this practice.
If get- prefixes are not used in the project, but rather getter functions' names are the same as the names of the accessed properties (for example, function foo is used to accessed foo property), the same principle applies: names of expensive or slow functions should look different (have an unusual prefix) from names of cheap getters.

## Why not

Usage of prefixes such as compute-, prepare-, extract- exposes functions' implementation details (specifically, that the function is not cheap), thus making the software harder to change without either breaking the API or making the functions' names misleading. If the implementation of a function changes and it becomes a cheap getter the function's name becomes misleading. In the histogram example above, the implementation of the histogram class may be changed so that the mean is stored in a field. Therefore, this practice should be used less eagerly in public APIs and more freely in private APIs which can be easily changed. In public APIs, function's name can still communicate non-trivial cost when it's unimaginable that the implementation may change so that the function becomes a cheap getter.

## Related Practices

* Use colorful names
* Document function's algorithmic complexity
* Begin the name of a function with side effects with a verb

## Sources

* Boswell, Dustin; Foucher, Trevor (2011). The Art of Readable Code. ISBN 978-0596802295. Chapter 3, section "Matching Expectations of Users"
# Software Design/Don't define symbolic operators

Checklist questions:

## Why

* Symbolic function names make it hard to understand the intent of the functions.
* Code with symbolic operators doesn't look like English text.
* Symbolic operators may be hard to search for, navigate to in IDEs, verbally refer to in conversations.

## Why not

Code clarity, Code size
# Software Design/Don't expose init function

Checklist questions:
This article corresponds to Resource acquisition is initialization entry on Wikipedia.

## Why

* Code robustness
* Less client code
# Software Design/Easiness of change

Easiness of change (or maintainability) is a high-level code (internal) quality. Easiness of change can be decomposed into the following components:
* Determining what needs to be changed. The effortfulness of this process is affected by complexity, traceability of behavior, and apparency of dependencies primary qualities, as well as the presence of unknown unknowns.
* Ability to make the change. Compatibility requirements may render making a certain change impossible, or requiring a lengthy transition protocol which includes deprecation of the old behaviour.
* Making the change in code. This is more effortful and difficult to review (and hence error-prone) if the change amplification is high.
* Verifying the change is correct depends on the testability. If the change is wrong or incomplete, poor traceability of behavior and debuggability affect the difficulty of correcting the modification.

## Relevant practices

* Hide an object access chain
# Software Design/Explicitly pass integration objects into functions

Checklist questions:

## Why

Integration object parameters to a function is a form of documentation: they make the semantics of the function more apparent to the caller and to developers studying the code of the function.
If an integration object requires some initialization (which is against the Don't expose init function practice), reading the object from a field or a constant creates a potential for initialization race bugs, i. e. reduces code robustness.

## Why not

Verbose function calls with extra arguments make client code bigger and less clear.
When an integration object is used in nearly every function in a class or a package, passing it to all of them doesn't convey additional information. In particular, although logger objects or time source objects could be seen as integration objects, if they were passed to a significant fraction of all functions in the system, it would stop being very useful from the documentation point of view.

## Sources

* Adam Warski (January 6, 2020). "ZIO environment meets constructor-based dependency injection".
# Visual communication design

Visual Communication Design is a branch of arts comprehending the designed visual communication of ideas. Visual communications design suffuses modern life: signage, books, interactive screens, websites, newspapers, television and more.
The building blocks of visual communications design include:
* Line-the foundation of any design. Line can be mechanical (drawn with a guide, such as a ruler) or organic (drawn freehand).
* Shape-any object constructed by lines, whether by a solid or implied line, such as dots or dashes.
* Color-as well as filling shapes, color can significantly create or affect the "mood" of a design.
* Typography-literally, the use of text, typography affects the mood of a design, much like color, while also controlling the clarity of the intended message.
* Layout-"placing into view," the arrangement of the design elements on a page.
* Visual Perception-the user's reaction to a design. This can range from simple (meanings of colors and textures, proximity of elements, readability, etc.) to more abstract psychological theories (the Gestalt Principle, the Law of Closure, etc.)

## Format

This topic has no format right now. Feel free to contribute and provide input. We're always looking for fresh ideas! Whether you want to learn more yourself, or gather resources to use with your students, anything within goes.
# Vitalism

Welcome to the Vitalism learning project.

## Content summary

Vitalism is the idea that living organisms cannot be entirely explained in terms of the same forces and materials that account for the behavior of non-living objects. According to vitalism, there must be some additional "vital force" present in living organisms that distinguishes the living state from the non-living.
Vitalism is a natural philosophical position for humans who have no knowledge of the details of physical matter. Recognition of the molecular basis of life allows for a materialistic philosophical position which adopts the hypothesis that the same physical laws govern both living and non-living objects.

## Goals

This learning project offers learning activities that review the history of vitalism as a theory of the living state.
Concepts to learn include how conceptual understanding of living organisms has changed through time and how modern science's approach to the study of life differs from pre-scientific ideas about life.

## Learning materials

Learning materials and learning projects are located in the main Wikiversity namespace. Simply make a link to the name of the lesson (lessons are independent pages in the main namespace) and start writing!
You should also read about the Wikiversity:Learning model. Lessons should center on learning activities for Wikiversity participants. Learning materials and learning projects can be used by multiple projects. Cooperate with other departments that use the same learning resource.
* Chemistry and consciousness - a Biochemistry survey course; can all aspects of life be accounted for in terms of chemical processes?
* On the Soul: discussion group - Was Aristotle a Vitalist?

## Reading

* History of organic chemistry at Wikibooks
* 1896 Matter and Memory by Henri Bergson, one of the last great advocates of Vitalism.
* The soul and the brain between anatomy and Naturphilosophie in the early nineteenth century by M. Hagner. (1992)
* 1996 Daniel Dennett's book "Kinds of Minds", Chapter 2. Dennett wrote, "Dualism...and Vitalism (the view that living things contain some some special physical but equally mysterious stuff-élan vital) have been relegated to the trash heap of history...."
* 1998 Bechtel, W. and Richardson, R. (1998). Vitalism. In E. Craig (Ed.), Routledge Encyclopedia of Philosophy. London: Routledge.
* 2005 On the Vitality of Vitalism by Monica Greco - comments on the continuing vitality of vitalism. (Theory, Culture & Society, Vol. 22, No. 1, 15-27)
* Qi - Wikipedia article about a non-Western conceptualization of "life force".

## Activities

* Read about vitalism (see the section above)
* Discuss vitalism (see next section)

## Discussion

* A Conversation with Rupert Sheldrake - interview by John David Ebert. How does the work of Rupert Sheldrake relate to Vitalism?
# Visual Studio Code

Visual Studio Code is a source code editor developed by Microsoft for Windows, Linux and macOS. It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring. It is also customizable, so users can change the editor's theme, keyboard shortcuts, and preferences. It is free and open-source, although the official download is under a proprietary license.

## Readings

* Wikipedia: Visual Studio Code

## Multimedia

* YouTube: Introduction to Visual Studio Code
* YouTube: Visual Studio Code Interface
* YouTube: VSCode - Git Integration

## Activities

* Complete the tutorial Microsoft: Beginner's Guide to VS Code.
* Download and install Microsoft: Visual Studio Code.
* Review Atlassian: Install Git Tutorial
* Download and install git.
* Confirm your global commit name and email address are set by opening a command prompt and running the command: git config --list If necessary, run the following commands, replacing the text in quotes with your information: git config --global user.email "you@example.com" git config --global user.name "Your Name"
* Use Visual Studio Code to create and publish a simple web page.
** Review Microsoft: Using Version Control in VS Code.
** Create a Bitbucket website repository or GitHub website repository to host your web page.
** Start Visual Studio Code.
** View the Command Palette.
** Enter Git: Clone.
** Enter the URL to your git repository, such as https://accountname@bitbucket.org/accountname/accountname.bitbucket.io.git or https://github.com/username/username.github.io.git If the error, "fatal: protocol 'git%20clone%20https' is not supported", appears, git clone was entered twice.
** Enter a local parent directory for the repository, such as your Desktop or Documents folder.
** Open the cloned repository.
** Create or edit the index.html file. See Internet Fundamentals/HTML for more information.
** Save the file.
** View SCM (Source Code Management).
** Enter a message, such as Creating index.html or Testing Visual Studio Code.
** Commit the change by clicking on the check mark.
** In the Visual Studio Code status bar, click on the up arrow to synchronize changes with the git repository.
** Check your repository to verify that the synchronization was successful.
* Use Visual Studio Code to edit and publish additional web pages.

## See Also

* Internet Fundamentals
* Git
* VisualStudio.com: HTML
# Visual Basic for Applications/Word

This lesson introduces Word macros.

## Objectives and Skills

Objectives and skills for Word scripting include:
* Using Microsoft Word objects

## Readings

* Microsoft: Inserting Text in a Document
* Microsoft: Document Properties
* Microsoft: Built-In Document Properties
* Microsoft: Built-In Document Property Constants

## Activities

In these activities you will create macros which interact with Word documents.
* Document Properties
** Create a macro that inserts document information (properties) at the bottom of the active document. There could be several valid approaches to this solution, but one method would be to use the Document Range property. The information listed below is available either as a document property directly, or is included in the BuiltInDocumentProperties. Your macro should include Option Explicit. Your inserted information should include the following.
*** Document Name
*** Path
*** Title
*** Subject
*** Author
*** Last Author
*** Creation Date
*** Revision Number
*** Total Editing Time
*** Number of Paragraphs
*** Number of Words
*** Spelling Errors
*** Grammatical Errors
* Custom Footer
** Insert a custom footer into the active document. The footer should include the document's full path and filename on the left, and the date the file was last saved on the right.
* Custom Footer with Fields
** Repeat Activity 2 inserting a custom footer into the active document that includes the document's full path and filename and date the file was last saved. Now implement the macro as an AutoOpen macro, and use Word fields to insert the filename and date last saved. Ensure that the macro tests to see if a footer is already in the document, and does nothing if a footer already exists.
# Viticulture

Viticulture is the study of grapes and how they grow.

## Prerequisites
#### Physical Sciences

* Chemistry
* Geography
* Geology

#### Life Sciences

* Biology
* Botany & Plant Sciences

## Learning Materials
### Viticulture Lessons

Topics include varietal selection, site selection, site preparation, equipment, first season establishment, vine growth development and training, trellis systems, vine propagation, weed control, and vine disease control.

#### Grapevine Biology

Varieties, rootstocks, clones, physiology and biochemistry of grapevine growth and fruit maturation; soil science, winter hardiness; grapevine propagation.
* Wikipedia article:w:Vitis
* Wikipedia article:w:Varietal
* Wikipedia article:w:List of grape varieties
* Wikipedia article:w:Rootstock
* Wikipedia article:w:Cloning
* Wikipedia article:w:Annual growth cycle of grapevines
* Wikipedia article:w:Ripeness in viticulture

#### Cultural Practices

Site selection, pruning, training, canopy management, crop control, mechanization, soil management and vineyard establishment.
* Wikipedia article:w:Vineyard
* Wikipedia article:w:Vine training
* Wikipedia article:w:Trellis (architecture)
* Wikipedia article:w:Canopy (grape)
* Wikipedia article:w:Mechanised agriculture
* Wikipedia article:w:List of agricultural machinery
* Wikipedia article:w:Soil management
* Wikipedia article:w:Harvest (wine)

#### Climate and Winegrape Production

Climatological aspects of winegrape production emphasizing selected wine regions of the world. Effects of climate, weather-related diseases, topography, soil and viticultural practices on winegrape production.
* Wikipedia article:w:Climate categories in viticulture
* Wikipedia article:w:Black rot (grape)
* Wikipedia article:w:Plant pathology
* Wikipedia article:w:Topography

#### Introduction to Soil Science

Physical, chemical, biological and hydrological processes within the soil system, their interrelation and relation between these processes and the potential use of the soil.
'Soil and the environment' 'The makeup of soil' 'The vine root habitat' 'How the soil supplies nutrients' 'Nutrients for healthy vines and good wines' 'Soil/water/vine relationships and water management' 'Soil quality in vineyards' 'Site selection and soil preparation' 'Soil and wine'
* Wikipedia article:w:List of vineyard soil types
* Wikipedia article:w:Soil_pH
* Wikipedia article:w:Terroir
* Wikipedia article:w:Irrigation_in_viticulture

#### Grape Pest Management

Biology and dynamics of grapevine pest activity - insects, diseases, weeds, nematodes, vertebrates. Integrated pest management approach looking at all aspects of control chemical, biological, cultural. Application techniques, pest identification and monitoring.
* Wikipedia article:w:List of grape diseases
* Wikipedia article:w:Elsinoë ampelina
* Wikipedia article:w:Powdery mildew
* Wikipedia article:w:Eutypella scoparia
* Wikipedia article:w:Excoriose
* Wikipedia article:w:Botrytis cinerea
* Wikipedia article:w:Downy mildew
* Wikipedia article:w:Pierce's disease

## Resources

* Search for Viticulture at Wikiversity
* w: Viticulture
* A WINE GLOSSARY
# Visual Basic for Applications/Variables

This lesson introduces variables.

## Objectives and Skills

Objectives and skills for using variables include:
* Declaring variables by using the appropriate data types
* Making variables available to procedures in all modules of an application
* Performing actions with built-in and user-defined constants

## Readings

* Wikipedia: Variable (computer science)
* Wikipedia: Constant (computer programming)
* Wikipedia: Data type
* Wikipedia: Type conversion
* Wikipedia: Scope (computer science)
* Microsoft: Declaring Variables
* Microsoft: Option Explicit
* Microsoft: InputBox Function
* Microsoft: Let Statement

## Multimedia

* YouTube: InputBox

## See Also

* EasyExcelVBA: How to Write a Macro.
# WikiJournal of Science/Volume 4 Issue 1

WikiJournal of Science Open access • Publication charge free • Public peer review • Wikipedia-integrated
Volume 7(1)
Previous Volume 1(1) Volume 1(2) Volume 2(1) Volume 3(1) Volume 4(1) Volume 5(1) Volume 6(1)
Editorial guidelines Ethics statement Bylaws Financials Calendar
WikiJournal of Science is an open-access, free-to-publish, Wikipedia-integrated academic journal for science, mathematics, engineering and technology topics. WJS WikiJSci Wiki.J.Sci. WikiJSci WikiSci WikiScience Wikiscience Wikijournal of Science Wikiversity Journal of Science WikiJournal Science Wikipedia Science Wikipedia science journal STEM Science Mathematics Engineering Technology Free to publish Open access Open-access Non-profit online journal Public peer review
# WikiJournal of Science/Volume 6 Issue 1

WikiJournal of Science Open access • Publication charge free • Public peer review • Wikipedia-integrated
Volume 7(1)
Previous Volume 1(1) Volume 1(2) Volume 2(1) Volume 3(1) Volume 4(1) Volume 5(1) Volume 6(1)
Editorial guidelines Ethics statement Bylaws Financials Calendar
WikiJournal of Science is an open-access, free-to-publish, Wikipedia-integrated academic journal for science, mathematics, engineering and technology topics. WJS WikiJSci Wiki.J.Sci. WikiJSci WikiSci WikiScience Wikiscience Wikijournal of Science Wikiversity Journal of Science WikiJournal Science Wikipedia Science Wikipedia science journal STEM Science Mathematics Engineering Technology Free to publish Open access Open-access Non-profit online journal Public peer review
# WikiJournal of Science/Volume 1 Issue 1

WikiJournal of Science Open access • Publication charge free • Public peer review • Wikipedia-integrated
Volume 7(1)
Previous Volume 1(1) Volume 1(2) Volume 2(1) Volume 3(1) Volume 4(1) Volume 5(1) Volume 6(1)
Editorial guidelines Ethics statement Bylaws Financials Calendar
WikiJournal of Science is an open-access, free-to-publish, Wikipedia-integrated academic journal for science, mathematics, engineering and technology topics. WJS WikiJSci Wiki.J.Sci. WikiJSci WikiSci WikiScience Wikiscience Wikijournal of Science Wikiversity Journal of Science WikiJournal Science Wikipedia Science Wikipedia science journal STEM Science Mathematics Engineering Technology Free to publish Open access Open-access Non-profit online journal Public peer review
# WikiJournal of Science/Volume 2 Issue 1

WikiJournal of Science Open access • Publication charge free • Public peer review • Wikipedia-integrated
Volume 7(1)
Previous Volume 1(1) Volume 1(2) Volume 2(1) Volume 3(1) Volume 4(1) Volume 5(1) Volume 6(1)
Editorial guidelines Ethics statement Bylaws Financials Calendar
WikiJournal of Science is an open-access, free-to-publish, Wikipedia-integrated academic journal for science, mathematics, engineering and technology topics. WJS WikiJSci Wiki.J.Sci. WikiJSci WikiSci WikiScience Wikiscience Wikijournal of Science Wikiversity Journal of Science WikiJournal Science Wikipedia Science Wikipedia science journal STEM Science Mathematics Engineering Technology Free to publish Open access Open-access Non-profit online journal Public peer review
# WikiJournal of Science/Volume 1 Issue 2

WikiJournal of Science Open access • Publication charge free • Public peer review • Wikipedia-integrated
Volume 7(1)
Previous Volume 1(1) Volume 1(2) Volume 2(1) Volume 3(1) Volume 4(1) Volume 5(1) Volume 6(1)
Editorial guidelines Ethics statement Bylaws Financials Calendar
WikiJournal of Science is an open-access, free-to-publish, Wikipedia-integrated academic journal for science, mathematics, engineering and technology topics. WJS WikiJSci Wiki.J.Sci. WikiJSci WikiSci WikiScience Wikiscience Wikijournal of Science Wikiversity Journal of Science WikiJournal Science Wikipedia Science Wikipedia science journal STEM Science Mathematics Engineering Technology Free to publish Open access Open-access Non-profit online journal Public peer review
# WikiJournal of Science/Volume 3 Issue 1

WikiJournal of Science Open access • Publication charge free • Public peer review • Wikipedia-integrated
Volume 7(1)
Previous Volume 1(1) Volume 1(2) Volume 2(1) Volume 3(1) Volume 4(1) Volume 5(1) Volume 6(1)
Editorial guidelines Ethics statement Bylaws Financials Calendar
WikiJournal of Science is an open-access, free-to-publish, Wikipedia-integrated academic journal for science, mathematics, engineering and technology topics. WJS WikiJSci Wiki.J.Sci. WikiJSci WikiSci WikiScience Wikiscience Wikijournal of Science Wikiversity Journal of Science WikiJournal Science Wikipedia Science Wikipedia science journal STEM Science Mathematics Engineering Technology Free to publish Open access Open-access Non-profit online journal Public peer review
# WikiJournal of Science/Volume 5 Issue 1

WikiJournal of Science Open access • Publication charge free • Public peer review • Wikipedia-integrated
Volume 7(1)
Previous Volume 1(1) Volume 1(2) Volume 2(1) Volume 3(1) Volume 4(1) Volume 5(1) Volume 6(1)
Editorial guidelines Ethics statement Bylaws Financials Calendar
WikiJournal of Science is an open-access, free-to-publish, Wikipedia-integrated academic journal for science, mathematics, engineering and technology topics. WJS WikiJSci Wiki.J.Sci. WikiJSci WikiSci WikiScience Wikiscience Wikijournal of Science Wikiversity Journal of Science WikiJournal Science Wikipedia Science Wikipedia science journal STEM Science Mathematics Engineering Technology Free to publish Open access Open-access Non-profit online journal Public peer review