text:
Bourne Shell Scripting/Running Commands

Before we can start any kind of examination of the abilities of the Bourne Shell and how you can tap into its power, we have to cover some basic ground first: we have to discuss how to enter commands into the shell for execution by that shell.

Taking another look at what you've probably already seen
If you have access to a Unix-based machine (or an emulator on another operating system), you've probably been using the Bourne Shell -- or one of its descendants -- already, possibly without realising. Surprise: you've been doing shell scripting for a while already!

In your Unix environment, go to a terminal; either a textual logon terminal, or a terminal-in-a-window if you're using the X Window System (look for something called xterm or rxvt or just terminal, if you have actually not ever done this yet). You'll probably end up looking at a screen looking something like this:

Ben_Tels:Local_Machine:~>_

or The admin says: everybody, STOP TRYING TO CRASH THE SYSTEM Have a lot of fun! bzt:Another_Machine:~>_

or even something as simple as

$_

That's it. That's your shell: your direct access to everything the system has to offer.

Using the shell in interactive mode
Specifically, the program you accessed a moment ago is your shell, running in interactive mode: the shell is running in such a way that it displays a prompt and a cursor (the little, blinking line) and is waiting for you to enter a command for it to execute. You execute commands in interactive mode by typing them in, followed by a press of the Enter key. The shell then translates your command to something the operating system understands and passes off control to the operating system so that it can actually carry out the task you have sent it. You'll notice that your cursor will disappear momentarily while the command is being carried out, and you cannot type anymore (at this point, the Bourne Shell program is no longer in control of your terminal -- the other program that you started  by executing your command is). At some point the operating system will be finished working on your command and the shell will bring up a new prompt and the cursor as well and will then start waiting again for you to enter another command. Give it a try: type the command

 * ls enter

After a short time, you'll see a list of files in the working directory (the directory that your shell considers the "current" directory), a new prompt and the cursor.

This is the simplest way of executing shell commands: typing them in one at a time and waiting for each to complete in order. The shell is used in this way very often, both to execute commands that belong to the Bourne Shell programming language and simply to start running other programs (like the ls program from the example above).

A useful tidbit
Before we move on, we'll mention two useful key combinations when using the shell: the command to interrupt running programs and shell commands and the command to quit the shell (although, why you would ever want to stop using the shell is beyond me....).

To interrupt a running program or shell command, hit the Control and C keys at the same time. We'll get back to what this does exactly in a later chapter, but for now just remember this is the way to interrupt things.

To quit the shell session, hit Control+d. This key combination produces the Unix end-of-file character -- we'll talk more later about why this also terminates your shell session. Some modern shells have disabled the use of Control+d in favor of the "exit" command (shame on them). If you're using such a shell, just type the word "exit" (like with any other command) and press Enter (from here on in, I'll leave the "Enter" out of examples).

The only slightly less easy way: the script
As we saw in the last section, you can very easily execute shell commands for all purposes by starting an interactive shell session and typing your commands in at the prompt. However, sometimes you have a set of commands that you have to repeat regularly, even at different times and in different shell sessions. Of course, in the programming-centric environment of a Unix system, you can write a program to get the same result (in the C language for instance). But wouldn't it be a lot easier to have the convenience of the shell for this same task? Wouldn't it be more convenient to have a way to replay a set of commands? And to be able to compose that set as easily as you can write the single commands that you type into the shell's interactive sessions?

The shell script
Fortunately, there is such a way: the Bourne Shell's non-interactive mode. In this mode, the shell doesn't have a prompt or wait for your commands. Instead, the shell reads commands from a text file (which tells the shell what to do, kind of like an actor gets commands from a script -- hence, shell script). This file contains a sequence of commands, just as you would enter them into the interactive session at the prompt. The file is read by the shell from top to bottom and commands are executed in that order.

A shell script is very easy to write; you can use any text-editor you like (or even any wordprocessor or other editor, as long as you remember to save your script in plain text format). You write commands just as you would in the interactive shell. And you can run your script the moment you have saved it; no need to compile it or anything.

Running a shell script
To run a shell script (to have the shell read it and execute all the commands in the script), you enter a command at an interactive shell prompt as you would when doing anything else (if you're using a graphical user interface, you can probably also execute your scripts with a click of the mouse). In this case, the program you want to start is the shell program itself. For instance, to run a script called MyScript, you'd enter this command in the interactive shell (assuming the script is in your working directory):

Running a script

Starting the shell program from inside the shell program may sound weird at first, but it makes perfect sense if you think about it. After all, you're typing commands in an interactive mode shell session. To run a script, you want to start a shell in non-interactive mode. That's what's happening in the above command. You'll note that the Bourne Shell executable takes a single parameter in the example above: the name of the script to execute.

If you happen to be using a POSIX 1003.1-compliant shell, you can also execute a single command in this new, non-interactive session. You have to use the -c command-line switch to tell the shell you're passing in a command instead of the name of a script:

Running a command in a new shell

We'll get to why you would want to do this (rather than simply enter your command directly into the interactive shell) a little further down.

There is also another way to run a script from the interactive shell: you type the execute command (a single period) followed by the name of the script:

Sourcing a script

The difference between that and using the sh command is that the sh command starts a new process and the execute command does not. We'll look into this (and its importance) in the next section. By the way, this notation with the period is commonly referred to as sourcing a script.

Running a shell script the other way
There is also another way to execute a shell script, by making more direct use of a feature of the Unix operating system: the executable mode.

In Unix, each and every file has three different permissions (read, write and execute) that can be set for three different entities: the user who owns the file, the group that the file belongs to and "the world" (everybody else). Give the command

in the interactive shell to see the permissions for all files in the working directory (the column with up to nine letters, r, w and x for read write and execute, the first three for the user, the middle ones for the group, the right ones for the world). Whenever one of those entities has the "execute" permission, that entity can simply run the file as a program. To make your scripts executable by everybody, use the command

as in

Making MyScript executable

You can then execute the script with a simple command like so (assuming it is in a directory that is in your PATH, the directories that the shell looks in for programs when you don't tell it exactly where to find the program):

Running a command in a new shell

If this fails then the current directory is probably not in your PATH. You can force the execution of the script using

Making the shell look for your script in the current directory

At this command, the operating system examines the file, places it in memory and allows it to run like any other program. Of course, not every file makes sense as a program; a binary file is not necessarily a set of commands that the computer will recognize and a text file cannot be read by a computer at all. So to make our scripts run like this, we have to do something extra.

As we mentioned before, the Unix operating system starts by examining the program. If the program is a text file rather than a binary one (and cannot simply be executed), the operating system expects the first line of the file to name the interpreter that the operating system should start to interpret the rest of the file. The line the Unix operating system expects to find looks like this:

In our case, the following line should work pretty much everywhere:

The Bourne Shell executable, to be found in the bin directory, which is right under the top of the filesystem tree. For example:

Bourne shell script with an explicit interpreter

Executing shell scripts like this has several advantages. First it's less cumbersome than the other notations (it requires less typing). Second, it's an extra safety if you're going to pass your scripts around to others. Instead of relying on them to have the right shell, you can simply specify which shell they should use. If Bourne Shell is enough, that's what you ask for. If you absolutely need ksh or bash, you specify that instead (mind you, it's not foolproof — other people can ignore your interpreter specification by running your script with one of the other commands that we discussed above, even if the script probably won't work if they do that).

Just as a sidenote, Unix doesn't limit this trick to shell scripts. Any script interpreter that expects its scripts to be plain-text can be specified in this way. You can use this same trick to make directly executable Perl scripts or Python, Ruby, etc. scripts as well as Bourne Shell scripts.

Note also that with the distributions using bash as their default shell, you can use the #!/bin/sh shebang and have typical bash syntax in your script. It will work. But for the same script to work with a distribution not using bash as its default shell (as example Debian), you will have to modify the script or to change its shebang to #!/bin/bash.

Why you want to know about multiprocessing
While this is not directly a book about Unix, there are some aspects of the Unix operating system that we must cover to fully understand why the Bourne Shell works the way it does from time to time.

One of the most important aspects of the Unix operating system – in fact, the main aspect that sets it apart from all other main-stream operating systems – is that the Unix Operating System is and always has been a multi-user, multi-processing operating system (this in contrast with other operating systems like MacOS and Microsoft's DOS/Windows operating systems). The Unix OS was always meant to run machines that would be used simultaneously by several users, who would all want to run at least one but possibly several programs at the same time. The ability of an operating system to divide the time of a machine's processor among several programs so that it seems to the user that they are all running at the same time is called multiprocessing. The Unix Operating System was designed from the core up with this possibility in mind and it has an effect on the way your shell sessions behave.

Whenever you start a new process (by running a program, for instance) on your Unix machine, the operating system provides that process with its very own operating environment. That environment includes some memory for the process to play in and it can also include certain predefined settings for all processes. Whenever you run the shell program, it is running in its own environment.

Whenever you start a new process from another process (for instance by issuing a command to your shell program in interactive mode), the new process becomes what is called a child process of the first process (the ls program runs as a child process of your shell, for instance). This is where it becomes important to know about multiprocessing and process interaction: a child process always starts with a copy of the environment of the parent process. This means two things:

 * 1) A child process can never make changes to the operating environment of its parent—it only has access to a copy of that environment;
 * 2) If you actually do want to make changes in the environment of your shell (or specifically want to avoid it), you have to know when a command runs as a child process and when it runs within your current shell; you might otherwise pick a variant that has the opposite effect of that which you want.

What does what
We have seen several ways of running a shell command or script. With respect to multiprocessing, they run in the following way:

A useful thing to know: background processes
With the above, it may seem like multiprocessing is just a pain when doing shell scripting. But if that were so, we wouldn't have multiprocessing—Unix doesn't tend to keep things that aren't useful. Multiprocessing is a valuable tool in interacting with the rest of the system and one that you can use to work more efficiently. There are many books available on the benefits of multiprocessing in program development, but from the point of view of the Bourne Shell user and scripter the main one is the ability to hand off control of a process to the operating system and still keep on working while that child process is running. The way to do this is to run your process as a background process.

Running a process as a background process means telling the operating system that you want to start a process, but that it should not attach itself to any of the interactive devices (keyboard, screen, etc.) that its parent process is using. And more than that, it also tells the operating system that the request to start this child process should return immediately and that the parent process should then be allowed to continue working without having to wait for its child process to end.

This sounds complicated, but you have to keep in mind that this ability is completely ingrained in the Unix operating system and that the Bourne Shell was intended as an easy interface to the power of Unix. In other words: the Bourne Shell includes the ability to start a child process as a simple command of its own. Let's demonstrate how to do this and how useful the ability is at the same time, with an example. Give the following (rather pointless but still time consuming) command at the prompt:

 * N=0 && while [ $N -lt 10000 ]; do date >> scriptout; N=`expr $N + 1`; done

We'll get into what this says in later chapters; for now, it's enough to know that this command asks the system for the date and time and writes the result to a file named "scriptout". Since it then repeats this process 10000 times, it may take a little time to complete.

Now give the following command:

 * N=0 && while [ $N -lt 10000 ]; do date >> scriptout; N=`expr $N + 1`; done&

You'll notice that you can immediately resume using the shell (if you don't see this happening, hit Control+C and check that you have the extra ampersand at the end). After a while the background process will be finished and the scriptout file will contain another 10000 time reads.

The way to start a background process in Bourne Shell is to append an ampersand (&) to your command.

Remarks
Actually, you can force a child process here as well -- we'll see how when we talk about command grouping

title: Bourne Shell Scripting/Running Commands


text:
Bicycles/Maintenance and Repair/Tools and Supplies/Truing Jig

A truing jig, aka a wheel truing stand, facilitates the precise truing or building of a wheel. It consists of fork, similar to a bicycle's front fork, and callipers which allow precise measurement of the position of the rim.

It is possible to make your own truing jib. Start by getting an old bicycle fork and finding a way of supporting it. The easiest way is to find a sturdy box, and drilling a hole big enough to accommodate the fork column. The hole should be tight enough to firmly hold the fork and the wheel which will be supported. The fork is now upside down. It is possible to fashion some kind of true indicator or caliper using a nail or pencil attached on one leg of the fork. A metal strap that can be attached with a screw as a pencil or nail holder works best. I try to avoid using tape, string or rubber band since they have a tendency to move which could affect an accurate reading of the wheel's straightness. Straight wheels tend to turn smoothly without deviation when viewed from the front. I start by bringing the nail as closely as possible to the wheel rim. Turning the wheel by hand, warped wheels will occasionally touch the rim or show a large gap. Wheel spokes work by providing enough pull or release on both sides of the rim so that the rim remains straight. By loosening one spoke, the tension is strengthened on the other side and vice-versa. Ideally the spokes on both sides should be even to maintain optimum rim straightness. A sequence of tightening and loosening both sides of the spokes where necessary is the key to rim straightness.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Cryptography/Brute force attack

A brute force attack against a cipher consists of breaking a cipher by trying all possible keys. Statistically, if the keys were originally chosen randomly, the plaintext will become available after about half of the possible keys are tried. As we discuss in ../Basic Design Principles/, the underlying assumption is, of course, that the cipher is known. Since A. Kerckhoffs first published it, a fundamental maxim of cryptography has been that security must reside only in the key. As Claude E. Shannon said a few decades later, 'the enemy knows the system'. In practice, it has been excellent advice.

As of the year 2002, symmetric ciphers with keys 64 bits or fewer are vulnerable to brute force attacks. DES, a well respected symmetric algorithm which uses 56-bit keys, was broken by an EFF project in the late 1990s. They even wrote a book about their exploit—Cracking DES, O'Reilly and Assoc. The EFF is a non-profit cyberspace civil rights group; many people feel that well-funded organisations like the NSA can successfully attack a symmetric key cipher with a 64-bit key using brute force. This is surely true, as it has been done publicly. Many observers suggest a minimum key length for symmetric key algorithms of 128 bits, and even then it is important to select a secure algorithm. For instance, many algorithms can be reduced in effective keylength until it is computationally feasible to launch a brute force attack. AES is recommended for use until at least 2030.

The situation with regard to asymmetric algorithms is much more complicated and depends on the individual algorithm. Thus the currently breakable key length for the RSA algorithm is at least 768 bits (broken publicly since 2009), but for most elliptic curve asymmetric algorithms, the largest currently breakable key length is believed to be rather shorter, perhaps as little as 128 bits or so. A message encrypted with a 109 bit key by an elliptic curve encryption algorithm was publicly broken by brute force key search in early 2003.

As of 2015, a minimum key length of 224 bits is recommended for elliptic curve algorithms, and 2048 bits for such other asymmetric key algorithms as RSA (asymmetric key algorithms that rely on complex mathematical problems for their security always will need much larger keyspaces as there are short-cuts to cracking them, as opposed to direct brute-force).

Common Brute Force Attacks
The term "brute force attacks" is really an umbrella term for all attacks that exhaustively search through all possible (or likely) combinations, or any derivative thereof.

Dictionary Attack
A dictionary attack is a common password cracking technique, relying largely on the weak passwords selected by average computer users. For instance, if an attacker had somehow accessed the hashed password files through various malicious database manipulations and educated searching on an online store, he would then write a program to hash one at a time all words in a dictionary (of, for example any or all languages and common derivative passwords), and compare these hashes to the real password hashes he had obtained. If the hashes match, he has obtained a password.

Pre-Computation Dictionary Attack
The simple dictionary attack method quickly becomes far too time-consuming with any large number of password hashes, such as an online database would yield. Thus, attackers developed the method of pre-computation. In this attack, the attacker has already hashed his entire suite of dictionaries, and all he need do is compare the hashes. Additionally, his task is made easier by the fact that many users will select the same passwords. To prevent this attack, a database administrator must attach unique 32-bit salts to the users passwords before hashing, thus rendering precompution useless.

The ../Breaking Hash Algorithms/ chapter of this books goes into more detail on attacks that specifically apply to hashed password files.

Responses to Brute Force Attacks
There are a number of ways to mitigate brute force attacks. For example:
 * Changing a key frequently in response to an attempt to try all possible keys would require an attacker to start over assuming he knew the key was changed or finish attempting all possible keys before starting the attack again from the beginning.
 * A system could rely on a time out or lock out of the system after so many attempts at guessing the key. Systems that time out can simply block further access, lock a user account, contact the account owner, or even destroy the clear text information.
 * 2 step verification is a method of requiring a second key to enter the system.  This complicates a brute force attack since the attacker must not only guess one key but then guess a second possibly equally complex key.  The most common implementation of this is to ask for further authentication "What's your first dogs name?".  There is a new trend on the horizon for systems to utilize two step verification through a time based key that is emailed or texted and having access to an account or particular electronic device serves as a secondary key.

The ../Secure Passwords/ chapter of this book goes into more detail on mitigations and other responses that specifically apply to hashed password files.

title: Cryptography/Brute force attack


text:
Cryptography/DES

The Data Encryption Standard (DES) was a widely-used algorithm for encrypting data. It was developed by IBM under the name Lucifer, and was submitted to NBS in response to a 1973 solicitation for better cryptosystems. The US National Institute of Standards and Technology with help from the National Security Agency took IBM's design and made some changes; DES was adopted as a standard in January 1977.

DES is a product block encryption algorithm (a cipher) in which 16 iterations, or rounds, of the substitution and transposition (permutation) process are cascaded. The block size is 64 bits, so that a 64-bit block of data (plaintext) can be encrypted into a 64-bit ciphertext. The key, which controls the transformation, also consists of 64 bits. Only 56 of these, however, are at the user's disposal; the remaining eight bits are employed for checking parity. The actual key length is therefore 56 bits.

Subsets of the key bits are designated K1, K2, etc., with the subscript indicating the number of the round. The cipher function (substitution and transposition) that is used with the key bits in each round is labeled f. At each intermediate stage of the transformation process, the cipher output from the preceding stage is partitioned into the 32 leftmost bits, Li, and the 32 rightmost bits, Ri. Ri is transposed to become the left-hand part of the next higher intermediate cipher, Li+1. The right-hand half of the next cipher, Ri+1, however, is a complex function of the key and of the entire preceding intermediate cipher. The essential feature to the security of the DES is that f involves a very special nonlinear substitution—i.e., f(A) + f(B) does not equal f(A + B)--specified by the Bureau of Standards? in tabulated functions known as S-boxes. This operation results in a 32-bit number, which is logically added to Ri to produce the left-hand half of the new intermediate cipher. This process is repeated, 16 times in all. To decrypt a cipher, the process is carried out in reverse order, with the 16th round being first. The DES algorithm lends itself to integrated-chip implementation. By 1984 the Bureau of Standards had certified over 35 LSI- and VLSI-chip implementations of the DES, most on single 40-pin chips, some of which operate at speeds of several million bits per second.

When the cipher was first released, the design criteria for the S-boxes was not released. With the National Security Agency's involvement in the design of the S-boxes, most security researchers were wary of DES, and there was the widespread fear that the modifications of the NSA were intended to weaken the cipher.

In 1990 with the independent discovery and open publication by Biham and Shamir of differential cryptanalysis, it turned out that at least some of the wariness was uncalled for. After the publication of this paper, the IBM personnel involved in the designed publically stated that the main factor in the design was to strengthen them against differential cryptanalysis. The secrecy behind the design criteria at the time appears to have been due to the fact that the technique was not known to the public at the time.

Notably, DES is theoretically vulnerable to a technique discovered later by Matsui, linear cryptanalysis. It is unknown whether the NSA was aware of linear cryptanalysis at the time DES was finalized, but most knowledgeable observers think not. Don Coppersmith, one of DES's designers at IBM, has stated that IBM itself was not aware of linear cryptanalysis at that time.

Because the key length is only 56 bits, DES can be, and has been, broken by the brute force attack method of running through all possible keys. It is believed that one of the reasons this reduced key length was chosen was that NSA in the mid-'70s possessed enough computer power to brute force break keys of this length. In the years since, computer hardware progress has been such that most anyone now can have sufficient computational capacity. The EFF, a cyberspace civil rights group (with neither much funding nor personnel), did it in a little more than 2 days' search at about the same time at least one attorney from the US Justice Department was publicly announcing that DES was and would remain unbreakable.

The most obvious way of improving the security of DES is to encrypt the data multiple times with different keys. Double encrypting data with DES does not add much security as it is vulnerable to meet in the middle attacks. Going one step about this, many former DES users now use Triple DES (3DES) which was described and analyzed by one of DES's patentees (see FIPS 46-3); it involves DES encryption of each data block three times with different keys. 3DES is widely regarded as adequately secure for now, though it is quite slow. Note, however, that there are several ways to use DES three times; only one of those is Tuchman's 3DES.

After another, long delayed competition, (NIST) has selected a new cipher, the Advanced Encryption Standard (AES) to replace DES (fall -'01). AES was submitted by its designers under the name Rijndael.

Implementations:

http://www.codeproject.com/KB/cs/NET_Encrypt_Decrypt.aspx (C#, Xinwen Cheng) http://frank.anemaet.nl/crypto/DES/ (Java implementation, Frank Anemaet) http://www.tero.co.uk/des/ (Javascript implementation, Paul Tero)

Crittografia/DES

title: Cryptography/DES


text:
User talk:Infection0

I see you added this:

 * Use the VILD technique to return into the dream; visualize it in a similar fashion as your previous dream, and before long you will find yourself in it. Be sure to maintain the fact that you are dreaming, or you may lose your lucidity while trying to fall asleep. Stimulate your senses as early as possible.

"you may lose your lucidity while trying to fall asleep" - how is this possible? If you aren't dreaming, you can't be lucid.

"Stimulate your senses as early as possible" - are you referring to spinning, hand rubbing etc? Remember that the reader probably reads the book full through once and then refers to it later occasionally. It needs to make sense in order!

Reply by clicking on "(talk)", choosing "Edit this page" and adding your reply to the bottom. Sign it with ~ - this puts your nickname at the end of the message, along with the date and time. Like this: r3m0t (cont) (talk) 14:47, 25 Jan 2004 (PST)

title: User talk:Infection0


text:
Cookbook:Grilled Cheese Sandwich

| Sandwiches | US Cuisine

A grilled cheese sandwich is a simple hot sandwich filled with melted cheese. The key variable is the ratio of cheese to bread; this depends on the thickness and density of the bread, and the amount of cheese used, and varies according to taste; generally more cheese is preferred, so that the bread doesn't overwhelm the cheese. The goal is to get a nicely browned sandwich with melted cheese in the middle.

Grated cheese is recommended for more even melting. If mixing the grated cheese with chopped onions or other ingredients, it is easiest to grate the cheese into a bowl, mix with additional ingredients, and then spoon onto sandwiches; otherwise it can be messy.

Grilled cheese sandwiches are often served with soups, such as tomato soup.

Ingredients

 * 2 slices of bread
 * Butter
 * 1–3 slices of easy-to-melt cheese, such as cheddar, gouda, Limberger, American (or shredded cheese to taste)
 * Other ingredients as necessary (see variations below)

Stove-top method

 * 1) Heat a skillet, frying pan or griddle over medium heat.
 * 2) Spread butter on the bread, and place both pieces of bread, butter side down, in the skillet.
 * 3) When the butter sides of both have browned (check periodically), flip one over and place cheese on top, then place the other slice of bread on top of the cheese (again, butter side down).
 * 4) Compress the sandwich by pressing on it with a spatula.
 * 5) Once the bottom side of the sandwich is browned sufficiently, flip the sandwich over. When both sides are browned, take off heat, cut, and serve.

Oven method

 * 1) Preheat oven to 150°C (300°F).
 * 2) Spread butter on both sides of the bread slices.
 * 3) Sandwich the cheese and fillings between the bread slices, and transfer the sandwiches to a baking sheet.
 * 4) Bake for 10–15 minutes, flip, and bake another 5–10 minutes or to taste.

Notes, tips, and variations

 * Try spreading both sides of the bread with mayonnaise, mustard, barbecue sauce, ketchup, and/or aioli.
 * Try layering other ingredients with sliced cheese, such as ham, tomato, shredded cooked pork, salami, etc.
 * If using shredded cheese, try mixing in various ingredients such as diced onion, garlic, leeks, shallots, pickles, crumbled bacon, pepper, thyme, cumin, etc.
 * Kappacasein of Borough Market uses cheddar cheese and sourdough bread, and mixes in onions, leek, and garlic. The bread is sliced ~6–8 mm thick and cooked in a flat sandwich press until the entire surface is crisp.
 * It is common practice at the Ma-Ka-Ja-Wan Scout Reservation in Pearson, WI to substitute a garlic-flavored spread for the butter.
 * You can also make open-faced baked sandwiches; in these, the exposed cheese tends to puff and bubble. If you only heat from above (via radiant heat), you will melt the cheese and leave the bread untoasted or lightly toasted, which may be desired; however, you should generally heat from both sides.
 * To get evenly melted cheese, and avoid burnt bread, cook over low heat on the stove—this gives the cheese time to warm up and melt, rather than scorching the bread before the cheese warms up.
 * Margarine can be used instead of butter, but it is not recommended, as direct heating tends to negatively affect the taste of margarine.
 * Using a specialized sandwich maker is useful as it circumvents the need to flip, provides attractive browning marks, and seals in the sandwich.
 * If you prefer soggy bread, melt the butter in a pan, and grill or roast in that. If you prefer crisp bread, spread butter on the bread, and toast on a grate or cook in a ridged indoor grill, so the fat runs away.

title: Cookbook:Grilled Cheese Sandwich


text:
Cookbook talk:Grilled Cheese Sandwich

Page history from Grilled cheese sandwich

View (previous 50) (next 50) (20 | 50 | 100 | 250 | 500).

Legend: (cur) = difference with current version, (last) = difference with preceding version, M = minor edit

* (cur) (last). . 00:43, 31 Oct 2003. . Dgrant (remove "if you can afford it". and "on top of that") * (cur) (last). . 00:42, 31 Oct 2003. . Dgrant (rm flattened. It doesn't have to be "flattened") * (cur) (last). . 00:42, 31 Oct 2003. . Dgrant (pressing down on it with a spatula is unecessary... ) * (cur) (last). . 22:32, 30 Oct 2003. . Gleep * (cur) (last). . 01:14, 7 Oct 2003. . Dgrant (added some variations) * (cur) (last). . 01:10, 7 Oct 2003. . Dgrant (Replaced American cheese with Cheddar chesse. American cheese has no article, and I think cheddar is perhaps more universal? Removed step about pressing down with spatula (not necessary)) * (cur) (last). . 22:09, 21 Aug 2003. . Someone else (Monte Cristo) * (cur) (last). . 21:57, 21 Aug 2003. . GRAHAMUK (+ wikis) * (cur) (last). . 21:47, 21 Aug 2003. . Someone else (actually, I suppose Margarine as opposed to Butter is the Politically Correct version....) * (cur) (last). . 21:45, 21 Aug 2003. . Someone else * (cur) (last). . 21:44, 21 Aug 2003. . Someone else (sp. oops) * (cur) (last). . 21:44, 21 Aug 2003. . Someone else (spelling,links) * (cur) (last). . 21:41, 21 Aug 2003. . Oliver Pereira (Hmm...) * (cur) (last). . 21:34, 21 Aug 2003. . Gleep

Copied talk page from en:Talk:Grilled cheese sandwich

I removed the part about pressing down with a spatula. I've never done this before in my life, and I even make grilled cheese sandwiches using frozen bread. It is not necessary to press down. Just flip it carefully using your free hand to hold the top piece of bread. The instruction about the spatula just complicated the recipe unecessarily. dave 09:13, 7 Oct 2003 (UTC)

title: Cookbook talk:Grilled Cheese Sandwich


text:
Cookbook:Grilled Peanut Butter Sandwiches

| US Cuisine | Sandwiches

Here, "grilling" means frying, as it does for the Grilled Cheese Sandwich. Elvis Presley was famous for consuming these with sliced bananas and "burnt" bacon.

Ingredients

 * 2 tablespoons peanut butter
 * 2 slices white bread
 * Butter or margarine

Procedure

 * 1) Spread peanut butter between bread slices.
 * 2) Spread outsides of bread with softened or melted butter or margarine.
 * 3) Cook in a non-stick skillet on medium heat, turning a few times, until bread is golden brown and peanut butter is melted.
 * 4) Serve with plenty of milk.

Notes, tips, and variations

 * Make a standard peanut butter and jelly sandwich and cook it in the same manner; these are very good.
 * Make a standard peanut butter and marshmallow fluff sandwich and cook it in the same manner. These are very good, but can be a bit messy.
 * Substitute almond or cashew butter for peanut butter.
 * Other kinds of bread can be substituted for the white bread.


text:
Cookbook talk:Grilled Peanut Butter Sandwiches

Or, better, feed it to the birds. Peanut butter is listed as a significant human carcinogen in my book on toxicology, but the birds wouldn't be stupid enough to eat it repeatedly so they are okay - LLM

 * All common processed peanut butters meet FDA standards for carcinogens, it's the organic ones and the "grind your own peanut butter in the store" stuff that's worrysome. Dbeardsl 21:36, 16 May 2005 (UTC)

 * There too, you're starting from FDA-approved peanuts. The worrisome thing is that the FDA standard may be more lax than you'd like. In a world where 40% of the population is smoking and lots of people get killed early from other causes, you can't expect the FDA standard to be tuned for people who expect to have long and healthy lives. There's also the question of political action from the peanut farmers, who are well-known for disproportionate influence in the USA. AlbertCahalan 22:35, 16 May 2005 (UTC)

I removed the warnings about jelly and honey, the person who wrote them had obviously never had a grilled PBJ, way better than straight grilled peanut butter. Dbeardsl 21:36, 16 May 2005 (UTC)


text:
Cookbook:Mincemeat Tart

| United Kingdom

Mincemeat is a spiced fruit preserve that does not in fact contain meat, although it may contain animal suet. The name is a throwback to Middle English from when "meat" was a word for all food, or to Victorian and earlier recipes that did combine minced lamb or beef with the spiced, preserved fruits.

Mincemeat Tarts are large (8 inch (20cm) diameter or more) open pastry tarts, sometimes with a lattice pastry top, and occasionally also containing baked or stewed apple. The smaller pastry topped tarts traditionally served at Christmas are known as Mince Pies.

Traditional British Mince Pies are made using shortcrust pastry.

Mincemeat
For 4½ pints (2.25 liters):
 * 1 lb (500 g) seeded raisins
 * 1 lb (500 g) currants
 * ½ lb (250 g) finely-ground beef suet
 * Rind of 2 lemons
 * ½ lb (250 g) candied orange peel
 * ½ lb (250 g) candied citron
 * 12 oz (375 g) white granulated sugar
 * 2 lbs (1 kg) green apples, peeled
 * ½ tsp (3 mL) nutmeg
 * ½ tsp (3 mL) cinnamon
 * ½ cup (120 mL) brandy or rum
 * 1 Tbsp (15 mL) salt

Assembly

 * Shortcrust pastry dough, homemade or store-bought
 * Milk
 * Egg (optional)

Mincemeat

 * 1) Wash and dry currants. Set aside.
 * 2) Put citron, orange peel, lemon rind, raisins, apples, and suet through a meat grinder using the coarse grinder blade.
 * 3) Mix in the currants, brandy, and spices.
 * 4) Store in a tightly-covered plastic container in the refrigerator (do not freeze) for up to 1 year.

Assembly

 * 1) Let the pastry warm slightly to almost room temperature. Place on a floured cutting board and roll it out as necessary.
 * 2) Use a doughnut cutter with the center removed or a 2½ inch round cookie cutter to cut out tart shells. Gently press into 1½-inch (4 cm) tart pans.
 * 3) Fill shells with mincemeat and top with a 1-inch (2.5 cm) round piece of pastry cut with the doughnut hole cutter. For added decoration, cut or press a design into the 1 inch pastry round before placing in the center of the filled tart.
 * 4) Lightly brush the pastry lids with milk, or a mixture of milk and beaten egg.
 * 5) Bake at 425 °F (220 °C) for approximately 20 minutes or until pastry is lightly browned at the edges.
 * 6) Allow to cool on a wire rack, and dust with icing sugar.

Notes, tips, and variations

 * If you don't want to make your own pastry, store-bought pie crust will work well.
 * Candied orange peel and citron can be found in most markets around Thanksgiving.
 * Suet is pure beef fat and can be obtained from a butcher (they will grind it on request.) Vegetarians can substitute a solid vegetable fat such as Pura vegetable suet.
 * People wanting a more alcoholic kick to their mince pie may also want to inject them with a little extra brandy.

title: Cookbook:Mincemeat Tart


text:
Cookbook:Molasses Taffy

| Confections

Ingredients

 * ½ cup fancy molasses
 * 1 ½ cups granulated sugar
 * 1 ½ Tbsp vinegar
 * ½ cup water
 * ¼ tsp cream of tartar
 * 4 Tbsp butter
 * ⅛ tsp baking soda

Procedure

 * 1) Combine molasses, sugar, vinegar and water in a heavy saucepan over medium heat.
 * 2) Cook to 255–270°F (124–132°C). The hotter the syrup, the harder the final taffy will be.
 * 3) Remove from heat and stir in butter, cream of tartar, and baking soda.
 * 4) Pour into buttered pan or onto marble surface, and let cool slightly.
 * 5) When cool and thick enough to handle, grease your hands. Grab the candy mixture with both hands, and stretch it apart while twisting slightly. Repeat this process, pulling and twisting the candy until light in color. This pulling and twisting process incorporates air and lightens the candy.
 * 6) Cut into 1-inch pieces; wrap in squares of waxed paper.

title: Cookbook:Molasses Taffy


text:
Cookbook talk:One-Hour Thanksgiving Dinner

Page history from One-Hour Thanksgiving Dinner

Legend: (cur) = difference with current version, (last) = difference with preceding version, M = minor edit

* (cur) (last). . 15:52, 21 Dec 2003. . Smack (rm pages needing attention notice) * (cur) (last). . 16:20, 17 Dec 2003. . Smack (whoops - link to Wikibooks) * (cur) (last). . 16:16, 17 Dec 2003. . Smack (transwiki to wikibooks) * (cur) (last). . 00:22, 2 Dec 2003. . 218.116.36.75   * (cur) (last). . 00:20, 2 Dec 2003. . 218.116.36.75   * (cur) (last). . 00:16, 2 Dec 2003. . 218.116.36.75   * (cur) (last). . 23:14, 28 Nov 2003. . 171.75.192.206 (restructured partially rewritten) * (cur) (last). . 07:44, 27 Nov 2003. . Lexor (Fmting, copyedits, fixed spelling "convince? foods" -> "convenience foods". Use wikilist.) * (cur) (last). . 23:04, 26 Nov 2003. . 171.75.192.172 (Name brands removed) * (cur) (last). . 22:33, 26 Nov 2003. . RickK (This page has been listed on Pages needing attention.) * (cur) (last). . 22:27, 26 Nov 2003. . 171.75.192.172 (grammer clean up) * (cur) (last). . 22:07, 26 Nov 2003. . 171.75.192.172 (fixed lists) * (cur) (last). . 22:06, 26 Nov 2003. . 171.75.192.172   * (cur) (last). . 22:05, 26 Nov 2003. . 171.75.192.172

Discussion from w:Talk:One-Hour Thanksgiving Dinner

I really dislike the use of brand names for all of these ingredients. Is this copied from the back of a package?

Place the vegetables on the stove under low heat. - under the heat? RickK 06:11, 27 Nov 2003 (UTC)

 * Not copied from any package. The brands dont match anyhow and compete against one another.

The mention of Pillsburry instant frozen biscuits was intentional as they have a flufier and better consitincey than other brands and do not burn in the time frame.

The HoneySuckle White turkey breast is the only precooked cook and serve breast consitently available across stores. Stove Top Stuffing is specifically mentioned becuase it is a quick cooking instant range stuffing that is available across supermarkets.

Stove Top works in this case where as other brands would not becuase it is specifically designed for the range and "quick cooking instant range stuffing" will confuse people.

 * Fixed the grammer a bit

 * And perhaps the spelling... what exactly is a convince food? Is it something you convince your family to eat? ;-) --Lexor 15:48, 27 Nov 2003 (UTC)

This is very parochial - if it's purpose is to educate readers how to cook a turkey dinner within one hour, then so be it, however, as it stands it's merely a list of processed food items available in the USA only. The use of the word biscuit is very confusing! --Markb

I did some research on it. These products should be availble in Brazil, Canada, and the US (Although not at US prices except in the US). The Turkey most certainly is. Canada Thanksgiving is celebrated more like Erntedankfest, Certainly celebrated in the US in areas with very high levels of German imigration such as the Missouri Rhineland and St. Louis and in in certain other states, along with Oktoberfest (Celebrated throughout the US often times state-wide as is the case with Missouri) and Halloween (All Harvest end festivals).

It is dubios practice to link American (US, Brazil, Argentina- all observed on the same day) Thanksgiving to the Harvest festivals, except Canada's, since;

1.) It is celebrated in Dec-Nov in all countries except Canada and at first in the US only in New England, where the harvest actually ends by October,

2.) In Brazil(since 1949) and Argentina (Since 1997) it is the end of spring.

3.) Also not noted is that the 2'nd American Thanksgiving, in 1641, was also called "Scalp Day" and it was held becuase the colonist were thankfull for finding suitable Native Americans to sell into slavery and one of the festivities was kicking decaptated heads around. These "Thanksgivings" were often held by each community after each time they defeated the indiginous population.  It was Washington who decided that all these "Celebrations" should be held on one day "Thanksgiving".  Even when Lincoln established "Thanksgiving" as an official holiday he sent the army against the Sioux.

Cookbook section moved to Wikibooks. May currently be found here. -Smack 00:16, 18 Dec 2003 (UTC)

Ergh... I can't remotely imagine anyone ever being desperate enough to want to make this, or to eat it! Still, I guess it's a big world out there. I hope somebody can give us instructions for a REAL thanksgiving dinner to go along with this fake. (I wouldn't worry about brand names in this instance because it's more a curiosity than a recipe.) KJ 07:21, 16 Apr 2004 (UTC)

 * I wouldn't eat it either, but based on the wikipedia article it came from, this is targeted at college students who can't get home for thanksgiving. I suppose we should put together traditional menus for the various holidays, linked to the recipes for those dishes. However, what is traditional is different based on where you are.  For example, Californians will often include crab in thanksgiving dinner as the dungeness crab season starts in mid November here, so crab is cheap at that time, but its inclusion in Thanksgiving dinner in Iowa would be unheard of. hrmmm, sounds like a project to consider. Gentgeen 07:50, 16 Apr 2004 (UTC)

As changed, this is totally useless! It's not a recipe or even a compilation of recipes 'take two cans of chosen vegetables'? What sort of instruction is that?! You might as well delete the timeline.

---

I believe that this dinner needs something else. How about a fruit salad? I suggest the following: Drain and then combine a can of pineapple chunks with a can of mandarin oranges. Add some crushed walnuts and flake coconut. Slice in a fresh banana. This is an easy salad that would add some variety and some color.


text:
Cookbook:Turkey Biscuit

 * Meat

This recipe is designed for using the leftover turkey after a holiday meal, such as Thanksgiving or Christmas dinner.

Ingredients

 * 4 cups cooked turkey meat, chopped
 * 1 large onion, chopped
 * 1 can cream of chicken soup
 * 2 tablespoons ranch dressing
 * ½ cup milk
 * ¾ cup shredded cheddar cheese
 * 1 package frozen biscuit dough

Procedure

 * 1) Sauté the onion until tender.
 * 2) Combine in a small bowl the all the other ingredients except the cheese and biscuits.
 * 3) Stir this mixture, then place it into a baking dish, and bake for 15 minutes at 350°F until it is quite warm throughout.
 * 4) Remove the baked mixture from the oven and sprinkle the shredded cheese on it.
 * 5) Add a layer of frozen biscuits on top of this. Bake for about 20–30 minutes longer.
 * 6) Serve.

title: Cookbook:Turkey Biscuit


text:
User:ChrisAnderson

Chris Anderson created the Wiki Science wikibook so that together we might discuss some of the forces at work in the development of wikis, and in particular seeing what makes a healthy wiki.

My major (wiki) interest at the moment is the Embodiment Wiki, so I hope that you will go there and check it out.

You can also see my website: Ironfire - although this is only the work of one human being (how old fashioned), so it is obviously not as interesting.

Major Interests:
 * [Wiki]
 * [Artificial Intelligence] including [Go AI] aka [Computer Go]
 * [Go]

Projects:
 * Embodiment Wiki
 * Vegan Wiki

Hi Chris!

I work on Wiki a lot, and am interested in talking with you.

I share the vision of wiki for practically *everything,* with highly organized systems connecting them.

I'm working aggressively towards manifesting this vision. You seem similarly motivated, and I'd like to connect with you.

You can see my friends and I working on:

 * http://communitywiki.org/
 * http://wiki.taoriver.net/

You might be particularly interested in plog. http://plogdev.wiki.taoriver.net/ (...though there are many other projects we do, as well.)

-- LionKimbro http://speakeasy.org/~lion/

I am also a big fan of Wikis. I'm trying to get a couple started at work, which is requiring me to learn about how they are hosted. It seems a shame not to share what I learn, but I'm actually having trouble figuring out where at wikibooks or wikipedia it would best reside. Do you have any ideas?

Thanks, Rs2 17:39, 22 Mar 2004 (UTC)

 * Clearly, the answer is... on the Wiki Science wiki!

title: User:ChrisAnderson


text:
User talk:68.185.237.208

Thanks for all the help on the biology book ! I am working one full-time job and three part-time ones right now and have not had much time to devote to the book. Looks great what you've done ! --Karl Wick

title: User talk:68.185.237.208


text:
Cookbook:Sandwiches

Sandwiches are a food item consisting of bread filled or topped with other components. According to legend, they are attributed to John Montagu, the Earl of Sandwich, and they are designed to be eaten with the hands. There are various slang terms for a sandwich, such as butty and sarnie. Note that sandwiches are distinct from wraps, which consist of a thin flatbread rolled around the filling.

Bread
A wide variety of breads can be used to make a sandwich, including soft pullman loaves, crusty breads, pumpernickel, rye bread, flatbreads, rolls, and more. The choice of bread will depend on the filling and the presentation. In general, the bread has to be thick enough to support the entire sandwich and its filling, but not so thick that it makes the sandwich overly-dry and hard to eat. Delicate sandwiches tend to require finer, thinner bread that holds together well. Robust sandwiches can handle thicker, crusty bread. The bread may or may not be toasted, depending on the sandwich and the cook's preferences. If toasting the bread, it should be done as close to serving as possible.

Filling
Sandwiches may be filled with almost anything, but some options are more common. Some of these include bacon, turkey, alfalfa sprouts, spinach, shawarma, pastrami, corned beef, pickles, tongue, fried clams, fried fish, ham, olives, cheese, tuna, deli meats, lettuce, tomatoes, and onions.

In addition to the primary filling(s), sandwiches often have some variety of spread that contributes flavor, moisture, and cohesion. These include butter, mayonnaise, mustard, relish, and more. Some sandwiches consist entirely of spreads, such as peanut butter, honey, or jam.

Serving
Sandwiches can take a variety of shapes and be served in different ways. Closed sandwiches, which are the most common variety, have bread on the top and bottom—the filling is "sandwiched" between the two pieces. Open-faced sandwiches are less common and have only one slice of bread on the bottom, with the filling sitting on top. Some varieties of sandwich have the crust trimmed off to make them more delicate, and larger sandwiches are usually halved or quartered for ease of of consumption. Finger sandwiches take this even further—they are cut into small pieces, meant to be eaten in one or two bites as snacks or appetizers. At a sandwich buffet, cocktail sticks are often stuck through the sandwiches, making them easier to lift by partygoers.

Common varieties

 * Reuben: Hearty, hot sandwich containing corned beef, cheese, and sauerkraut on pumpernickel bread
 * Club sandwich: Contains chicken, mayonnaise, lettuce, tomato, and bacon
 * Sub/hoagie/grinder/Hero: Long, thin sandwich containing a range of savory fillings
 * Tea sandwich: Small sandwich made with fine, delicate bread; fillings commonly include salmon, cucumber, and other light ingredients
 * Croque monsieur: Hot, grilled sandwich containing ham, cheese, and mustard
 * Croque madame: Similar to a croque monsieur, but with an egg added
 * Panini: Hot, grilled sandwich of Italian origin, made in a panini press
 * Banh mi: Vietnamese sandwich consisting of French bread and various savory fillings
 * Peanut butter and jelly (PB&J): Simple sandwich filled with peanut butter and jelly or jam

As a verb
The term sandwich has recently evolved to become a verb—'sandwiching' something means to insert/place that thing between two outer things. See, for example, sandwich cookies.

Sandwich recipes
샌드위치

title: Cookbook:Sandwiches


text:
Chinese (Mandarin)/Contributors

=Contributors=

The Chinese Wikibook was started 2003 December 13. Below is a list of users who have contributed greatly to the authoring of this Wikibook. Please add your username if you have made substantial additions and/or revisions to this textbook. Use  *  to add a name.

M4RC0, Yug and Wikic all made substantial contributions to the Chinese stroke order project on Wikicommons, which are used in our lessons. Peter Isotalo, also of Wikicommons, contributed the first audio samples used in this Wikibook.

In addition, the authors would like to thank the development team in relation with the Wikimedia Foundation and its affiliates, without whom our text could not be so accessible.

title: Chinese (Mandarin)/Contributors


text:
XML - Managing Data Exchange/Preface

Book
The goal of this book is to provide a comprehensive coverage of eXtensible Markup Language (XML) in a textbook format. This book is written and edited by students for students. Each student who uses the book should improve its quality by correcting errors, adding exercises, adding examples, starting new chapters and so forth.

Chapters 2 through 6 take the perspective that an XML schema is a representation of a data model, and thus these chapters deal with mapping the complete range of relationships that occur between entities. As you learn how to convert each type of relationship into a schema, other aspects of XML are introduced. For example, stylesheets are initially introduced in Chapter 2 and progressively more stylesheet features are added in Chapters 3 through 6.

Consolidation chapters (e.g., Chapter 7 "Data schemas") bring together the material covered across previous chapters; in this case, Chapters 2 through 6. This means students see key skills twice: once in the context of gradually developing their broad understanding of XML and then again in the specific context of one dimension of XML.

Application chapters cover particular uses of XML (e.g., SVG for scalable vector graphics) to give the reader examples of the use of XML to solve particular types of problems. This part of the book is expected to grow as the use of XML extends.

Project
Professors typically throw away their students’ projects at the end of the term. This is a massive waste of intellectual resources that can be harnessed for the betterment of many by creating an appropriate infrastructure. In our case, we use wiki technology as the infrastructure to create a free open content textbook.

University students are an immense untapped global resource. They can be engaged in creating open textbooks if the right infrastructure is in place to sustain renewable student projects. This book is an example of how waste can be avoided.

History

 * Graduate students at the University of Georgia started writing this book in January 2004. They were students in an Advanced Data Management class, and most were studying for a Masters in Internet Technology.
 * Students at two German Universities, the University of Passau and the Martin-Luther University Halle-Wittenberg, added material to the first few chapters in May, 2004.
 * A Chinese translation was started in mid 2004 by Dr. Xu Zhengchuan of Fudan University in Shanghai.
 * An Italian translation was started in late 2004 by Jubjub68.
 * Students in Data Management classes at the University of Georgia use the book each semester and continue to improve it.
 * In the first semester of 2006, the Advanced Data Management class at the University of Georgia undertook a complete review of the book to improve quality and consistency.
 * 2006-Aug-31: "Global Text Project aims to create free, Wiki-based textbooks for developing nations": press release links directly to http://en.wikibooks.org/wiki/XML.
 * http://globaltext.org/ links directly to http://en.wikibooks.org/wiki/XML.

Software
To complete the exercises in the book and view the slides, you will need access to the following software (or a suitable alternative):
 * Java for NetBeans
 * NetBeans for XML editing, validation, and transformation
 * MySQL
 * OpenOffice
 * Firefox

title: XML - Managing Data Exchange/Preface


text:
Talk:Physics Study Guide/Electricity

The electrostatic constant, k, has an approximate value of $$ 9 x 10^9 N m^2 / C^2 $$. This number can also be expressed, in FORTRAN style, as 9E9 $$ N m^2 / C^2 $$. I am curious why it is written here as simply 99 $$ N m^2 / C^2 $$. Dah'r tchas 23:14, 27 Jan 2004 (UTC)
 * oops a typo i think, in a rat i should be able to fix that --Karl Wick

title: Talk:Physics Study Guide/Electricity


text:
Io Programming

Beginner's Guide to Io

 * 1) About Io and the book
 * 2) Getting Started
 * 3) Your First Program
 * 4) Basic Components of Io Programs
 * 5) Objects

Compression

 * LZO
 * Zlib

Encryption

 * Blowfish

Networking

 * Beanstalk
 * Socket

Server

 * Curses
 * Editline

Io Language Pages

 * /Io To-Do/ -- Stuff that needs to be done.
 * /Io Example Code/ -- Paste your example code here.
 * /Binding Io to C++/ -- Learn how to bind Io using C++.
 * /Io and CGI/ -- Accessing Io through CGI
 * /Io Style Guide/ -- How to write good Io code.
 * /Writing Addons/ -- How to write new Addons.
 * /Pitfalls/ -- Some subtle Io pitfalls.

About This Wiki
This work is disjointly licensed under the GNU FDL, the CC BY SA, and Io's license.

The authors of this tutorial are:
 * Daniel Ehrenberg (LittleDan)
 * Samuel A. Falvo II
 * Olle Jonsson (just a note on String concatenation)

And many others who wish to remain anonymous.

Hello world
When learning to program, the first thing usually learned is how to write a program that prints "Hello, world!" to the console. It gives programmers a feel of how simple programs are structured. Io has many ways to write things to the console, so at times it can be confusing about which one to use. The one that's most often used is the write function. Enter the Io's interactive interpreter (by typing  at the console) and type the following:

write("Hello, world!\n")

With the interactive interpreter, this should look like:

user@computer:~$ io Io> write("Hello, world!\n") Hello, world! ==> nil

Another way would be:

"Hello, world!\n" print

Some of this makes sense. It looks like  is telling Io to write something to the console, specifically the stuff after it. The stuff after it is in quotes so it's some text, and it's what's going to be printed. But why are those parentheses there, what's with that  at the end of it, and why was there an arrow with the quoted text after it?

The parentheses are telling  to use the thing within the parentheses, which is called an argument. is called a function (remember functions in math?). There might be multiple arguments within the parentheses separated by commas in a single function. The first and only argument for, namely  , is a string (because it's a string of letters).

The  at the end of the string is an escape sequence. You can tell that because it begins with a backslash. This particular escape sequence signals a newline, the equivalent of pressing enter. If you just pressed enter in the middle of the string (or at least this type of string -- we'll get to that later), it would confuse Io.

The thing where there's an arrow and then the string that was the argument of the  function is the value that   returned. Every function returns a value. With some functions, it makes sense to return something (such as a function to add two numbers), but with other functions, it just returns something simple done with the arguments. In this case,  returns the special value , indicating it has nothing to return.

Concatenate Strings
Use the double dot operator to concatenate strings. Or, you can use string interpolation, as shown below.

Let's say  is a   instance, and it has both a first name and a last name:

Io> olle ==> Object_0080B818 do(  appendProto(Object_00806B58)   lastname := "Jonsson"   title := "Developer"   firstname := "Olle" )

We want a method to show first and last name with a space in-between:

Io> olle fullname := method(firstname .. " " .. lastname) ==> method(firstname ..(" ") ..(lastname))

or, using string interpolation:

Io> olle fullname := method("#{firstname} #{lastname}" interpolate) ==> method("#{firstname} #{lastname}" interpolate)

Now, calling  will yield. Looking at the returned method object, we can see how the Io interpreter creates regular message calls (the parentheses) for the method.

So, this is the new  instance:

Io> olle ==> Object_0080B818 do(  appendProto(Object_00806B58)   fullname := Block_007B5030   lastname := "Jonsson"   title := "Developer"   firstname := "Olle" )

(Note: only this instance has the  method. You could add the   method to   instead, which would make it available to   via  's prototype,  . Also, the firstname and lastname and title could also be moved up to the Person. But this is the way pieces of example code are.)

Simple arithmetic
In Io, you can use arithmetic expressions and they will work correctly. Arithmetic in Io is just like functions, except it uses objects to help. Objects make it so that instead of typing something like +(1, 2), you can type 1+2. More about objects later. + is still a function, though, so it returns a value. This is very useful; it makes it so you can use Io as a simple calculator. Notes about what it's doing are put after two slashes (like this: //).

Io> 1+2 //addition ==> 3 Io> 4-5 //subtraction ==> -1 Io> 7*3 //multiplication ==> 21 Io> 3/6 //division ==> 0.50000 Io> 2**3 //exponents ==> 8 Io> 7%2 //remainder of 7/2 (technically, 7 mod 2) ==> 1

This follows normal order of operations (called precedence) and parentheses can be used. As you'd expect, you can use  on numbers, but the newline isn't included. You have to use multiple arguments with  to print multiple things and then it returns all of those things put together. So to print, you would write:

write((1/3)**2, "\n")

As you would expect, this prints 0.11111. It returns the string "0.11111\n" because with the  function, multiple arguments are converted to strings and joined together. Then that value is printed and returned.

Variables
A variable is basically a word that stands for a value. They are somewhat like variables in mathematics, except in mathematics, variables could only be numbers and they were one letter long. In programming, functions, objects, strings, and numbers are all types of variables, but we haven't defined any yet. Many variables, such as write, 3, and "Hello, world!" can already be used, but only some of them can be changed. You can make your own variables using = and :=. Below are some examples of making and using variables:

x := 3 line := "\n" write(x, line)

Can you tell what's happening? The variable x is being set to 3 and the variable line is being set to "\n", which is equivalent to a newline. Then, the contents x and line are being written to the console. Since x is 3 and line is a newline, this prints 3 and then goes to the next line on the console. The function returns "3\n".

In Io, there is a difference between creating and changing the value of variables. If a variable doesn't exist yet, you have to use :=, but if you've already given it an initial value using :=, you can use = for subsequent definitions. Here's an example:

x := 1 incrementor := 2 write("x is ", x, "\n") x = x + incrementor write("but when we added ", incrementor, " to it, it became ", x, "\n")

It may be confusing that sometimes we use := and other times we use =, but you'll get used to it. If you want to, you can always use :=, but when we get into objects later, it will become very inconvenient to keep using :=, so you should probably start using = whenever appropriate.

Programs
Until now, you've been simply been going to Io's interactive interpreter. This prevents you from making larger applications or writing things for others. If you want to write code to be reused, simply put it in a text file and run it with, where <filename> is the name of the file you use. Here's an example of using a file on Linux to store a program:

user@computer:~$ cat > incrementor.io x := 1 incrementor := 2 writeln("x is ", x) x = x + incrementor writeln("but when we added ", incrementor, " to it, it became ", x) user@computer:~$ io incrementor.io x is 1 but when we added 2 to it, it became 3 user@computer:~$

That was the last example we just did. If you noticed, I used a .io file extension. This is in no way mandated, it is merely a convention. Something happened differently this time then when we did it from a file, if you noticed. Unlike before, we didn't see what each function returned. Instead, we only saw what was explicitly output by.

If you're on Linux or a similar system (such as Unix, Mac OS X, or Cygwin), you can make it so that your file can be run simply by typing  (where yourProgram.io is the name of your program), without needing to precede it with. This can be accomplished by putting a line of code at the beginning of your program and then giving it executable permissions. On Linux, that code is:

 * 1) ! /usr/bin/env io

It may differ for other systems. To give it executable permissions, simply type the following:

chmod +x yourProgram.io

Again, this may be different on different systems. Once you do this, nothing will change about the actual execution of the code, but you can, for example, just double click on a source code file in a GUI and it will run.

Writing functions
As I said before, functions are just another type of variable, so you can create them using := and change them using =. Functions themselves are created with a function called. Here's an example of a function:

add := method(a, b, //function to add 2 numbers  a + b ) writeln(add(1, 2)) //writes 3 x := 1 writeln(add(3, x)) //writes 4 x = add(4, 5) //9 writeln(x) //writes 9 x = add(x, 1) //in effect increment x by 1 writeln(x) //writes 10

The function add takes two arguments, a and b, and then returns a + b. It would do exactly the same thing if, instead of a and b, we used the variable names 'this' and 'that', everywhere that a and b were used. In that case, the function would be written as:

add := method(this, that,  this + that )

What a function really does is take a list of arguments; then it assigns the arguments to local variables, which are specified when you make the function. Local variables stay in the function you're working in and you can't get to them outside of the function. In the most recent case, those local variables are 'this' and 'that', so the variable 'this' will take the first argument, and the variable 'that' will take the second argument. Then it executes the rest of the function and returns the result. The function can have multiple lines of code and the last line will be the value returned. Here's an example:

examineArgs := method(this, that,  writeln("This is ", this, ".")   writeln("That is ", that, ".") )

// usage: examineArgs(3, 5) /* writes: This is 3. That is 5. */

x := examineArgs("hi", "bye") /* writes: This is hi. That is bye. */

write(x) /* writes: That is bye. */

Why was x set to "That is bye.\n"? Because that's what examineArgs returned. It returned the value of the last line, the value of write("That is ", that, ".\n"). That was set to "bye", so it printed the string "That is bye.\n" and returned the same string.

If you want to return something before the function ends, you can use the return function. Unlike most functions, you don't need to put parentheses around the argument to call the return function. Here is an example of its usage:

returning := method(this, that,  writeln(this)   return this   writeln(that) ) x := returning(1, 2) //writes "1\n" write(x) //writes 1 with no newline

As you can see, the code after return isn't used at all. Right now, this doesn't seem very useful, but later, when we get into flow control, it will be used very often.

Conditionals
Conditionals in Io are made using the if function:

if(a == 1) then(  writeln("a is one") ) else(   writeln("a is not one") )

However, the preferred way to write this (without the need for then and else messages, so it is faster):

if(a == 1, writeln("a is one"), writeln("a is not one"))

title: Io Programming


text:
User:Karl Wick/Spiritual worksheet

Who are your closest friends / relationships?

Who would you like to grow closer to?

What can you do to make that happen?

List strengths and self-identified spiritual gifts.

Plans for spiritual growth:

Describe your Bible study of late:

Describe your prayer life:

Areas for emotional growth:

Recreational / renewing activities:

Areas of service to others:

If lacking in service, how can you improve? Whom can you serve and how?

In what areas do you think you have loved or followed an image over a reality?

What are you most grateful for today?

What else to you have to be grateful for?

Steps to improve financial situation and be more responsible?

How can you be more loving?

In what areas have you been faithless? Why? What can you do about it?

Tools for personal change:

Have you truthfully confessed your sins before God and man?

Have you asked someone to pray specifically for/with you to overcome the repetitious sins in your life?

List of action steps to take:

How is God helping me to grow more faithful through this situation?

title: User:Karl Wick/Spiritual worksheet


text:
Cryptography/Breaking Caesar cipher

Breaking the Caesar cipher is trivial as it is vulnerable to most forms of attack. The system is so easily broken that it is often faster to perform a brute force attack to discover if this cipher is in use or not. An easy way for humans to decipher it is to examine the letter frequencies of the cipher text and see where they match those found in the underlying language.

Frequency analysis
By graphing the frequencies of letters in the ciphertext and those in the original language of the plaintext, a human can spot the value of the key by looking at the displacement of particular features of the graph. For example in the English language the frequencies of the letters Q,R,S,T have a particularly distinctive pattern.

Computers can also do this trivially by means of an auto-correlation function.

Brute force
As the system only has 25 non-trivial keys it is easy even for a human to cycle through all the possible keys until they find one which allows the ciphertext to be converted into plaintext.

Known plaintext attack
If you have a message in both ciphertext and in plaintext it is trivial to find the key by calculating the difference between them.

title: Cryptography/Breaking Caesar cipher


text:
Talk:Chinese (Mandarin)/Lesson 2

“今天她们没有一节课” really sounds unnatural
I would say "今天她们一节课都没有” Does the character “都” in “今天,他們一節課"都"沒有. ” mean "any"? I don't think so .I think "even" would better.There can be a feeling of envy.Like "They don't 'even' have one class today".--Shinylight talk

"今天她们没有一节课" is just wrong. When negating posession, you don't give a quantity: 他們沒有課. (To get the idea of how wrong it feels, think of someone who has no money trying to express it in English by saying "I don't have three dollars and fifty four cents" - it is true, but it is so specific that it misses the general meaning that he wants. He should say "I have no money".) If you want the emphasis of "does not have even one class" you could use 都 (dou1) or 也 (ye3), but the word order is a little different from English: 他們一節課都沒有 or 他們一節課也沒有. Literally, 都 (dou1) by itself means "all" and 也 (ye3) means "also", but this is just one of those patterns that does not map neatly onto English word-by-word. I'm sure you could work 連 (lian2) "any" in there, but it would be icing on the cake; you already have that meaning by using either of those constructions with 都 or 也. --Yakowenko (talk) 06:43, 17 March 2009 (UTC)

Also, it looks like some discussion is creeping into the lesson itself ("Actually,We seldom say..."). That's got to go. :-) --Yakowenko (talk) 07:11, 17 March 2009 (UTC)

I have cleaned up the area by creating separate examples for "今天他们没有课" and "今天他们一门课都没有", with some explanation of the latter. Since I am a new editor, it would be awesome if someone could check it for formatting and quality. :) --Electricwhisper (discuss • contribs) 02:56, 6 August 2011 (UTC)

Something about the "Guo4"(過)?
--Yacht (talk)Q 02:53, 29 Jan 2004 (UTC)

Might be useful to have word-by-word translation of examples?

I'm going to change 你早 to 早安 as I, the native speaker I asked, and the Apple Simplified Chinese Input Method have never heard of the former, but have commonly heard the latter.

Someone had put in Roman spaces between Chinese punctuation marks and the first character of the next sentence. This is superfluous since the Chinese punctuation already has space built in. It also makes things look bad, as it keeps the characters from aligning vertically. So I removed the spaces.

 * I found this text a little bit "English", seems like a word-to-word translation from English to Chinese. We seldom hear "你好吗", "我很好，谢谢. 你呢？", "我也很好. " in Chinese. And the sentence "一节？！太少了！" a little bit unnature for me. they are all grammatically correct, just not sound native for me. --Yacht 18:19, 2 Jan 2005 (UTC)

 * As for "你好吗" and so on, that seems to be the starting place for most Chinese texts, even if it's not actually used every day. After all, you have to start somewhere really simple and can't just immediately jump in to exactly how a native speaker would say something.  For "一节？！太少了！", how would you say it?

 * Maybe 只一节？ (zhi3 yi1 jie2?)  But then, this lesson doesn't exactly need more vocabulary, does it? --Yakowenko (talk) 07:07, 17 March 2009 (UTC)

 * So what's the deal with having different word choices in the simplified and traditional versions of the first sentence? ("早上好" vs. "早安")   Even if the most common usage differs between the mainland and Taiwan, the beginning lessons should present something that is acceptable in either locale.  If we want to show both greetings, maybe 東尼 could say "早上好" and 艾美 could reply with "早安"? --Yakowenko (talk) 07:07, 17 March 2009 (UTC)

 * Most (if not all) of the pronunciation for the vocabulary in this lesson is now uploaded at Commons. Since I'm not going to work on the actual content of this book, I thought it be best if someone else implemented the audio links here.
 * Enjoy.
 * Peter Isotalo 07:23, 29 April 2006 (UTC)

 * Thank you, Peter. I'll link to them now.
 * Everlong 21:35, 29 April 2006 (UTC)

I think putting 今天 at the beginning of the sentence sounds weird when spoken. I think it should be 你今天忙不忙. -deranged_physicist

By Lie-Hap-Po
Good morning : 你早/早安 Both exist in Chinese so you can use both.

uhh no... the first is not used in standard Mandarin.

It is worth pointing out that the word ‘早’ literally means 'early' in chinese, and it can only 'literally' mean morning if it is ‘早上’. The first one - referring to 你早/早安 - could be used in dialects like Cantonese (but I'm not so sure about that), but I've never heard a person saying '你早' 'in Mandarin. - chinzh

 * yeah 你早 is kinda informal, thou im sure you do get to hear this in somewhere of china, it would be a bit misleading for beginners.

and unlike in English where different kind of saying may mean completely another word, even you dont give learners this word, when later as their knowlege about chinese lang grows they'll easily understand what 你早 means whenever they meet/hear it. KonW (talk) 15:01, 30 April 2009 (UTC)

By Lie-Hap-Po
Chinese uses different words and different topics when they are talking to foreigners than when they are talking to other Chinese. Example How are you? CtC : 你吃了吗？CtF ：你好吗？ Example2 Your Chinese is very good. CtC:你普通话说得很好. CtF:你中文说得很好.

Suggest reducing vocabulary and adding a writing lesson
I think that, compared to most mainstream textbooks, this introduces vocabulary slightly too quickly for people who are new to characters. Someone who is new to characters would struggle with memorizing this many words at once. For example, the DeFrancis book has ten characters per lesson at the beginning.86.137.109.142 11:06, 23 February 2007 (UTC)

Need simplified characters in vocab list
The characters in the vocab list are all traditional. Only the ones in parentheses should be traditional. I'll see if I can cut and paste; if not, someone else can do it since I don't have a chinese character typing tool on my computer. Emmaskis (talk) 17:59, 5 March 2009 (UTC)

Never mind, I just changed them a couple of minutes ago. Emmaskis (talk) 18:04, 5 March 2009 (UTC)

Zaoshang
Using this to learn mandarin for the first time, notice zaoshang isn't the vocabulary, just zao. It doesn't really change the meaning, but it was confusing for me as I thought there was an extra word that i didn't understand.

Jie2
There is no definition for Jie2 in either this lesson or in lesson one
 * both "mén" and "Jie2" are measure word for school courses. --KaurJmeb (talk) 15:48, 13 April 2010 (UTC)

 * 门 refers to one course as a whole, whereas 节 refers to a single class period. It sounds a bit unnatural to me to say "今天我有四门课," where I would be more likely to say "这个学期我有四门课." I would rather say "今天我有四节课." I think 节 should be incorporated into the examples to reflect this. --Electricwhisper (discuss • contribs) 03:02, 6 August 2011 (UTC)

Disapearing Pīnyīn
Pīnyīn disappears half-way through the dialogues and also half way through the grammar. This is not consistent, and also makes that part of the lesson useless for anyone who cannot read Chinese characters.

Missing vocabularies for 2nd dialogue
The second dialogue contains words that are not introduced in the vocabulary section

title: Talk:Chinese (Mandarin)/Lesson 2


text:
Cookbook:Pickert (German Potato Dumpling)

| Side dishes | German Cuisine

This is the traditional Lippischer Pickert, a type of German potato dish somewhere between a dumpling and a pancake. After a few Pickerts you will desire another special pleasure from Lippe: a glass of Wacholder schnapps.

Ingredients

 * 1 kg (5 cups) flour
 * 1 litre (4 cups) milk
 * 10 eggs
 * 6 big potatoes, grated
 * 1 cube yeast (about 16 g or 0.6 oz dried yeast)
 * 500 g (2 cups) raisins
 * 1 tablespoon sugar
 * 1 tablespoon salt
 * Oil for frying

Procedure

 * 1) Put the yeast in a very big bowl or pot. Mix in the warm milk and grated potatoes by hand.
 * 2) Mix in the flour and eggs, then the salt and sugar. Stir until it is a homogeneous dough. It should be neither runny nor solid, but have a consistency like soft cookie dough; add milk or flour to adjust.
 * 3) Let the dough rest for 30 minutes.
 * 4) Heat lots of oil in a frying pan over low heat.
 * 5) Scoop palm-sized amounts of dough into the hot oil, and fry over low heat.
 * 6) Serve it with liver sausage (Leberwurst), syrup, plum jam or a small chunk of butter.

Notes, tips, and variations

 * To make a pfannenpickert, add half a handful of raisins to the dough and fry a larger amount of dough (approx. 15 centimeters across). A single pfannenpickert is often enough for one person.


text:
Computer Programming/Highlevel

Computer languages come in many flavors. Generally there are high-level and low-level languages. The term "language level" is an attempt to convey information about how close the programming language is to the machine language of the particular hardware. Low-level languages are closer to the machine language, and high-level languages are further away from machine language, and close to natural languages (e.g., English).

An extreme example of a low-level language is the machine language which consists of ones and zeros. It is extremely rare (difficult, and error prone), however, for people to write programs in machine language. The closest programming language to machine language is assembly language, which normally has one instruction, or statement, for each machine language instruction. An example of the kind of instruction that exists in assembly language is to copy the contents of a particular memory address into a machine register.

One example of a high-level computer language might be Visual Basic/VB6, where the language is programmed by the user with specific words which can be found in the English dictionary.

Any language (computer or natural) still must have certain structures, though. English sentences are made of English words which are combined to respect the grammar (i.e., the structure) of English. We understand a sentence if the grammar is (more or less) correct. However, just because a high-level language uses some words which seem to be natural English does not mean that the computer can directly understand English sentences as we would speak them to a person. A program must be written to respect the structure (grammar) of the computer language used, if the computer is to understand. Typically the grammar of a computer language is more rigid than the grammar of a natural language.

title: Computer Programming/Highlevel


text:
Cookbook:No-Bake Chocolate Chip Cookie Pie

| Dessert

This recipe for no-bake chocolate chip cookie pie is quite easy, as it doesn't require cooking.

Ingredients

 * 1 package (15–18 oz/450 g) chocolate chip cookies (recipe uses 26 cookies)
 * 1 cup (240 ml) milk
 * 1 ea. (9 oz/270 g) commercial graham cracker pie crust ("extra serving" or "deep dish" size)
 * 1 container (8 oz/240 g) container frozen whipped topping, thawed

Procedure

 * 1) Dip 8 cookies in milk, then place in a single layer in graham cracker crust. Top with one-third of the whipped topping.
 * 2) Repeat the above step so that you have a total of 3 layers of cookies and whipped topping.
 * 3) Crumble 2 chocolate chip cookies, and sprinkle over pie.
 * 4) Cover and chill for 8 hours before serving.


text:
Cookbook talk:No-Bake Chocolate Chip Cookie Pie

This recipe was featured on the cookbook page from April 7, 2004 - April 18, 2004. Gentgeen

Please define terms. What are "graham crackers"? PML.

Can we get a picture of this? Sugarpine 02:55, 15 December 2006 (UTC)


text:
Cookbook:Breakfast

Breakfast is the first meal of the day, eaten in the morning to break the fasting period of sleep. Breakfast traditions vary greatly around the world, from the minimal Café au lait of France to the hearty spreads of the substantial English Breakfast. A breakfast should provide enough energy to realize the daily activity until noon or lunch but it should also be light enough as to be easy to digest.

For a complete, automatically generated, list of recipes which have been categorized, on their individual pages, as being breakfast recipes, see Breakfast recipes.

Also, below, is a list of a few selected breakfast recipes contributors have manually added to this page:

Breads

 * Cardamom Bread
 * Chipped beef on Toast
 * Dosa – eat with sambar and coconut chutney, or with eggs
 * French Toast
 * Orange French Toast
 * Idli – eat with sambar and coconut chutney
 * Pumpkin Bread
 * Toast

Muffins

 * Apple Streusel Muffins
 * Banana Chip Muffins
 * Banana Nut Muffins
 * Blueberry Muffins
 * Bran Muffins
 * Chunky Cran Apple Bran Muffins
 * Corn Muffins
 * Oatmeal Muffins
 * Orange Chocolate Chip Muffins
 * Raisin Oatmeal Muffins

Pancakes

 * Æbleskiver
 * Bliny (Russian blini/bliny/blin)
 * Chocolate Chip Pancakes
 * Cottage Cheese Pancakes (much lighter than regular pancakes)
 * Crêpe
 * Pancakes (basic pancakes)
 * Vegan
 * Whole Wheat Vegan
 * Blueberry Pancakes
 * Whole Wheat Pancakes

Waffles

 * Breakfast Waffles
 * Breakfast Waffles (Gluten-Free)
 * Waffles II
 * Whole Wheat Waffles

Eggs

 * Cazuela Gallega
 * Cottage Cheese Eggs
 * Breakfast Burrito
 * Fried Eggs
 * Hard Boiled Eggs
 * Latino Scramble
 * Not Quite Eggs Benedict
 * Poached Eggs
 * Scrambled Eggs
 * Soft Boiled Eggs
 * Southwestern Scramble

Omelets

 * Basic Omelet
 * Bacon Cheese Omelet
 * Potato Omelet
 * French Omelette
 * Denver Omelet
 * Spanish Omelet
 * Greek Omelet
 * Frittata Omelet

Hot Cereal

 * Hominy Grits
 * Porridge (oatmeal)
 * Øllebrød

Miscellaneous breakfast recipes

 * Grand Union Bacon
 * Vegetarian "Bacon" Gravy over Biscuits
 * Hash Browns
 * Slinger
 * English Breakfast
 * Chupaqueso
 * Wakeup Sausage Casserole AKA "Sausage Tossage"

ספר מתכונים/ארוחת בוקר

title: Cookbook:Breakfast


text:
Cookbook:Not Quite Eggs Benedict

| Breakfast

This recipe serves 1 for a full meal or 2 for a light breakfast.

Ingredients

 * 2 eggs
 * 2 Tbsp milk
 * 1 Tbsp chopped parsley
 * Salt
 * Black pepper
 * 4 slices bacon
 * ¼ cup butter, melted
 * 1 Tbsp cold water
 * 2–3 tsp lemon juice
 * Cayenne pepper
 * Crusty bread
 * 1 Tbsp maple syrup (optional)

Eggs

 * 1) Separate eggs. Mix whites with milk and parsley, then add salt and pepper. Beat with a fork until slightly bubbly. Set aside.
 * 2) Cook bacon on medium-high heat in a large, nonstick skillet and set on paper towels or napkins to drain. Pour off all but 1-2 tablespoons fat. Turn heat down to medium-low and add egg whites.

Hollandaise sauce

 * 1) As the egg whites cook, mix egg yolks with water in double boiler on medium to medium-high heat. The water in the double boiler should simmer, not boil. Stir constantly with a fork until yolks increase in size and thickness and turn a pale, opaque yellow.
 * 2) Remove from heat and slowly stir in melted butter. Then add lemon juice and salt and cayenne pepper to taste.
 * 3) Place cooked egg whites on a plate, top with bacon, then cover with Hollandaise sauce. Serve with warm crusty bread for dipping in the sauce.

Notes, tips, and variations

 * The amount of butter in this recipe is less than in standard recipes for Hollandaise sauce. This is the smallest amount that still produces an acceptable sauce. If fat is not a concern, however, increase the amount to ⅓–½ cup.
 * Egg whites usually cook in the same amount of time as the sauce, but keep an eye on them and remove them to a separate plate if they finish cooking before the sauce is done.

title: Cookbook:Not Quite Eggs Benedict


text:
Cookbook:Sunglow Motel-Cafe Pickle Pie

| Desserts

The Sunglow Motel-Cafe in Bicknell, Utah serves the unique pickle pie, developed by Cula Ekker. This is their recipe, as it appeared in a Salt Lake Tribune article that is framed and hangs on the cafe's wall.

Ingredients

 * 5 eggs
 * 2 cups white granulated sugar
 * 1 tsp cinnamon
 * 1 tsp nutmeg
 * 1 tsp lemon extract
 * 2 tbsp cornstarch
 * 1 cup + 2 tbsp light cream
 * ⅛ cup margarine, melted
 * 12 oz sweet pickles, drained and ground
 * 2 unbaked 9-inch pie shells

Procedure

 * 1) Beat eggs and sugar until lemon-colored and thick; beat in cinnamon, nutmeg, lemon extract, cornstarch, cream and margarine.
 * 2) Stir ground sweet pickles into mixture.
 * 3) Pour pickle mixture into unbaked pie shells.
 * 4) Bake at 350°F for 1–1.25 hours, until a knife inserted in center comes out clean.

title: Cookbook:Sunglow Motel-Cafe Pickle Pie


text:
Cookbook talk:American Potato Salad I

Page history from Potato salad.

Legend: (cur) = difference with current version, (last) = difference with preceding version, M = minor edit

 * (cur) (last) . . 02:40, 29 Jan 2004 . . Gentgeen (transwikied recipe to wikibooks)
 * (cur) (last) . . 19:53, 5 Aug 2003 . . SpeakerFTD
 * (cur) (last) . . 22:41, 21 Mar 2003 . . Karen Johnson
 * (cur) (last) . . 22:30, 21 Mar 2003 . . 203.166.96.234

title: Cookbook talk:American Potato Salad I


text:
Cookbook:Traditional Pound Cake

| Dessert | Cake

A traditional pound cake recipe would specify one pound each of flour, butter, eggs, and sugar. These quantities are too great for most modern families, but an excellent cake can be made with half quantities. It is usual to weigh the eggs first and then use the same weights of the other ingredients; with a traditional pair of kitchen scales, the eggs are simply used instead of weights.

Ingredients

 * ½ pound self-raising flour (or rice flour for gluten-free)
 * ½ pound butter
 * ½ pound (4 ea.) eggs
 * ½ pound caster sugar
 * 1 tsp vanilla extract (optional)
 * ½ pound assorted dried fruit (currants, sultanas, and raisins, with perhaps a lesser quantity of glacé cherries; optional)

Procedure

 * 1) Preheat the oven to 175°C (350°F or Gas Mark 4).
 * 2) Cream the butter and sugar together until fluffy.
 * 3) Beat in the eggs and add the vanilla extract.
 * 4) Gradually sift in the dry ingredients.
 * 5) Transfer to a greased and floured baking pan.
 * 6) Bake for 35 minutes or until a skewer inserted shows no moist crumbs when removed.

Notes, tips, and variations

 * ½ pound (or lb) is equal to 1 cup or 8 oz or approximately 227 grams (or g). Needless to say, in this recipe, 250 grams of each ingredient could be used.

title: Cookbook:Traditional Pound Cake


text:
Cookbook talk:Traditional Pound Cake

Page history from wikipedia
Legend: (cur) = difference with current version, (last) = difference with preceding version, M = minor edit

 * (cur) (last) . . 02:51, 29 Jan 2004 . . Gentgeen (Transwikied recipes to wikibooks)
 * (cur) (last) . . 18:12, 22 Dec 2003 . . Noldoaran
 * (cur) (last) . . M 17:08, 6 Dec 2003 . . Seglea (link to recipe)
 * (cur) (last) . . M 17:07, 6 Dec 2003 . . Seglea (linkfix)
 * (cur) (last) . . 17:06, 6 Dec 2003 . . Seglea (added authentic equal-quantities recipe)
 * (cur) (last) . . M 13:20, 6 Dec 2003 . . Jengod (wikify)
 * (cur) (last) . . 09:00, 6 Dec 2003 . . 69.37.18.204 (Sorry if the recipe is a little non-specific, but it is a old handed down recipie, so is likely public domain)

Better recipe
I have found a new and supposedly better recipe for lemon pound cake in an old issue of Cook's magazine, along with a lemon glaze and a lemon-poppyseed variation. The same magazine claims that the classic recipe (shown here) was recieved poorly by tasters, saying that "the texture was described as 'leaden' and the taste resembled 'an underbaked sugar cookie.'" Should it replace the current recipe and be cited? --Whoop whoop pull up (talk) 16:55, 30 December 2010 (UTC)

 * I'll take your silence as a "yes." --Whoop whoop pull up Bitching Betty 16:26, 17 January 2011 (UTC)

title: Cookbook talk:Traditional Pound Cake


text:
Cookbook:Purée Mongole

Ingredients

 * 1 lb dry split peas
 * Water
 * Chicken broth
 * Carrot, grated
 * Onion, chopped
 * 1 white turnip, diced
 * 3 stalks celery, chopped
 * Salt
 * Pepper
 * Ground cloves
 * Turmeric
 * Nutmeg
 * Cumin
 * Curry powder
 * Cornstarch
 * Sour cream, as a garnish

Procedure

 * 1) Add the split peas to a pot. Add the chicken broth and enough water to cover the peas.
 * 2) Bring the peas to a boil, then remove from the heat and let soak.
 * 3) Prepare equal quantities of grated carrot and chopped onion.
 * 4) Add the carrot, onion, turnip, and celery to the split peas. Mix in salt, pepper, cloves, turmeric, nutmeg, cumin, and curry powder.
 * 5) Simmer everything slowly for about an hour, or until the vegetables are well softened. Adjust seasoning to taste.
 * 6) Make a mixture of cornstarch and water with the consistency of thin cream.
 * 7) Bring the split peas to a simmer. Mix in the cornstarch slurry, and cook for a minute or two until thickened.
 * 8) Adjust the consistency with stock (or milk) as desired.
 * 9) Serve hot. If desired, garnish with a floating dab of sour cream and a light sprinkling of nutmeg.

title: Cookbook:Purée Mongole


text:
Cookbook:Roasted Brined Turkey I

| Cuisine of the United States

Ingredients

 * ½ US gallon (8 cups) water
 * 2 cups (600 g / 1.3 lb) salt
 * ½ cup (85 g / 3 oz) firmly packed light brown sugar
 * 2 tbsp peppercorns
 * 2 US gallons (7.6 L / 32 cups) of ice water (50% ice)
 * 16 - 18 lb turkey
 * 2 tbsp (½ stick) unsalted butter

Brining

 * 1) Combine the ½ gallon water, salt, brown sugar, and peppercorns. Bring to a boil and cook about 3 minutes until everything is dissolved.
 * 2) Transfer the brine to a 5-US-gallon (19 L) bucket, and stir in the ice water.
 * 3) Remove the neck and giblets from turkey, and place the turkey in the bucket of brine. If the brine won't cover turkey, add a little more water.
 * 4) Chill the turkey in the brine for 6–24 hours.

Roasting

 * 1) Preheat the oven to 500°F (260°C), and move a rack to the lowest level of the oven. You'll drop the temperature later, but start it hot to get a crispier, more flavorful skin. The effect will be to keep the fat from melting and rolling down the side of the turkey, which is only going to dry it out.
 * 2) Place the turkey drumstick side-down on a roasting tray (with slots to allow drippings through into a pan), or on a rack sitting in a pan.
 * 3) Attach the wings to the bird by imagining you were twisting someone's arm behind their back. Do this with both wings. Once you figure out the right twist, you'll find that the tips of the wings will stay firmly in place near the center of the back of the turkey (near its backbone).
 * 4) Coat the turkey skin with the butter.
 * 5) Place the turkey in the preheated oven, and roast for about 30 minutes.
 * 6) Remove turkey from oven, and put a tent of aluminum foil loosely over the breast—this is going to keep the breast meat from overcooking and drying out.
 * 7) Reduce the heat to 350°F (176.7°C), and return the turkey to the oven.
 * 8) Continue roasting the turkey for about about 2¾–3 hours for the 16–18 pound (7–8 kg) bird, periodically basting it and checking the internal temperature with an instant-read probe thermometer. The breast must reach a minimum of 161°F (71.67°C) before removing it from the oven. The thigh will ideally be around 180°F (82.2°C) at this point.
 * 9) Remove turkey from the oven, and let stand for 15–20 minutes before carving.

Notes, tips, and variations

 * This recipe is for a 16 - 18 lb turkey. Roughly 2 days are required to prepare the turkey. The first day is for preparations and for brining, and the second day is for cooking the turkey.
 * The tricky thing about cooking poultry is that the dark meat needs to be about 15° hotter than the white meat. White meat is safe to eat at 165°F (73.9°C), which is the temperature at which salmonella instantly dies, though 12 minutes at 140°F (60°C) will also kill it—odds are fairly good that you'll kill it all on the way to 165°F (73.9°C). The problem is that dark meat isn't very good at 165°F (73.9°C). Further complicating this is that if the breast meat gets to the 180°F (82.2°C) that the dark meat wants to be cooked to, it's going to be dry, flavorless, and generally unpleasant.
 * For optimum safety and uniform doneness, it is recommended to cook stuffing outside the bird.

title: Cookbook:Roasted Brined Turkey I


text:
Cookbook:Simple Nachos

| Mexican Cuisine

Ingredients

 * 1 pound (450 g) lean ground beef (92% lean or greater)
 * 1 can diced tomatoes with green chiles
 * 2 teaspoons or less taco seasoning mix (mostly cumin)
 * 2 tablespoons sour cream
 * 1 dash Mexican seasoning
 * Corn tortilla chips

Procedure

 * 1) In a skillet, brown ground beef with Mexican seasoning and Taco Mix.
 * 2) When beef is browned add the can of diced tomatoes with green chiles, cover and allow to simmer an additional 5 minutes.
 * 3) Put tortilla chips on a large plate. Place 2 tablespoons of sour cream on plate. Sprinkle beef and diced tomato mixture over top of the chips.
 * 4) Serve and enjoy.

title: Cookbook:Simple Nachos