text:
User:Jimregan/C Primer chapter 4

C Library Functions & Other Comments
This chapter discusses some useful standard C libraries:

Math library Standard utility library The "sprintf" function String function library Character class test library

-- and the following minor topics:

Command-line arguments Dynamic memory allocation Pointers to functions PC memory model and other declarations Troubleshooting hints

C Math Library
To use the math library, you need the declaration:

#include

The math functions consist of:

sin( x ):     Sine of x.   cos( x ):      Cosine of x.   tan( x ):      Tangent of x.   asin( x ):     Inverse sine of x.   acos( x ):     Inverse cosine of x.   atan( x ):     Inverse tangent of x.   sinh( x ):     Hyperbolic sine of x.   cosh( x ):     Hyperbolic cosine of x.   tanh( x ):     Hyperbolic tangent of x.   exp( x ):      Exponential function -- e^x. log( x ):     Natural log of x.   log10( x ):    Base 10 log of x.   pow( x, y ):   Power function -- x^y. sqrt( x ):    Square root of x.   ceil( x ):     Smallest integer not less than x, returned as double. floor( x ):   Greatest integer not greater than x, returned as double. fabs( x ):    Absolute value of x.

All values are "doubles", and trig values are expressed in radians.

C Standard Utility Library & Time Library

 * The utility functions library features a grab-bag of functions. It requires the declaration:

#include

Useful functions include:

atof:   Convert numeric string to double value. atoi:   Convert numeric string to int value. atol:   Convert numeric string to long value. rand:             Generates pseudorandom integer. srand:    Seed random-number generator -- "seed" is an "int". exit:   Exits program -- "status" is an "int". system: Tells system to execute program given by the seed. abs( n ):           Absolute value of "int" argument. labs( n ):          Absolute value of long-int argument.

The functions "atof", "atoi", and "atol" will return 0 if they can't convert the string given them into a value.

The time and date library includes a wide variety of functions, some of them obscure and nonstandard. To use this library you need the declaration:

#include

The most essential function is "time", which returns the number of seconds since some long-ago date. It returns a value as "time_t" (a "long") as defined in the header file.

The following function uses "time" to implement a program delay with resolution in seconds:

/* delay.c */

#include   #include

void sleep( time_t delay );

void main {    puts( "Delaying for 3 seconds." ); sleep( 3 ); puts( "Done!" ); }

void sleep( time_t delay ) {    time_t t0, t1; time( &t0 ); do    { time( &t1 ); }    while (( t1 - t0 ) < delay ); }

The "ctime" function converts the time value returned by "time" into a time-and-date string. The following little program prints the current time and date:

/* time.c */

#include   #include

void main {    time_t *t; time( t ); puts( ctime( t )); }

This program prints a string of the form:

Tue Dec 27 15:18:16 1994

The C "sprintf" Function
The "sprintf" function allows you to create strings with formatted data. Technically speaking, this is part of the standard-I/O library, and requires the declaration:

#include

However, it is really a string function and needs to be discussed along with the other string functions.

The syntax of "sprintf" is exactly the same as it is for "printf", with the notable exception that the first parameter is a pointer to a string. For example:

/* csprntf.c */

#include

void main {     char b[100]; int i = 42; float f = 1.1234f; sprintf( b, "Formatted data: %d / %f", i, f ); puts( b ); }

-- prints the string:

Formatted data: 42 / 1.1234

There is also an "sscanf" function that similarly mirrors "scanf" functionality.

C String Function Library
The string-function library requires the declaration:

#include

The most important string functions are as follows:

strlen:  Get length of a string. strcpy:  Copy one string to another. strcat:  Link together (concatenate) two strings. strcmp:  Compare two strings. strchr:  Find character in string. strstr:  Find string in string. strlwr:  Convert string to lowercase. strupr:  Convert string to uppercase.

The "strlen" function gives the length of a string, not including the null character at the end:

/* strlen.c */

#include   #include

void main {    char *t = "XXX"; printf( "Length of <%s> is %d.\n", t, strlen( t )); }

This prints:

Length of  is 3.

The "strcpy" function copies one string from another. For example:

/* strcpy.c */

#include   #include

void main {    char s1[100], s2[100]; strcpy( s1, "string 2" ); strcpy( s2, "string 1" );

puts( "Original strings: " ); puts( "" ); puts( s1 ); puts( s2 ); puts( "" );

strcpy( s2, s1 );

puts( "New strings: " ); puts( "" ); puts( s1 ); puts( s2 ); }

This will print out:

Original strings:

string 1 string 2

New strings:

string 1 string 1

Please be aware of two features of this program:

* This program assumes that "s1" has enough space to store the final string. The "strcat" function won't bother to check, and will give you erroneous results if that is not the case.

*A string constant can be used as the source string instead of a string variable. Using one for the destination, of course, makes no sense.

These comments are applicable to most of the other string functions.

There is a variant form of "strcpy" named "strncpy" that will copy "n" characters of the source string to the destination string, presuming there are that many characters available in the source string. For example, if you make the following change in the example program:

strncpy( s2, s1, 5 );

-- then the results change to:

New strings:

string 1 string

Notice that the parameter "n" is declared "size_t", which is defined in "string.h".

The "strcat" function joins two strings:

/* strcat.c */

#include   #include <string.h>

void main {    char s1[50], s2[50]; strcpy( s1, "Tweedledee " ); strcpy( s2, "Tweedledum" ); strcat( s1, s2 ); puts( s1 ); }

This prints:

Tweedledee Tweedledum

There is a variant version of "strcat" named "strncat" that will append "n" characters of the source string to the destination string. If you used "strncat" in the example above with a length of 7:

strncat( s1, s2, 7 );

-- the result would be:

Tweedledee Tweedle

Again, the length parameter is of type "size_t".

The "strcmp" function compares two strings:

/* strcmp.c */

#include <stdio.h>  #include <string.h>

#define ANSWER "blue"

void main {    char t[100]; puts( "What is the secret color?" ); gets( t ); while ( strcmp( t, ANSWER ) != 0 ) {      puts( "Wrong, try again." ); gets( t ); }    puts( "Right!" ); }

The "strcmp" function returns a "0" for a successful comparison, and nonzero otherwise. The comparison is case-sensitive, so answering "BLUE" or "Blue" won't work.

There are three alternate forms for "strcmp":

* A "strncmp" function which, as you might guess, compares "n" characters in the source string with the destination string: "strncmp( s1, s2, 6 )".

* A "stricmp" function that ignores case in comparisons.

* Finally, a case-insensitive version of "strncmp" called "strnicmp".

 * The "strchr" function finds the first occurrence of a character in a string. It returns a pointer to the character if it finds it, and NULL if not. For example:

/* strchr.c */

#include <stdio.h>  #include <string.h>

void main {    char *t = "MEAS:VOLT:DC?"; char *p; p = t;    puts( p ); while(( p = strchr( p, ':' )) != NULL ) {      puts( ++p ); }  }

This prints:

MEAS:VOLT:DC? VOLT:DC? DC?

The character is defined as a character constant, which C regards as an "int". Notice how the example program increments the pointer before using it ("++p") so that it doesn't point to the ":" but to the character following it.

The "strrchr" function is almost the same as "strchr", except that it searches for the last occurrence of the character in the string.

 * The "strstr" function is similar to "strchr" except that it searches for a string, rather than a character. It also returns a pointer:

char *s = "Black White Brown Blue Green"; ... puts( strstr( s, "Blue" ) );

 * The "strlwr" and "strupr" functions simply perform lowercase or uppercase conversion on the source string. For example:

/* casecvt.c */

#include <stdio.h>  #include <string.h>

void main {    char *t = "Die Barney die!"; puts( strlwr( t ) ); puts( strupr( t ) ); }

-- prints:

die barney die! DIE BARNEY DIE!

These two functions only implemented in some compilers and are not part of ANSI C.

C Character Class Test Library
These functions perform various tests on characters. They require the declaration:

#include <ctype.h>

The character is represented as an "int" and the functions return an "int". They return 0 if the test is false, and non-0 if the test is true:

isalnum( c ):   Character is alpha or digit. isalpha( c ):   Character is alpha. iscntrl( c ):   Character is control character. isdigit( c ):   Character is decimal digit. isgraph( c ):   Character is printing character (except space). islower( c ):   Character is lower-case. isprint( c ):   Character is printing character (including space). ispunct( c ):   Character is printing character but not space/alnum. isspace( c ):   Character is space, FF, LF, CR, HT, VT. isupper( c ):   Character is upper-case. isxdigit( c ):  Character is hex digit.

The library also contains two conversion functions that also accept and return "int":

tolower( c ):  Convert to lower case. toupper( c ):  Convert to upper case.

BACK_TO_TOP

C Command Line Arguments
C allows you to obtain the command line arguments provided when your executable is called, using two optional parameters of "main" named "argc" ("argument count") and "argv" ("argument vector").

The "argc" variable gives the count of the number of command-line parameters provided to the program. This count includes the name of the program itself, so it will always have a value of at least one. The "argv" variable is a pointer to an array of strings, with each element containing one of the command-line arguments.

The following example program demonstrates:

/* cmdline.c */

#include <stdio.h>

void main( int argc, char *argv[] ) {    int ctr; for( ctr=0; ctr < argc; ctr++ ) {      puts( argv[ctr] ); }  }

If you run this program from the command line as follows:

stooges moe larry curley

-- you'll get the output:

stooges moe larry curley

In practice, the command line will probably take a number of arguments, some of which will indicate options or switches, designated by a leading "-" or "/". Some of the switches may be specified separately or together, and some may accept an associated parameter. Other arguments will be text strings, giving numbers, file names, or other data.

The following example program demonstrates parsing the command-line arguments for an arbitrary program. It assumes that the legal option characters are "A", "B", "C", and "S", in either upper- or lower-case. The "S" option must be followed by some string representing a parameter.

/* cparse.c */ #include <stdio.h>  #include <stdlib.h>   #include <string.h>   main( int argc, char *argv[] ) {    int m, n,                              /* Loop counters. */        l,                                 /* String length. */        x,                                 /* Exit code. */        ch;                                /* Character buffer. */    char s[256];                           /* String buffer. */    for( n = 1; n < argc; n++ )            /* Scan through args. */    {       switch( (int)argv[n][0] )            /* Check for option character. */      {       case '-': case '/': x = 0;                  /* Bail out if 1. */                l = strlen( argv[n] ); for( m = 1; m < l; ++m ) /* Scan through options. */                {                   ch = (int)argv[n][m]; switch( ch ) {                  case 'a':              /* Legal options. */                  case 'A': case 'b': case 'B': case 'C': case 'd': case 'D': printf( "Option code = %c\n", ch ); break; case 's':             /* String parameter. */                  case 'S': if( m + 1 >= l ) {                              puts( "Illegal syntax -- no string!" ); exit( 1 ); }                            else {                              strcpy( s, &argv[n][m+1] ); printf( "String = %s\n", s ); }                            x = 1; break; default: printf( "Illegal option code = %c\n", ch ); x = 1;     /* Not legal option. */                            exit( 1 ); break; }                  if( x == 1 ) {                    break; }                }                 break; default: printf( "Text = %s\n", argv[n] ); /* Not option -- text. */                break; }    }     puts( "DONE!" ); }

For a more practical example, here is a simple program, based on an example from the previous chapter, that attempts to read the names of an input and output file from the command line. If no files are present, it uses standard input and standard output instead. If one file is present, it is assumed to be the input file and opens up standard output. This is a useful template for simple file-processing programs.

/* cpfile.c */

#include <stdio.h>  #include <stdlib.h>   #define MAX 256

void main( unsigned int argc, unsigned char *argv[] ) {    FILE *src, *dst; char b[MAX]; /* Try to open source and destination files. */    switch (argc) {    case 1:          /* No parameters, use stdin-stdout. */      src = stdin; dst = stdout; break;

case 2:         /* One parameter -- use input file & stdout. */      if ( ( src = fopen( argv[1], "r" )) == NULL ) {         puts( "Can't open input file.\n" ); exit( 0 ); }      dst = stdout; break;

case 3:        /* Two parameters -- use input and output files. */      if ( ( src = fopen( argv[1], "r" )) == NULL ) {         puts( "Can't open input file.\n" ); exit( 0 ); }      if ( ( dst = fopen( argv[2], "w" )) == NULL ) {         puts( "Can't open output file.\n" ); exit( 0 ); }      break;

default:       /* Too many parameters. */      puts( "Wrong parameters.\n" ); exit( 0 );

}    /* Copy one file to the next. */    while( ( fgets( b, MAX, src ) ) != NULL ) {       fputs( b, dst ); }    /* All done, close up shop. */    fclose( src ); fclose( dst ); }

Pointers to C Functions
You know by now that you can declare pointers to variables, arrays, and structures in C. You can also define pointers to functions. This feature allows you to pass functions as arguments to other functions. This is useful if you want to, say, build a function that determines solutions to a range of math functions.

The syntax for declaring pointers to functions is obscure, and so let's start with an idiot example: declaring a pointer to the standard library function "printf":

/* ptrprt.c */

#include <stdio.h>

void main {    int (*func_ptr) ;                  /* Declare the pointer. */    func_ptr = printf;                   /* Assign it a function. */    (*func_ptr) ( "Printf is here!\n" ); /* Execute the function. */  }

The function pointer has to be declared as the same type ("int" in this case) as the function it represents.

Next, let's pass function pointers to another function. This function will assume the functions passed to it are math functions that accept double and return double values:

/* ptrroot.c */

#include <stdio.h>  #include <math.h>   void testfunc ( char *name, double (*func_ptr)  ); void main {    testfunc( "square root", sqrt ); }  void testfunc ( char *name, double (*func_ptr)  ) {    double x, xinc; int c;    printf( "Testing function %s:\n\n", name ); for( c=0; c < 20; ++c ) {      printf( "%d: %f\n", c,(*func_ptr)( (double)c )); }  }

You obviously cannot pass any arbitrary function to "testfunc", since it must agree with the expected number and type of parameters, as well as with the value returned.

C Dynamic Memory Allocation & Deallocation
For simple programs, it is OK to just declare an array of a given size:

char buffer[1024]

In more sophisticated programs, this leads to trouble. You may not know how big an array needs to be for the specific task the program is performing, and so allocating an array in a fixed size will either result in wasted memory or in not having enough to do the job.

The answer to this problem is to have the program allocate the memory at runtime, and that's what the "malloc" library function does. For example, let's use "malloc" to allocate an array of "char":

/* malloc.c */

#include <malloc.h>  #include <stdio.h>   #include <stdlib.h>                    /* For "exit" function. */

void main {    char *p;                             /* Pointer to array. */    unsigned count;                      /* Size of array. */    puts( "Size of array?" ); scanf( "%d", count );               /* Get size in bytes. */    p = (char *)malloc( (size_t)count ); /* Allocate array. */    if( p == NULL )                      /* Check for failure. */    {       puts( "Can't allocate memory!" ); exit( 0 ); }    puts( "Allocated array!" ); free( p );                          /* Release memory. */  }

The header file "malloc.h" must be included, and a pointer to the memory block to be allocated must be declared. The "malloc" function sets the pointer to the allocated memory block with:

p = (char *)malloc( (size_t)count );

The count is in bytes and it is "cast" to the type of "size_t", which is defined in "malloc.h". The pointer returned by "malloc" is "cast" to type "char *", that is, a pointer to type "char". By default, in ANSI C, "malloc" returns a point of type "void", which allows the pointer to be cast to any other type.

If the "malloc" fails because it can't allocate the memory, it returns the value NULL (as defined in "stdio.h").

It is simple to allocate other data types by changing the "cast" operations:

int *buf; ...  buf = (int *)malloc( (size_t)sizeof( int ) * count );

The "sizeof" function is used to determine the number of bytes in the "int" data type.

When you have finished using the memory block, you get rid of it using the "free" function:

free( p );

C also contains two other memory-allocation functions closely related to "malloc": the "calloc" function, which performs the same function as "malloc" but allows you to specify the block allocated in terms of number of elements:

void *calloc( size_t <number_elements>, size_t <sizeof_element_type> );

-- and the "realloc" function, which allows you to reallocate the size of an array that's already been allocated:

void *realloc( void *<block_pointer>, size_t <size_in_bytes> );

Common Programming Problems in C
There are a number of common programming pitfalls in C that even trap experienced programmers:

 * 1) Confusing "=" (assignment operator) with "==" (equality operator). For example:

if ( x = 1 ) {  }

-- is bogus, and so is:

for ( x == 1; ...

 * 1) Confusing precedence of operations in expressions. When in doubt, use parentheses to enforce precedence.

 * 1) Confusing structure-member operators. If "struct_val" is a structure and "struct_ptr" is a pointer to a structure, then:

struct_val->myname

-- is wrong and so is:

struct_ptr.myname

 * 1) Using incorrect formatting codes for "printf" and "scanf". Using a "%f" to print an "int", for example, can lead to bizarre outputs.

 * 1) Remember that the actual base index of an array is 0, and the final index is 1 less than the declared size:

int data[20]; ...  for ( x = 1; x <= 20; ++x ) {    printf( "%d\n", data[x] ); }

-- will give you invalid results when "x" is 20. Since C does not do bounds checking, this one might be hard to catch.

 * 1) Muddling syntax for multidimensional arrays. If:

data[10][10]

-- is a two-dimensional array, then:

data[2][7]

-- will select an element in that array. However:

data[ 2, 7 ]

-- will give invalid results but not be flagged as an error by C.

 * 1) Confusing strings and character constants. The following is a string:

"Y"

-- as opposed to the character constant:

'Y'

This can cause troubles in comparisons of strings against character constants.

 * 1) Forgetting that strings end in a null character ('\0'). This means that a string will always be one character bigger than the text it stores. It can also cause you trouble if you are manipulating strings on a character-by-character basis and forget to tack the null character onto the end of it.

 * 1) Failing to allocate enough memory for a string -- or, if you declare pointers, to allocate any memory for it at all.

 * 1) Declaring a string with a fixed size and then assigning it to a string literal:

char a[256] = "This doesn't work!";

 * 1) Failing to check return values from library functions. Most library functions return an error code; while it may not be desireable to check every invocation of "printf", you should take care not to ignore error codes in critical operations.

Of course, forgetting to store the value returned by a function when that's the only way to get the value out of it is a bonehead move, but people do things like that every now and then.

 * 1) Having duplicate library-function names. The compiler will not always catch such bugs.

 * 1) Forgetting to specify header files for library functions.

 * 1) Specifying variables as parameters to functions when you need to specify pointers, and the reverse. If the function returns a value through a parameter, that means it must be specified as a pointer:

myfunc( &myvar );

The following will not do the job:

myfunc( myvar );

Remember that a function may require a pointer as a parameter even if it doesn't return a value, though as a rule this is not a good programming practice.

 * 1) Getting mixed up when using nested "if" and "else" statements. The best way to avoid problems with this is to always use brackets. Avoiding complicated "if" constructs is also a good idea; use "switch" if you have any choice in the matter. Using "switch" is also useful even if you have simple "if" statements, since it makes it easier to expand the construct if that is necessary.

 * 1) Forgetting semicolons, though the compiler usually catches that, or adding one where it isn't supposed to be, which it usually doesn't. For example:

for( x = 1; x < 10; ++x ); {     printf( "%d\n", x ) }

-- never prints anything.

 * 1) Forgetting "break" statements in "switch" constructs. As commented earlier, doing so will simply cause execution to flow from one clause of the "switch" to the next.

 * 1) Careless mixing and misuse of signed and unsigned values, or of different data types. This can lead to some insanely subtle bugs. One particular problem to watch out for is declaring single character variables as "unsigned char". Many I/O functions will expect values of "unsigned int" and fail to properly flag EOF.

You should usually cast function arguments to the proper type even if it appears that type conversion will take care of it on its own.

 * 1) Confusion of variable names. It is recommended that such identifiers be unique in the first 6 characters to ensure portability of code.

 * 1) In general, excessively tricky and clever code. Programs are nasty beasts and even if you get one to work, remember that you will have to modify it and even port it to different languages. Maintain a clean structure and do the simple straightforward thing, unless it imposes an unacceptable penalty.

v2.0.7 / 4 of 7 / 01 feb 02 / greg goebel / public domain

title: User:Jimregan/C Primer chapter 4


text:
Phoenix/Enemy 2

"Enemy 2" is the second enemy you encounter. It appears on levels 4, 5, and 6, then comes back to introduce Enemy 3 on levels 8 and 11, and finally takes Enemy 5's place on level 19. It shoots the equivalent of Weapon 1, a 2x2 pixel bullet, straight forward. It has 3 Hit Points.

source: wikimedia

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

title: Phoenix/Enemy 2


text:
User:Mc.mbjones

I live in Louisville, KY. I am a 17 year old summer camp counselor, and love working with kids.

title: User:Mc.mbjones


text:
Talk:Dennis Turner

External links modified
Hello fellow Wikipedians,

I have just modified one external link on Dennis Turner, Baron Bilston. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20090130082812/http://wlv.ac.uk/default.aspx?page=14678 to http://www.wlv.ac.uk/default.aspx?page=14678

Cheers.— InternetArchiveBot  (Report bug) 03:11, 27 November 2017 (UTC)

title: Talk:Dennis Turner


text:
Fire and emergency management/About Open Source Learning Project

Open Source Development: It’s not just about software anymore
By Michael D. Finney

''“…given enough eyeballs, all bugs are shallow. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.”''

-Linus Torvalds, Creator of Linux Operating System

What if I told you that your training materials could be standards based? What if I told you that your curriculum could be comprehensive, yet customizable to your departmental needs? What if I told you curriculum and training materials could be free? Yes, I said free. One of the key areas I am passionate about is the untapped capabilities of the internet and online learning communities to create effective education and training resources for our fire service. Ironically, the technology is present, available, and in many cases, are easily implemented. Unfortunately, many departments and training academies do not capitalize on the benefits of the World Wide Web.

Effective use of the internet can create a portal for learning and educational exchange unparalleled by anything fire service training has yet to produce. It opens doors for communication, permits training resources to be evaluated and updated in real time, and connects all interested stakeholders with the click of a mouse. What I am proposing is the ability to collaborate on curriculum and training materials in ways we historically have not been allowed. Utilizing not only the technology, but some of the development methodologies, training materials can become comprehensive, evolutionary, and self validating. The launching point of this new approach to developing training materials for the fire service is what has been dubbed the “Open Source Learning Project”. Coined from the Open Source Software Initiatives, the Open Source Learning Project adopts the tradition of Instructional Systems Design with the efficiency and quality of software development.

However, before explaining how the Open Source Learning Project work, we must first provide a foundation.

Instructional Systems Design
Instructional Systems Design (ISD) is foundational in fire service training. It has its roots in the military, but has long been considered a standard development process for fire service professionals. ISD has many variations, but typically is divided into five phases according to the ADDIE model:

Assessment: The developer takes the topic and researches the industry need in relation to the topic. The Assessment may include surveys, task analysis, and job tasks review.

Design: Based on the Assessment, the developer will begin to create a plan for developing the curriculum. The planning stage, as it is sometimes called, is where the objectives are developed and the framework for the development process is determined.

Development: The developer actually creates or assembles the materials. The instructional outlines developed, the audio/visual materials, support material, and evaluation instruments.

Implementation: Once the curriculum is developed, the course must be tested (or piloted) to confirm delivery accuracy, validation, and reliability.

Evaluation: To determine the relevancy of a curriculum, evaluation must take place. Materials must be reviewed and adjustments made. Most importantly, does the course fill the void determined by the Assessment.

Instructional Systems Design is a methodical process for developing effective, comprehensive curriculum. Providing a structure ensures necessary components were created and information is thoroughly covered.

What is Open Source
|Open Source, while applied to many areas today, has primarily been associated with software development. Under the Open Source Definition, software must meet ten criteria to be considered open source:

1.Free Redistribution: the software can be freely given away or sold.

2.Source Code: the source code must either be included or freely obtainable. 3.Derived Works: redistribution of modifications must be allowed.

4.Integrity of The Author's Source Code: licenses may require that modifications are redistributed only as patches.

5.No Discrimination Against Persons or Groups: no-one can be locked out.

6.No Discrimination Against Fields of Endeavor: commercial users cannot be excluded.

7.Distribution of License: The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

8.License Must Not Be Specific to a Product: the program cannot be licensed only as part of a larger distribution.

9.License Must Not Restrict Other Software: the license cannot insist that any other software it is distributed with must also be open source.

10.License Must Be Technology-Neutral: no click-wrap licenses or other medium-specific ways of accepting the license must be required.

Related to the Open Source Definition is the |Free Software definition by the |Free Software Foundation, which attempts to capture what is required for a program license to qualify as being free-libre software. In practice, licenses meet the open source definition almost always also meet the Free software definition. All licenses reported to meet the free software definition as of 2005 also meet the open source definition.

According to Stallman and the Free Software Foundation (FSF), "free" software licenses grant:

·	the freedom to run the program for any purpose (called "freedom 0")

·	the freedom to study and modify the program ("freedom 1")

·	the freedom to copy the program so you can help your neighbor ("freedom 2")

·	the freedom to improve the program, and release your improvements to the public, so that the whole community benefits ("freedom 3")

Freedoms 1 and 3 require source code access, because studying and modifying software without source code is extremely difficult and highly inefficient compared to modifying annotated source code.

Open Source software development is initiated with a core program or kernel. The kernel becomes the foundation that makes the software functional. The person who develops the kernel posts the program in a location accessible to others. Other people can then add to the kernel. The end result becomes a mature program that benefits all users. One of the elements of open source is the accessibility to all, typically free. Open Source software creates a community of developers and users that build off of each others needs and specialties.

There are four critical roles within the Open Source development process:

·	Project Manager: Oversees the project. Directs and coordinates the overall project.

·	Developers: Introduces and oversees components of the project.

·	Co-Developers: creates and develops components of the project.

·	End Users and Focus Groups: Provides feedback for improvement and software bugs.

Open Source Curriculum Development
Considering what is discussed thus far, how does it apply to curriculum development. Working with the assumption that one is working within the context of the Instructional Systems Design, applying the principles of Open Source development can be innovative. Consider the following approach:

1. The developer determines the need to develop a new curriculum.

2. The developer develops the framework of the course. Such considerations are the learning objectives and an outline of the curriculum.

3. The curriculum is then posted to a common place for review, comments, and expansion of content.

4. Other subject matter experts begin to add components, add support material, evaluation instruments, and comment on other posts.

5. The course begins to evolve and develop as the community of subject matter experts and developers join the community.

6. The end result is an evolving curriculum that grows with the industry needs, self updates, and changes with industry demands.

One of the benefits to the approach is the community approach creates a validation and reliability component to the development process. Errors, misinformation, and false statements have a greater opportunity to be addressed early on. As well, controversial material or conflicting information can be resolved by the group rather than the individual.

How the Open Source Learning Project Works
The Open Source Learning Project is designed for the fire service, by the fire service and projects are developed in accordance with current, applicable NFPA standards. Course "kernels" will contain the learning objectives and the basic course outlines. Once completed, a project facilitator will be assigned and the course posted for comments. Anyone can post to the curriculum as long as the ground rules are maintained. As well, organizations and individuals creating support materials (i.e., PowerPoint presentations, student guides, skill sheets, test questions/banks, and so forth) can be posted as well. Courses will remain on the website for continuous development and ongoing updates. In the spirit of Open Source, courses can be downloaded at no cost to the individual or the organization. The individual or organization accepts responsibility for ensuring the course meets their local needs as the Authority Having Jurisdiction. Equally, contributors accept that the information they provide is open to comments, edits, downloads, and use. The best explanation is to quote Wikibooks with, "If you don't want your writing to be edited mercilessly and redistributed at will, then don't submit it here."

Finally, the purpose is to create a community of fire service developers, experts, and users, that will create the most comprehensive curriculum possible for the referenced NFPA standards. In the end, the most critical component of training benefits- the student. Knowing the end result, the fire service is improved and at the end of the day the philosophy of "everyone is safe and everyone goes home" becomes a reality.

Ground Rules
In order to maintain the integrity of the curriculum, but to allow for the ongoing evolution of the curriculum, the rules are somewhat simple:

1. All material and contributions must be original... do not use someone else's material or it will be deleted and the contributor potentially banned from the project.

2. All content must be consistent with the applicable NFPA standard.

3. SAFETY FIRST... all practices and information must not be or suggest unsafe acts.

4. Conflicting or controversial material will be resolved by the community of developers and subject matter experts. In situations where no resolution or compromise can be obtained, the project facilitator has the final word.

5. All information must be relevant and focused on the topic at hand. Information irrelevant or off the mark will be deleted.

6. Finally, we want to develop and grow safer and well trained fire personnel. The courses and information must constantly reflect such.

Our attempt is to create a framework or parameters for development. We do not want to squash the creative mind or the flow of information, we simply want to keep it relevant, applicable, and focused.

Final Thoughts
The opportunities as a result of the Open Source Learning Project are endless. It provides the capabilities for curriculum development, online course, collaboration, and research. When I look at the benefits of this type of project, I think of the National Fire Academy. While I am always impressed with the courses and content, one of golden nuggets I cherish is the ability to network and share ideas with department personnel across the country. Imagine having that same ability to share information and collaboration at anytime, any place, and any level. There are typically two types of positive change processes that take place. The first is innovative change which is an improved or better way of doing a skill or process. The second, disruptive change, is a change in the organizational landscape. With disruptive change, we are not just improving the process, we are creating a new process all together. Disruptive change will be the result of the Open Source Learning Project as we will be able to change the landscape of fire training and academics. Collectively, as a fire service, we will create some of the most comprehensive ways to train our personnel. We will break down the barriers that have prevented effective training and collectively, we will create a safer fire service.


text:
Talk:Derek Mahon

Fair use rationale for Image:PoedeDEREKMAHON.jpg
Image:PoedeDEREKMAHON.jpg is being used on this article. I notice the image page specifies that the image is being used under fair use but there is no explanation or rationale as to why its use in this Wikipedia article constitutes fair use. In addition to the boilerplate fair use template, you must also write out on the image description page a specific explanation or rationale for why using this image in each article is consistent with fair use.

BetacommandBot (talk) 05:35, 21 January 2008 (UTC)

Copyright problem
This article has been reverted by a bot to as part of a large-scale clean-up project of multiple article copyright infringement. (See the investigation subpage) This has been done to remove User:Accotink2's contributions as they have a history of extensive copyright violation and so it is assumed that all of their major contributions are copyright violations. Earlier text must not be restored, unless it can be verified to be free of infringement. For legal reasons, Wikipedia cannot accept copyrighted text or images borrowed from other web sites or printed material; such additions must be deleted. Contributors may use sources as a source of information, but not as a source of sentences or phrases. Accordingly, the material may be rewritten, but only if it does not infringe on the copyright of the original or plagiarize from that source. Please see our guideline on non-free text for how to properly implement limited quotations of copyrighted text. Wikipedia takes copyright violations very seriously. VWBot (talk) 13:53, 10 December 2010 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 2 external links on Derek Mahon. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20120310184037/http://wfupress.wfu.edu/authors/derek_mahon.php to http://wfupress.wfu.edu/authors/derek_mahon.php
 * Added archive https://web.archive.org/web/20050910074849/http://thepoem.co.uk/poems/mahon.htm to http://www.thepoem.co.uk/poems/mahon.htm

Cheers.— InternetArchiveBot  (Report bug) 01:15, 5 December 2017 (UTC)

title: Talk:Derek Mahon


text:
Cookbook:Sauces

Sauces are thickened liquid additions to a recipe, used to enhance the flavor or appearance, or to add moisture. In the 1800s, the French chefs Antonin Carême and Auguste Escoffier developed a systematic categorization of sauces, based on five "mother sauces". All sauces were considered to be a variation of one of these sauces. As other cuisines and ingredients have become more common to world cuisine, the number of mother sauces and sauce families has expanded slightly, but most sauces can be seen as a variation or adaptation of a few basics.

The sauces below are grouped by their family. The first five groups are the traditional sauce families, with the modern additions following. Except for the Dessert family, the top sauce in each family is that family's "mother sauce". Many of the mother sauces use a roux as the thickening agent. Roux itself is not really a sauce.

White milk-based sauces

 * Béchamel Sauce
 * Alfredo Sauce
 * Cheese Sauce
 * Sauce Mornay
 * Vegetarian "Bacon" Gravy
 * White Sauce

White stock-based sauces

 * Velouté sauce

Brown sauces

 * Espagnole Sauce
 * Ham sauce
 * Mirepoix sauce
 * Mushroom sauce
 * Neapolitan Sauce
 * Roman Sauce

Egg-based emulsions

 * Hollandaise
 * Béarnaise
 * Mock Béarnaise
 * Mayonnaise
 * Louis Dressing
 * Tartar Sauce
 * Thousand Island Dressing

Tomato-based sauces

 * Tomato Sauce
 * Barbecue Sauce
 * Barbecue Sauce - Kansas City style
 * Barbecue Sauce - Sweet
 * Chicken Barbecue Sauce
 * Basic Indian Tomato Gravy
 * Ketchup
 * Marinara Sauce
 * Pico de Gallo
 * Pizza Sauce
 * Puttanesca Sauce
 * Spaghetti Sauce
 * Tomato Pasta
 * Tomato Sauce Piquante
 * Salsa

Purees

 * Pesto
 * Coconut Chutney
 * English Field Bean Pate
 * Guacamole
 * Onion Chutney
 * Peanut Sauce
 * Red Chile Sauce
 * Saus Kacang - Indonesian Peanut Sauce
 * Sriracha

Fermented sauces

 * Soy Sauce
 * Fish Sauce (Vegan)
 * Nước maøu
 * Worcestershire Sauce

Vinaigrettes

 * Vinaigrette
 * Beurre Blanc
 * Caramelized Sweet and Sour Onion Marmalade
 * Champagne Vinaigrette
 * French Dressing
 * Honey Mustard Salad Dressing
 * Mango Atchar
 * Neapolitan Anchovy Sauce
 * Red Pepper and Goat Cheese sauce
 * Senf - German Style Sweet Mustard
 * Sweet and Sour

Dessert sauces

 * Black Pepper Syrup
 * Caramel Sauce
 * Creme Anglaise
 * Hot Fudge
 * Lemon Curd

title: Cookbook:Sauces


text:
Lewis Tappan Barney

Lewis Tappan Barney (March 18, 1844 – December 19, 1904) was an officer in the Union Army during the American Civil War. Born in 1844 he became the youngest man brevetted to brigadier general and major general in the war.

Life and Service
Lewis Tappan Barney was born in the city of Brooklyn, New York on March 18, 1844 as child of New York lawyer Hiram Barney and his wife Susannah A. Tappan. Growing up with his five siblings Barney became a hotel clerk and tried his luck as a viticulturist.

In 1862, after the American Civil War raged for a year, Barney joined the 7th New York Militia Regiment (Company F) as a Private for 90-day service. In October he joined the 68th New York Infantry Regiment (Company G). At the time present the 68th Infantry was part of the Army of the Potomac's XI Corps and, in the brigade of Alexander Schimmelfennig, was posted in the Washington defenses. A month later Barney, who was listed in some rosters as John Barney, was commissioned a 1st Lieutenant.

In February 1864 Barney was promoted to captain and assigned to the staff of General Rufus Saxton. He functioned as an assistant-adjutant general to the forces stationed in South Carolina. During summer he was offered the colonelcy of the 106th New York Infantry Regiment, but he declined. Instead he tried to raise the 180th New York Infantry. However the regiment failed to muster when it draw only enough men for a company; and in February 1865 the regiment was disorganized (its men being transferred to the 179th New York). On March 13, 1865, still only 20 years old, he was brevetted both Brigadier and Major General of the U.S. Volunteers for "gallant and meritorious services during the war".

After the war Barney settled in California and married his wife, Mary S. Fowler, in 1875. He died in Inglewood on December 19, 1904; and is buried on Rosedale Cemetery, Los Angeles (now Angelus-Rosedale Cemetery).

title: Lewis Tappan Barney


text:
Talk:Ad Parnassum

Requested move 9 July 2022

The result of the move request was: moved. (closed by non-admin page mover) — Ceso femmuin mbolgaig mbung, mellohi! (投稿) 01:53, 16 July 2022 (UTC)

Ad Parnassum (Klee) → Ad Parnassum – There are no other Wikipedia articles on "Ad Parnassum". N ot ·R eally ·S oroka  01:39, 9 July 2022 (UTC) The discussion above is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.
 * Weak support there a number of mentions in articles and perhaps a generic meaning but presumably this is the only notable usage at least for the title case version though there is Q15751714 and Q55373705 but are these notable here?  Crouch, Swale  ( talk ) 09:19, 9 July 2022 (UTC)
 * Support per nomination and Crouch, Swale. Uncontroversial technical request. —Roman Spinner (talk • contribs) 01:47, 10 July 2022 (UTC)
 * Support per nom. Q55373705 is apparently this exhibition centred on the painting (the opening dates on the museum's website and Wikidata don't match, but the closing dates do) – and the exhibition isn't more notable than the painting itself. Ham II (talk) 06:47, 12 July 2022 (UTC)

title: Talk:Ad Parnassum


text:
Jonathan Tzachor

Jonathan Tzachor (יונתן צחור) is an Israeli-American producer and director best known for his work on Power Rangers. After a hiatus from the show that stretched from 2003 to 2010, he served as executive producer of the franchise from 2011 to 2014.

Tzachor's tenure
Tzachor's time spent as producer brought many firsts to the world of Power Rangers in terms of storywriting and character development. Dark themes were used (particularly in Power Rangers in Space and Power Rangers Time Force) instead of the usual comedic tone, and actual casualties of good characters, which had been occurring in Tokusatsu for years, began to be implemented. It would also mark the first time that Power Rangers started fresh every season after Power Rangers in Space. Furthermore, under Tzachor, much of Power Rangers would draw more material from their Super Sentai counterpart this is also supported by every season's plot being similar to its Sentai counterpart and very little of the plot is changed. Fans of the show have criticized Tzachor for what is viewed as an "overdependence" on the source material, and opinion is divided on his contributions to the series.

Disney era/departure
After Disney's acquisition of the franchise, Tzachor's final series, Power Rangers Wild Force, would be a split season, airing-wise as the first half aired on Fox Kids, while the second half aired on ABC Kids. Ironically, Tzachor was succeeded as producer by the person from whom he took the reins in 1997, Douglas Sloan. MMPR Productions was shut down, and production of the show was transferred to Village Roadshow KP Productions in Auckland, New Zealand (now known as Power Rangers Productions).

The Wild Force finale, The End of the Power Rangers, which was Tzachor's final episode with the franchise until Power Rangers Samurai, was directed by him.

Saban Brands era
After Disney sold the Power Rangers Brand back to Saban in the form of Saban Brands, Jonathan Tzachor was hired to produce the eighteenth season of Power Rangers in New Zealand, known as Power Rangers Samurai and Power Rangers Super Samurai. He returned to the directors chair for the Samurai/RPM crossover special "Clash of the Red Rangers: The Movie" and the 2012 Halloween special "Trickster Treat", as well as several episodes of the series that would succeed Samurai, Power Rangers Megaforce and its follow-up Power Rangers Super Megaforce, before being succeeded as executive producer by Judd Lynn in 2015.

Television

 * Mighty Morphin Power Rangers (1993-1995)
 * Power Rangers Zeo (1996)
 * Power Rangers Turbo (1997)
 * Power Rangers in Space (1998)
 * Power Rangers Lost Galaxy (1999)
 * Power Rangers Lightspeed Rescue (2000)
 * Power Rangers Time Force (2001)
 * Power Rangers Wild Force (2002)
 * Power Rangers Samurai (2011-2012)
 * Power Rangers Megaforce (2013-2014)

Film

 * American Ninja V (1993)
 * Turbo: A Power Rangers Movie (1997)
 * See Arnold Run (2005)
 * Return to House on Haunted Hill (2007)
 * Echelon Conspiracy (2009)
 * The Hills Run Red (2009)

Director

 * Mighty Morphin Power Rangers (1994-1995)
 * Power Rangers in Space (1998)
 * Power Rangers Lost Galaxy (1999)
 * Power Rangers Lightspeed Rescue (2000)
 * Power Rangers Time Force (2001)
 * Power Rangers Wild Force (2002)
 * Power Rangers Samurai (2011-2012)
 * Power Rangers Megaforce (2013-2014)

title: Jonathan Tzachor


text:
User:DanielTan64/sandbox

Editing/contribution styles

 * Active mostly on Singapore artists and the gaming scene.
 * Generally leaning towards American styles and arts.
 * Will try to contribute more aspiring, upcoming artists who are low profile, with achievements.

title: User:DanielTan64/sandbox


text:
Talk:Music Theory/Scales and Intervals

"Pentatonic scales all have five notes, although this is really a coincidence. They are called pentatonic scales because each note in the scale is a fifth (seven semitones) relative to another note."
 * I don't think this is true; it only holds true for the major pentatonic. -- Jimregan 08:49, 18 May 2004 (UTC)

I'm not 100% sure about it myself, but I think other "pentatonic" scales are just modes of the major pentatonic...I should perhaps look into this further. Speaking of modes, they already have their own chapter. They don't need to be discussed here, just mentioned in brief with a cross-reference.

I think the parts showing the scales really belonged on their own lines. On my video resolution the scales are currently word-wrapped, which is jarring and inhibits clarity. The only way to ensure they won't wrap is to put them on their own lines.

--Furrykef 11:22, 18 May 2004 (UTC)

Well, as it is it renders for me like this:

 * Here are two versions of the chromatic scale, one with sharps, the other with flats, each on its own line: C C# D D# E F F# G G# A A# B C Db D Eb E F Gb G Ab A Bb B

Maybe what you want is this

C C# D D# E F F# G G# A A# B C Db D Eb E F Gb G Ab A Bb B
 * Here are two versions of the chromatic scale, one with sharps, the other with flats, each on its own line:

-- Jimregan 18:49, 18 May 2004 (UTC)

Ah, yeah, sorry. I should check my previews more carefully...

--Furrykef 01:39, 19 May 2004 (UTC)

Tables
Do we really need those tone/semitone tables? I don't really think it's a good use of table markup. --Furrykef 15:02, 9 Jun 2004 (UTC)

Can the derivation of the pentatonic scale be discussed further? After reading the docs on pentatonic intervals, I'm a bit confused over the statement that all tones are in relation by a fifth. If one bases that statement on the circle of fifths, then the statement is somewhat true with the exception of E does not repeat to C again. I found the above link very interesting in regards to the derivation of a pentatonic scale.

In summary, to generate a pentonic scale, using the Pythagorean method. Use 5/4f to calcuate a fifth and 4/3f to calculate a forth (note however that the forth is not actually part of the pentatonic scale). So using the Pythagorian method, it looks something like:

 * C = 1f
 * D = 3/2f - 4/3f
 * E = ((3/2f - 4/3f) + 3/2f) - 4/3f
 * G = 3/2f
 * A = (3/2f - 4/3f) + 3/2f
 * c = 2f

That looks confusing, but really it's just a cycle of C up a fifth to G, down a forth to D, up a fifth to A, and back down a forth to E (C -> G -> D -> A -> E). The high c is in there, but really it can't be derived using this natural cycle. It's just there to show an octave.

As you play with the numbers, you'll find an exact even interval of 9/8f between C&D,D&E, and G&A, and two larger intervals of 32/27f between E&G and A&c.

A pentatonic scale can also be derived using straight harmonic calculations of:

 * C = 1f
 * D = 9/8f
 * E = 5/4f
 * G = 3/2f
 * A = 5/3f
 * c = 2f

If all these ratios look confusing, just think of 5/4f as f + 1/4f or the base/tonic freq plus a quarter of it's value. 2f of course being double the freq to achieve an octave.

So there you have it, two pentatonic scale derived naturally. The first is called Pythagorean temperament, the second is called Just temperament. Both are interesting in their own respects. The Just temperament uses natural harmonics for all notes. However the interval between each note varies. The Pythagorean temperament is interesting in that the intervals between each tone is exactly 9/8f!

Using the Pythagorean model, a daitonic scale can be produced by splitting the two larger intervals of 32/27f into 9/8f + 256/243f. That 256/243f interval is the definition of a Pythagorean semitone or half tone. When done, you have five 9/8 intervals and two 256/243 intervals in a WWHWWWH pattern and hence the definition of what a diatonic scale is.

I should point out that as cool as the Pythagorean method is, it's not exact. That's because the semitones between E & F and B & c are not exactly a half step (ie: half of 9/8f), it's something like 256/243f. For that reason, the Pythagorean scale is great for music written in one key like so many folk tunes. If one was to switch musical keys with instruments tuned to Pythagorean temperament, one would have to switch instruments as well (ie: one instrument for each musical key). This lead to the adoption of Even termperament. Even temperament essentially devides an octave into 12 equally tuned semitones. This has the advantage in that an Even tuned instrument can be played in any key. The disadvantage of Even temperament is that none of the actual tones in the scale are exact to natual harmonics (other than tonic and octave). The difference is very slight, but it does exist.

The calculations and comparisons between Just, Pythagorean, and Even respectively look something like:

... --releppes 16:18, 13 Jun 2005 (UTC)
 * C: J=1f, P=1f E=1f
 * D: J=9/8, P=9/8f, E=2^(2/12)f
 * E: J=5/4f, P=81/64f, E=2^(4/12)f

What about another table for the simple interval section with # intervals as 1 axis and # semitones as the other axis to show how the notation of music deals with the actual number of semitones between notes? i.e. a 13 (including 0)x 8 grid. I have found no such grid when trying to help my daughter with her grade iv theory and wanted to explain the whole concept. C Knox

title: Talk:Music Theory/Scales and Intervals


text:
Spalagadames

Spalagadames (Kharosthi: 𐨭𐨿𐨤𐨫𐨒𐨡𐨨 Śpa-la-ga-da-ma, Śpalagadama ) was an Iranian king, who ruled Sakastan in the last quarter of the 1st-century BC after his father Spalahores, who was himself possibly a brother of king Vonones. Spalagadames has been suggested by the Iranologist Khodadad Rezakhani to be the same figure as the first Indo-Parthian king Gondophares ((r. 19 – 46)).

Name
Spalagadames's name is attested on his coins in the Kharosthi form Śpalagadama (𐨭𐨿𐨤𐨫𐨒𐨡𐨨), which is derived from the Saka name *Spalagadama, meaning "commander of army".

title: Spalagadames


text:
Cookbook talk:Grilling

This module uses text originaly published in the Wikipedia article Grilling. The page history of that article at the time the text was coppied is included below.

* (cur) (last). . 07:46, 21 Apr 2004. . Stormwriter (Removed following line: ITOM 2308!) * (cur) (last). . 07:44, 21 Apr 2004. . <IP_ADDRESS>   * (cur) (last). . 02:22, 14 Feb 2004. . Minesweeper (*George Foreman Grill) * (cur) (last). . 18:53, 26 Jan 2004. . <IP_ADDRESS>   * (cur) (last). . m 05:23, 23 Nov 2003. . Wik * (cur) (last). . 19:35, 2 Apr 2003. . <IP_ADDRESS> (removed extra "a" before cooking in last paragraph) * (cur) (last). . 18:23, 16 Jan 2003. . <IP_ADDRESS> (add skewers) * (cur) (last). . 07:49, 6 Jan 2003. . <IP_ADDRESS>   * (cur) (last). . m 05:05, 31 Dec 2002. . Modster * (cur) (last). . m 18:09, 12 Dec 2002. . <IP_ADDRESS> (de:) * (cur) (last). . 22:10, 19 Sep 2002. . <IP_ADDRESS>   * (cur) (last). . m 21:44, 19 Sep 2002. . <IP_ADDRESS>   * (cur) (last). . 21:38, 19 Sep 2002. . <IP_ADDRESS>   * (cur) (last). . m 12:15, 22 May 2002. . Maveric149 (from ugly / page)

Edit war
OK, the anonymous IP had asked me to look this over... I'm not going to argue over which terms mean which because I don't know, although I must say which meanings are most common should be considered the "correct" meanings with the others still being noted to avoid confusion. Two sources (Wikipedia and Merriam-Webster) are not really enough to judge that unless they contain that info. There must be a way for you two to come into agreement without an admin putting his foot down.

I do see that User:AlbertCahalan seems to have his own idea of what the page should be like and until now was reverting anything to the contrary. I don't see why this should be done; what's wrong with expanding it? This is a wiki. We don't own pages. If somebody wants to expand them, let them, or if you insist on not doing so, at least point out why it's better not to ("this is a disambiguation page" does not cut it). Now, I'm not saying I'm on anybody's side as far as the edit war goes, I'm just saying useful content should not be reverted for no apparent reason -- and certainly not while calling the contributing party a vandal, at that! - Furrykef 20:13, 10 May 2005 (UTC)

 * I think the main issue was over whether the cooking method is "direct" or "indirect". I'm not sure how to make that distinction (how direct is direct; is microwave the only direct way?), but it doesn't matter in any case. So, best not to mention it. I'm not 100% sure what you mean by useful content being reverted, but the barbeque instructions were written by me and originally placed on the barbeque page. They belong there, not on the grilling page. Given that little is said about the distance from the flame, the instructions should suit either the normal barbeque definition or the strange narrow definition. I pointed out more info on the user's talk page. I think there is much less for him to object to now, ever since the removal of the useless direct/indirect distinction. AlbertCahalan 21:23, 10 May 2005 (UTC)

 * Ah, I didn't notice that content was moved rather than added, sorry. Still, I don't think it was worth an edit war. I do agree that "direct" versus "indirect" doesn't seem to be a useful distinction and we're probably better off without it. No comment on where things belong, though. - Furrykef 23:04, 10 May 2005 (UTC)

 * I'd be happy to hear any suggestions for better ways to deal with someone who insists on a very non-standard definition of barbecue while making the Cookbook:Grilling page too wordy to serve as a disambiguation page. Note that I did attempt to discuss things on "his" anon talk page. When that fails...? AlbertCahalan 00:18, 11 May 2005 (UTC)

Is the Wikipedia entry non-standard? I don't understand how one part of Wiki can say one thing and yet when I try to apply it into another part, its wrong. Read the Joy of Cooking. Read any barbecue cookbook. Read about Mexican history (barbacoa). Go to a barbecue competition or restaurant. And Albert did not try to discuss anything with me, he only accused me of being wrong. I've conceded that barbecue can be taken to mean grilling, but to professional cooks and purists it means something else entirely. The biggest problem with the original page is it confuses both definations. If you mean barbecuing as in grillign high heat/fast cooking then delete the the 'popular in the Southern US' as this is popular the world over but if you mean barbecue as in ribs etc, then its slow cooked which necessarily requires indirect heat. I hope my latest attempt shows that I am willing to compromise AND that I really know what I'm talking about. <IP_ADDRESS> 07:44, 16 May 2005

 * Yes, the wikipedia entry is non-standard. I'm working to get it fixed. In any case, "grilling" means at least 3 different kinds of cooking. (double-sided frying, broiling, and all types of barbeque) So the grilling page needs to cover that. In general, it can direct readers elsewhere: Cookbook:Frying, Cookbook:Broiling, and Cookbook:Barbecuing. So I do insist that this page do that. I also insist that the barbeque instructions not disappear or get moved over here, but I might accept moving them to a different page. (they are somewhat specific to making beef burgers on a wood fire) DO NOT MOVE VIA CUT-AND-PASTE. Suggest a good name, and I'll move the instructions. All cooking uses indirect heat, except perhaps microwave (where the heat is generated in the food), so let's avoid that useless distinction. If you allow more than microwaving to be considered direct, then all forms of grilling and/or barbecuing are direct. AlbertCahalan 19:25, 16 May 2005 (UTC)

 * Your barbecue/grilling distinction fails because there is no place to draw the line. What would you call what I do with burgers? For brief moments, they may be in the flames. ("Grilling!" you may think) Often though, there are no flames at all and the burgers are bathed in smoke. They even get the reddish tint from carbon monoxide, just as is claimed by the "barbecue purists". So is it barbecuing then? Both? I have no trouble describing this, because I use the normal definition of barbecue. No matter what I do with the fire I'm barbecuing, which is a type of grilling. AlbertCahalan 16:27, 16 May 2005 (UTC)

 * Please sign posts in the future, using 4 tilde (squiggle, likely near your "1" key) characters. To you, it should look like ~ before you save the page. (you can see the result in the preview though) I signed your text for you; you should take care of it yourself. AlbertCahalan 16:27, 16 May 2005 (UTC)

Great job being an idiot. If you acutally knew what slow barbecuing is (which by your burger analogy you obviously don't), then you would not mistake burgers on a gas grill for ribs and pork on a pit over slow-burning wood. Once again, grilling is the general cooking of meat with open flame, while barbecue is specifically cooking food over a slow-burning flame for a long period of time. Haverton 20:59, 25 May 2005 (UTC)

 * Great job having a polite debate. I certainly don't use a gas grill; I cook over real chunks of mesquite wood. Sometimes they burn very slowly, with no flame and maybe lots of smoke, and sometimes they have flames. Outside your neck of the woods, barbecuing is normally fast and it is always considered a type of grilling. It might even involve a gas barbeque. AlbertCahalan 03:38, 26 May 2005 (UTC)

As a chef
Grilling to me is controlling the Mallard Reaction using direct heat. Even throwing a tortilla on an electric burner is grilling to me. --<IP_ADDRESS> 02:47, 9 September 2005 (UTC)

title: Cookbook talk:Grilling


text:
Talk:Debi Sue Voorhees

External links modified
Hello fellow Wikipedians,

I have just modified 1 one external link on Debi Sue Voorhees. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20140114233645/http://mistymoon.net/guests/deborah-voorhees/ to http://mistymoon.net/guests/deborah-voorhees/

Cheers.— InternetArchiveBot  (Report bug) 19:16, 9 December 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified one external link on Debi Sue Voorhees. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20140115095753/http://www.billyshakespearethemovie.com/ to http://www.billyshakespearethemovie.com/

Cheers.— InternetArchiveBot  (Report bug) 00:33, 17 January 2018 (UTC)

Unsourced claims removed
I removed the following from the article as it was unsourced:

 * After her acting career, Voorhees earned a Bachelors degree in Journalism. She worked as a literature, English, grammar, and journalism teacher in two high schools in Texas and New Mexico until she was subsequently fired from each school after her participation in Friday the 13th: A New Beginning, particularly her nude scenes, was discovered.

I'm not saying it's not true, I have no idea, but it seems pretty controversial (for her and for the supposed school districts) so per WP:BLP I took it out until someone can find reliable sources for it. 2603:7081:6D05:6231:81A2:DD5D:9A3F:3BF5 (talk) 18:08, 19 June 2021 (UTC)

title: Talk:Debi Sue Voorhees


text:
George Wallace (disambiguation)

George Wallace (1919–1998) was governor of Alabama and a candidate for president of the United States.

George Wallace may also refer to:

 * George Wallace (film), 1997 film based on the life of the Alabama governor
 * George Wallace (Georgia politician) (died 1881), African-American state senator in Georgia during reconstruction
 * George Wallace Jr. (born 1951), American politician, son of Governor George Wallace, and former Alabama State Treasurer
 * George Wallace (advocate) (1727–1805), Scottish jurist, son of Robert Wallace
 * George Wallace (author), American novelist
 * George Wallace (American football), one of Fordham University's earliest football coaches
 * George Wallace (American comedian) (born 1952), American actor, comedian and screenwriter
 * George Wallace (Australian comedian) (1895–1960), Australian comedian, vaudevillian, radio personality and actor
 * George Wallace (English cricketer) (1854–1927), English cricketer
 * George Wallace (New Zealand cricketer) (1913–1997), New Zealand cricketer
 * George Wallace (diplomat) (born 1938), Liberian foreign minister, 2006–2007
 * George Wallace, Baron Wallace of Coslany (1906–2003), British Labour MP for Chislehurst 1945–50, Norwich North 1964–74
 * George Wallace, Baron Wallace of Campsie (1915–1997), Scottish businessman and peer
 * George D. Wallace (1917–2005), American actor
 * George Leonard Wallace (1918–1968), Australian comedian, vaudevillian, television personality and actor
 * George Scott Wallace (1929–2011), British Columbia physician and politician
 * George W. Wallace (1872–1946), U.S. army officer
 * George E. Wallace (Virginia politician) (born 1938), mayor of Hampton, Virginia
 * George E. Wallace (North Dakota politician), North Dakota Tax Commissioner
 * Watty Wallace (George Walter Gordon Wallace, 1900–1964), member of the Queensland Legislative Assembly

title: George Wallace (disambiguation)


text:
Bullgill

 Bullgill is a hamlet in Cumbria, England.

Geography
It is located to the northeast of Dearham, 4.3 mi by road northeast of Maryport and 0.5 mi southeast of Crosby Villa. The River Ellen flows nearby.

History
Bullgill was developed as a mining community. The Ellen Pit coal mine was sunk in 1859.

A railway station was formerly located at Bullgill connecting it with Carlisle. It closed to passengers on 7 March 1960.

Governance
Bullgill, is part of the Workington constituency of the UK parliament. The current Member of Parliament is Mark Jenkinson, a member of the Conservative Party. The Labour Party has won the seat in every general election since 1979; the Conservative Party has only been elected once in Workington since the Second World War: in the 1976 Workington by-election.

For the European Parliament residents in Allonby voted to elect MEP's for the North West England constituency.

For Local Government purposes it is in the Cumberland unitiary authority area.

The village also has its own Parish Council; Crosscanonby Parish Council.

A Poem about Bullgill
This poem, attributed to Gordon Nicholl, describes the closure of Bulgill Colliery in about 1910. Original West-Cumbrian Version: "Bulgill's buggert marra Wukken out cum's fast If thou gits t'backshift in That cud be thee last

T'Powney's gone till Riser T'Ingins gone till t'seals Thompson's up afoort t'boss Fer pinchun six inch neals

Tyson's gone till Buthy Cass till Outerside Uncle Joe's at Number Fower An Tom's at Number Five

Bulgill's buggert marra Just a wa' o stean Divent ga 'till Buthy Thoo's better off at yam.

Ere we ga up t'clog trod In till t'Railway Pub Get thee wissel wet me lad See-un thou'll be on't club." Translation: "Bulgill Colliery is to close- The pillars are being robbed- Another backshift- And it could be the end.- The pit Pony has gone to Risehow- The loco is for sale- Mr. Thompson is on the carpet- For stealing six inch nails- Mr. Tyson is transferreed to Bertha Pit- Mr. Cass to Outherside Colliery- Uncle Joseph to Brayton Domain No. 4- And Tom to Brayton Domain No. 5- Bullgill Colliery is finished- We are looking at walls of stone- For Heaven's sake don't go to Bertha Pit- You will be better off at home- Here we go up the path- Into the Railway Inn- Have a good drink- You will soon be on Benefit.-"

title: Bullgill


text:
mæta

Etymology
From, from. Compare 🇨🇬, 🇨🇬, 🇨🇬.

Verb

 * 1)  to meet, to encounter
 * 2)  to confront, to face, to brave, to breast
 * 3)  to turn up, to show up, to come, to appear
 * 1)  to turn up, to show up, to come, to appear
 * 1)  to turn up, to show up, to come, to appear

Etymology
From, from.

Verb

 * 1) to measure
 * 2) to estimate

title: mæta


text:
Bill Blair

Bill Blair may refer to:

 * Bill Blair (American Association pitcher) (1863–1890), Major League Baseball player
 * Bill Blair (basketball) (born 1942), American basketball coach
 * Bill Blair (Negro Leagues pitcher) (1921–2014), Negro league pitcher
 * Bill Blair (politician) (born 1954), Canadian Minister and Member of Parliament and former Toronto Police Chief
 * Bill Blair (racing driver) (1911–1995), NASCAR Cup Series driver

title: Bill Blair


text:
Wikipedia:Articles for deletion/Moses Magnum

The result was merge to List of Marvel Comics characters: M.  MBisanz  talk 03:41, 29 September 2019 (UTC)

Moses Magnum

 * – ( View AfD View log  Stats )

Non-notable fictional character TTN (talk) 20:16, 21 September 2019 (UTC)
 * Note: This discussion has been included in the list of Fictional elements-related deletion discussions. TTN (talk) 20:16, 21 September 2019 (UTC)
 * Note: This discussion has been included in the list of Comics and animation-related deletion discussions. TTN (talk) 20:16, 21 September 2019 (UTC)

 * Keep: Significant coverage in scholarly literature. StAnselm (talk) 20:31, 21 September 2019 (UTC)
 * One source is not significant. That source itself is good, but not on its own. TTN (talk) 20:54, 21 September 2019 (UTC)

 * Keep or merge to List of Marvel Comics characters: M. BOZ (talk) 23:13, 21 September 2019 (UTC)
 * Delete: While StAnselm found a good source, I am afraid it is the only notability conferring source I can find. Rockphed (talk) 13:20, 24 September 2019 (UTC)
 * Merge to List of Marvel Comics characters: M. While there are not enough sources to justify an individual article, the one good source identified by StAnselm puts it above 99 percent of all the other characters on the bloated Marvel Character lists, and shows that he is one of the few characters that actually have justification to be included in them.  Rorshacma (talk) 15:15, 28 September 2019 (UTC)


text:
Talk:David Newman (politician)

External links modified
Hello fellow Wikipedians,

I have just modified 1 one external link on David Newman (politician). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20140714235544/http://pitblado.com/pdf/lawyers/36.pdf to http://pitblado.com/pdf/lawyers/36.pdf

Cheers.— InternetArchiveBot  (Report bug) 07:40, 8 December 2016 (UTC)

title: Talk:David Newman (politician)


text:
National Register of Historic Places listings in Montgomery County, Pennsylvania

This is a list of the National Register of Historic Places listings in Montgomery County, Pennsylvania.

This is intended to be a complete list of the properties and districts on National Register of Historic Places in Montgomery County, Pennsylvania, United States.

There are 159 properties and districts listed on the National Register in the county. Eleven sites are further designated National Historic Landmarks and one is designated a National Historical Park. Another three properties were once listed but have been removed.

Current listings

 * }

Former listings

 * }


text:
Kaja Kallas

Kaja Kallas (born 18 June 1977) is an Estonian politician and diplomat. She was the first female prime minister of Estonia, a role she held from 2021 until 2024, when she resigned in advance of her appointment as High Representative of the European Union for Foreign Affairs and Security Policy. The leader of the Estonian Reform Party since 2018, she was a member of parliament (Riigikogu) in 2011–2014, and 2019–2021. Kallas was a member of the European Parliament in 2014–2018, representing the Alliance of Liberals and Democrats for Europe. Before her election to Riigikogu, she was a lawyer specialising in European competition law.

Ancestry, early life and education
Kaja Kallas was born in Tallinn on 18 June 1977. Her father, Siim Kallas, served as chairman of the Bank of Estonia from 1991 to 1995, as prime minister of Estonia from 2002 to 2003, and as a European Commissioner from 2004 to 2014. Her mother, Kristi Kallas, née Kartus, is a physician. Kallas has an elder brother, Ülo Kallas, a financial executive.

Kallas' paternal great-grandfather, Eduard Alver (1886–1939), a lawyer, was the commander of the Estonian Defence League during the Estonian War of Independence from 1918 to 1920 and also served as the head of the country's police and the Internal Security Service.

During Operation Priboi on 25-28 March 1949, Kallas' mother, Kristi, six months old at the time, was deported to Siberia with her mother and grandmother. She was able to return to Soviet Estonia in 1959.

Apart from Estonian, Kallas patrilineally also has distant Latvian and Baltic German ancestry, as discovered by investigative journalists researching her father's ancestry shortly after his premiership.

Kallas attended primary school at the Tallinn Lilleküla Gymnasium and secondary school at the Tallinn Secondary School No. 7 (today the Tallinn English College). Kallas graduated from the University of Tartu in 1999 with a bachelor's degree in law. In 2007, Kallas began studying towards a Master of Business Administration (MBA) at the Estonian Business School (EBS), which she did not complete. She went on to obtain a one-year Executive Master of Business Administration (EMBA) from EBS in 2010.

Professional career
From 1996 to 1997, Kallas worked as an advisor to the director of the Vanemuine theatre in Tartu. Kallas became a member of the Estonian Bar Association in 1999, and an attorney-at-law in 2002. While training in European law, she briefly worked as a lawyer at the corporate law firms Courtois Lebel in Paris (March-April 2001) and Hannes Snellmann in Helsinki (October 2003). She became a partner in the law firms Tark & Co and Luiga Mody Hääl Borenius, where she headed the competition law department from 2008 to 2011. Kallas also worked as an executive coach at the Estonian Business School. In 2011, she was placed on inactive status as a member of the Estonian Bar Association.

Between 2003 and 2010, Kallas was a council member of several Estonian private and public limited companies: LHV-Seesam Varahaldus, Pakri Tuulepark, Viru-Nigula Tuulepark, Hiiumaa Offshore Tuulepark, Paldiski Tuulepark, Tooma Tuulepark, Roheline Ring Tuulepargid, Biofond and 4E Tehnoinvest. In 2008, Kallas was a board member of Nelja Energia.

From 2009 to 2010, Kallas was a board member of the Estonian Wind Power Association.

Member of the Estonian Parliament (2011–2014)
In 2010, Kallas joined the Estonian Reform Party. In the 2011 parliamentary elections she won a seat in the Riigikogu (for the Harju County and Rapla County constituency) receiving 7,157 votes. She was a member of the 12th Parliament of Estonia and chaired the Economic Affairs Committee from 2011 to 2014.

Member of the European Parliament (2014–2018)
In the 2014 European Parliament election in Estonia, Kallas received 21,498 votes. In the European Parliament, Kallas served on the Committee on Industry, Research and Energy and was a substitute for the Committee on the Internal Market and Consumer Protection. She was a vice-chair of the Delegation to the EU–Ukraine Parliamentary Cooperation Committee as well as a member of the Delegation to the Euronest Parliamentary Assembly and Delegation for relations with the United States. In addition to her committee assignments, Kallas was a member of the European Parliament (MEP) Intergroup on the Digital Agenda, and was also a vice-chair of the Youth Intergroup.

During her period in Parliament, Kallas worked on the Digital Single Market strategy, energy, and consumer policies, and relations with Ukraine. In particular, she defended the rights of small and medium-sized enterprises, maintaining that borders in the digital world hinder the emergence of innovative companies. She is a proponent of innovation and frequently emphasises that regulations cannot and must not hinder the technological revolution.

Kallas served as rapporteur for six reports: opinion on the ePrivacy Regulation, civil law rules on robotics, on the Annual report on EU Competition Policy, and on Delivering a New Deal for Energy Consumers, legislation on Custom infringements and sanctions, and the own-initiative report on the Digital Single Market. During her time in Parliament, she was also nominated as a European Young Leader (EYL40). At the end of her term, she was cited by Politico as one of the 40 most influential MEPs, and one of the most powerful women in Brussels, who was highlighted for her understanding of technological issues.

In November 2018, Kallas published her memoir MEP: 4 aastat Euroopa Parlamendis (MEP: Four Years in the European Parliament), in which she described her life and work in Brussels from 2014 to 2018.

Return to national politics (2017–2020)
On 13 December 2017, the Reform Party leader Hanno Pevkur announced that he would no longer run for the party leadership in January 2018, and suggested that Kallas should run instead. After considering the offer, Kallas announced on 15 December 2017 that she would accept the invitation to run in the leadership election. Kallas won the leadership election held on 14 April 2018 and became the first female leader of a major political party in Estonia.

In the 2019 Estonian parliamentary election on 3 March, the Reform Party led by Kallas received about 29% of the vote, with the ruling Estonian Centre Party taking 23%. The Centre Party managed to form Jüri Ratas' second cabinet with the conservative Isamaa party and the far-right EKRE, leaving the Reform Party out of power. On 14 November 2020, Kallas was re-elected as leader of the Reform Party at a Reform Party Assembly.

Prime Minister of Estonia (2021–present)
On 25 January 2021, after the fall of the Centre Party led cabinet with conservative parties, Kaja Kallas's first cabinet, a coalition with the Centre Party, was formed. In doing so, she became the first female prime minister in Estonia's history. During the latter half of 2021, the global energy crisis disrupted the Estonian economy; businesses were forced to temporarily shut down, while the public requested government aid to pay for the high electricity and heating prices. Kallas initially resisted calls for government aid, suggesting that the government should search for long-term solutions rather than handing out benefits, and that a free market should not require consistent government intervention to keep people afloat. The energy crisis nearly caused the collapse of the coalition government. Kallas observed in a speech that the high cost of natural gas coupled with the Russian invasion of Ukraine was driving the increase in energy prices, and that the green energy measures Estonia adopted limited what the government could do to handle the crisis. In January 2022, Kallas announced a 245 million euro plan to reduce the cost of energy from September 2021 to March 2022. The energy crisis impacted her popularity in Estonia.

On the eve of Russia's invasion of Ukraine in January 2022, Kallas said that the Nord Stream 2 natural gas pipeline was "a geopolitical project not an economic one" and urged that the pipeline be terminated. She also stated that Europe's dependence on Russian natural gas was a significant political problem. In January 2022, Kallas committed Estonia to donating howitzers to Ukraine to assist in its defence against a possible Russian invasion, pending German approval as the howitzers were originally purchased from Germany. When Germany delayed in giving an answer, Estonia sent American-made Javelin anti-tank missiles instead in the first weeks of February 2022. Following Russia's recognition of the Donetsk and Luhansk people's republics, Kallas demanded that the European Union introduce sanctions on Russia. Kallas was praised domestically for her leadership during the Russia-Ukraine crisis. Subsequently, her approval rating soared, making her Estonia's most popular politician.

After the Russian invasion of Ukraine started on 24 February 2022, Estonia along with other allies triggered Article 4 of NATO. Kallas pledged to support Ukraine with political and materiel support. By April 2022, 0.8% of Estonia's GDP per capita in military equipment had been handed over to Ukraine. Kallas has been praised both in Estonia and internationally as a leading pro-Ukrainian voice in the war, with the New Statesman calling her "Europe's New Iron Lady". She also strongly supported the admission of Ukraine to the European Union, saying that there was "a moral duty" to do so. In April 2022, she warned against "peace at any price" with Russia. On 3 June 2022, Kallas dismissed all Centre Party ministers, after the Centre Party had sided with the opposition to vote down the preschool education bill, that would have made teaching Estonian language mandatory in preschool. Kallas symbolically resigned on 14 July 2022, to form a new coalition with Social Democratic Party and Isamaa.

As prime minister, Kallas attracted international attention as a leader in efforts to support Ukraine during the Russian invasion, delivering more military equipment to Ukraine as a proportion of GDP per capita than any other country in the world. In September 2022, in the context of a plan by three other bordering nations to restrict Russian tourists, she said: "Travel to the European Union is a privilege, not a human right." She added that it was "unacceptable that citizens of the aggressor state are able to freely travel in the EU, whilst at the same time people in Ukraine are being tortured and murdered." In February 2023, Kallas was mentioned as a possible candidate to replace NATO Secretary-General Jens Stoltenberg following his expected retirement that same year. She rejected any peace agreement that would cede part of Ukrainian territory to Russia.

In March 2023, Kallas led the Reform Party to a decisive victory in the 2023 parliamentary election, increasing the party's seat count in the Riigikogu by three seats. Following the election result, Kallas negotiated a coalition government with Estonia 200 and the Social Democratic Party, and her third cabinet was sworn in on 17 April. In June 2023, the government passed a bill legalising same-sex marriage and adoption in Estonia. The bill came into effect on 1 January 2024, making Estonia the first Baltic state and country formerly occupied by the Soviet Union to legalise same-sex marriage and adoption.

Kallas is a transatlanticist and was frequently named as a potential candidate to succeed Jens Stoltenberg as Secretary General of NATO, a role she has expressed interest in.

Kallas condemned Hamas' actions during the 2023 Israel–Hamas war and expressed her support to Israel and its right to self-defence, but added that Israel "must do so in a way that spares innocent lives and adheres to the norms of international law." She said the conflict in the Middle East "is useful to those seeking to distract the free world from its support for Ukraine."

Husband's business scandal
In August 2023, the media reported that Kallas's husband, Arvo Hallik, had a 24.9% share in the transportation company Stark Logistics, which had continued to transport raw materials to Russia following the Russian invasion of Ukraine, despite Kallas having previously called for Estonian companies to cease operations in Russia. The company had generated approximately €1.5 million in revenue from providing a transport service to a company operating in Russia since the beginning of the invasion.

Kallas later admitted to her husband's share in the company, but denied wrongdoing on the part of herself or her husband and stated that the company's business in Russia was to assist an Estonian client, identified by the Estonian media as the company Metaprint, end its production in Russia, adding that "not a single euro, dollar or ruble" was spent in Russia as part of the activity. Stark Logistics seconded Kallas's claim that the company's dealings in Russia were to assist an Estonian client end their production in the country, and that their work did not contribute to the Russian economy in any way nor did it violate Estonian law, as Kallas's government had prohibited only state-owned companies from working with Russia. The Estonian media has separately reported that Metaprint sold €17 million worth of goods to Russia between the start of the invasion in February 2022 and November 2022. Hallik's business partner Martti Lemendik later admitted in the Estonian media that the company had sold over $32 million in goods on the Russian market between February 2022 and August 2023. The company also collaborated with sanctioned individuals, such as Polish-sanctioned Sergei Kolesnikov. Hallik later stated that he would sell his shares in Stark Logistics.

Tanel Kiik of the opposition Centre Party noted that "the scandal has severely damaged the reputation of the Estonian state", while President of Estonia Alar Karis stated his worry for seeing "the credibility of the Estonian state called into question, in its relations with its allies" and fears that it "creates a precedent for the future and affects the reputation of Estonian democracy". Two opinion polls conducted by Norstat and Turu-uuringute AS showed that 57% and 69% of respondents, respectively, thought Kallas should resign due to the scandal. Kallas continued to refuse to resign in September 2023, calling the controversy a "witch-hunt" by political opponents.

Russian arrest warrant
On 13 February 2024, Russian officials stated that Kallas had been put on the Russian interior ministry's register of people wanted on criminal charges, reportedly related to the removal of Soviet World War II monuments in Estonia. Kallas is the first head of government known to be added to the register by Russian authorities. Kallas dismissed the warrant as a "scare tactic" by Russia.

Nomination as High Representative of the Union for Foreign Affairs and Security Policy
On 28 June 2024, Kallas was nominated to become High Representative of the Union for Foreign Affairs and Security Policy. A confirmatory vote by the European Parliament is expected to take place in July. She formally resigned as prime minister on 15 July, but will remain in office pending the creation of a new government.

Personal life
From 2002 to 2006, Kallas was married to Roomet Leiger. She lived together with former finance minister and businessman Taavi Veskimägi. Kallas and Veskimägi have one son; they separated in 2014. Kallas is the mother of a second son and one daughter. In 2018, she married Arvo Hallik, a banker and investor. Hallik has two children from a previous relationship.

Apart from her native Estonian, Kallas is fluent in English, Finnish, Russian and French.

State decorations

 * ROU_Order_of_the_Star_of_Romania_1999_GCross_BAR.svg Grand Cross of the Order of the Star of Romania (2021)
 * Royal Order of the Polar Star (1748-1975) - Commander Grand Cross.svg Commander Grand Cross of the Royal Order of the Polar Star (Sweden, 2023)
 * Order of Prince Yaroslav the Wise 1st 2nd and 3rd Class of Ukraine.png Order of Prince Yaroslav the Wise, 2nd class (Ukraine, 2023)

Awards and prizes

 * Transatlantic Leadership Award awarded by the Center for European Policy Analysis (2022)
 * Grotius Prize awarded by Policy Exchange (2022)
 * European Prize for Political Culture awarded by the Hans Ringier Foundation (2022)
 * International Prize awarded by the Friedrich August von Hayek Foundation (2022)
 * Jeane J. Kirkpatrick Award awarded by the International Republican Institute (2023)
 * Marion Dönhoff Prize for International Understanding and Reconciliation awarded by the ZEIT Foundation Ebelin and Gerd Bucerius (2023)
 * International Lord Byron Prize awarded by the Society for Hellenism and Philhellenism, in collaboration with the Academy of Athens (2023)
 * Walther Rathenau Award awarded by the Walther Rathenau Institut (2024)

Other activities
Since 2020, Kallas has been a member of the Board of Trustees of the Friends of Europe. Additionally, she is a member of the European Council on Foreign Relations, an advisory board member of the Women Economic Forum, and a patron of the Model European Union Tallinn. She is also a mentor of the European Liberal Youth, a member of the European Young Leaders, a MEP ambassor of Erasmus for Young Entrepreneurs, a member of the MEP Library Lovers Group, a political member of the European Internet Forum, a member of the extended board of the European Forum for Renewable Energy Sources, a member of the Global Young Leaders, a member of the Women Political Leaders, and a MEP ambassador of the European Entrepreneurship Education Network.

title: Kaja Kallas


text:
Computer Architecture Lab/Winter2006/PoettschacherRosenblattlWolf/ThreeMicroDiscussion

Atmel AVR
AVR stands for „Advanced Virtual RISC“. The AVR is a 8-bit RISC architecture which was designed by the 2 norwegian students Alf-Egil Bogen and Vegard Wollan. It is generally used in microcontrollers.

Details
The AVR uses a Harvard architecture with separate memories and buses for program and data. It implements a single level pipelining. Most operations are performed in a single clock cylce.

Like other RISC architectures, the AVR offers 32 8-bit general purpose working registers (R0 – R31) with single cycle access time. This allows single-cycle ALU operations. In a typical ALU operation, two operands are output from the Register File, the operation is executed, and the result is stored back in the Register File – in one clock cycle.

Six of the general purpose working registers can be used as three 16-bit indirect address register pointers for Data Space addressing

The AVR offers conditional and unconditional jump and call instructions, with which the whole address space can be addressed directly.

Instruction set
The AVR’s instruction set is register-register type. It can be divided into 5 categories.
 * ARITHMETIC AND LOGIC INSTRUCTIONS
 * BRANCH INSTRUCTIONS
 * DATA TRANSFER INSTRUCTIONS
 * BIT AND BIT-TEST INSTRUCTIONS
 * MCU CONTROL INSTRUCTIONS

Giving a total of 130 instructions.

The AVR uses two-address format, so the result of the operation performed overwrites one of the operands. Most AVR instructions have a single 16-bit word format and most of them are executed in a single clock cycle.

General Purpose Register File
The Register File is optimized for the AVR Enhanced RISC instruction set. To achieve the required performance and flexibility, the following input/output schemes are supported by the Register File: Most of the instructions operating on the Register File have direct access to all registers.
 * One 8-bit output operand and one 8-bit result input.
 * Two 8-bit output operands and one 8-bit result input.
 * Two 8-bit output operands and one 16-bit result input.
 * One 16-bit output operand and one 16-bit result input.

DEC Alpha
DEC Alpha is a 64-Bit RISC load-store von Neumann architecture, used in PCs, Workstations and Servers until further development was cancelled in 2003. In contrast to the others, the Alpha architecture is not designed for microcontrollers, so it has no integrated peripherals (e.g. like timers/counters).

Details
Like other non-embedded microprocessors, Alpha is a von Neumann architecture without separation of data and program bus. It has 29 general-purpose integer registers (R0-R28), 31 general-purpose floating-point registers (F0-F31), one data frame pointer register (R29) one stack pointer register (R30) and two special registers (R31 and F31) reading always as integer and floating-point zero. All registers and busses are 64 bit wide, allowing to address up to 16 exabyte of memory. The floating-point registers follow the IEEE 754-1985 format for single and double precision.

A feature of the Alpha architecture is the lack of a program status register. All instructions operate on registers only, allowing instruction parallelisation without the bottleneck of a single flag register. Together with 7-13 pipeline steps (version-dependent) and the ability of out-of-order execution in version EV6 and above, Alpha was one of the fastest systems available until further development was cancelled.

Implementations of Alpha stared with version EV4 (developed by Digital Equipment Corp) in 1992 running at 192 MHz and ended with Version EV7z (developed by HP) in 2002 running at up to 1300 MHz.

For details, see http://en.wikipedia.org/wiki/DEC_Alpha and The Alpha Architecture Handbook

Instruction Set
Every instruction is 32 Bits wide and exist in four flavours, described below:

PALcodes
The Priviledged Architecture Library (PAL) is an operating-system-dependent set of subroutines, callable by software or hardware.

Branches
Depending on the value of the register Ra, a branch is executed according to the displacement parameter.

Memory Access
One of the registers Ra or Rb is the base address of the memory accessed, possibly extendend by the Displacement. The other register is either loaded with the value of the memory address or stored to the memory address.

Operations
Alpha uses three-address format, so the three registers Ra, Rb and Rc are accessed. All registers used have to be either integer registers or floating-point registers.

Infineon TriCore
The Infineon TriCore architecture is very complex and has a huge feature set, which includes
 * 32-bit architecture
 * RISC with DSP instructions
 * Little-endian byte ordering
 * 4-GByte virtual or physical data, program, and input/output address spaces
 * Full-featured memory management system
 * Memory protection
 * 16-/32-bit instructions for reduced code size
 * Fast automatic context switching between two tasks
 * Multiply-accumulate unit
 * Saturating integer arithmetic
 * Bit handling
 * Byte and bit addressing
 * Packed data operations
 * Zero-overhead loop
 * Low interrupt latency
 * Flexible interrupt prioritization scheme
 * Flexible power management

Currently, there exist two versions of the TriCore architecture, we will deal with version 1.3, which is also used in the current microcontrollers like the TC1796.

All TriCore microcontrollers have large on-chip memory blocks of RAM, ROM, DRAM, OTP, FLASH of different types.

Details
The architecture is mainly a harvard architecture, although the busses are not strictly separated and have bridges for flexible data exchange (with performance penalty). As example we looked at the TC1796, the biggest and most powerful microcontroller of the TriCore family.

The CPU has a 64 bit wide bus to the program memory interface (PMI) which has 48 kb of scratch pad ram and 16 kb of instruction cache which runs with full cpu speed (up to 150 MHz). Both memories are optionally parity protected. Over the program local memory bus the PMI is connected to the program memory unit as well as to the data memory unit and the external bus unit. The program local memory bus also runs at full cpu speed and is 64 bit wide.

The program memory unit hast 64 bit wide access to the 2 MB program flash as well as to the 128 KB data flash, 8 KB boot ROM and 8 KB test ROM. All flash ROMs are ECC protected using 8 ECC bits for each block of 64 bits of data, enabling correction of one bit error and detection of two bit errors per block.

Two 64 bit wide buses connect the CPU with the data memory interface (DMI) which has 56 KB of local data RAM and 8 KB of dual ported ram which is connected to the second master channel of the onboard DMA controller. Both memories are optionally parity protected. Via the data local memory bus, the DMI can access the data memory unit which has 64 KB of SRAM and 16 KB of Stand-by RAM. Also, both are optionally parity protected.

Internal peripherals are connected to the system peripherals bus and can be accessed either by the CPU slave interface or the data local memory bus over the LFI-Bridge. Both, the interface and the bridge can be master of the bus as well as the first master channel of the onboard DMA controller. The second master channel of the DMA controller is connected to the remote peripheral bus which connects additional onboard peripherals and the dual ported ram of the DMI. The system peripheral bus and the remote peripheral bus run with the system clock, which runs at the same speed or at a fraction of the CPU speed. The maximum speed is 75 MHz.

For details, see http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-64423&programId=33110&programPage=%2Fep%2Fprogram%2Fdocument.jsp&pageTypeId=17099

Instruction set
The instruction set splits up into eight categories with a total of more than 150 instructions.
 * Branch
 * Arithmetic (Integer, DSP and SIMD Packed Arithmetic)
 * Load/Store
 * Comparison
 * System
 * Bit Manipulation
 * 16-Bit Subset
 * Address Arithmetic and Address Comparison

Most instructions are 32 bit wide, some are 16 bit. Most instructions have two or three operands.

CPU internals
The CPU has 16 32 bit data registers and 16 32 bit address registers as well as three status and program counter registers. All registers are also refered to be the context of the running task and can be saved to and loaded from the local data ram for context switching. There exist shadow registers to enable fast context switching.

Most instructions are executed within one CPU cycle, some within 2 or 3 cycles. Branches are executed within 1, 2 or 3 cycles, depending on the branch prediction.

Pipelines
Instructions are fetched by the instruction fetch unit which directs the instruction to the appropriate pipeline. The three pipelines are: The integer and the load/store pipeline have four stages (fetch, decode, execute and write-back), the loop pipeline has two stages (decode and write-back). All pipelines work in parallel, enabling three instructions to be executed within one clock cycle.
 * Integer pipeline
 * Load/store pipeline
 * Loop pipeline


text:
File:FrameForgeSBTDS4.jpg

Used with the WikiU Film School Lesson on how to create 3D storyboards with FrameForge 3D Studio Demo Version.

title: File:FrameForgeSBTDS4.jpg