text:
In the previous chapter, you saw how MySQL's date and time datatypes can save storage space—50% or more over storing dates as strings—but that's not the only reason for using them. One aspect of applications programming that's often troublesome is working with dates. Different programming languages have radically different ways of representing dates and performing date calculations; users and clients have different requirements for how they're displayed. By leveraging MySQL functions that are associated with DATE, TIME, and DATETIME values, you can minimize and sometimes even eliminate many of these problems.
First, let's look at how to get the current date and time. MySQL supports all of the standard SQL functions for this, as well as several others, as shown in Table 4-3.
Table 4-3. Current Date and Time Functions Supported by MySQL
DESCRIPTION Current date in YYYY-MM-DD format (server time)
Current time in HH:MM:SS format (server time)
Current timestamp in YYYY-MM-DD HH:MM:SS format (server time)
Current timestamp in Unix format (seconds elapsed since 1970-01-01 00:00:00) (server time)
Current UTC date in YYYY-MM-DD format
Current UTC time in HH:MM:SS format
Current UTC timestamp in YYYY-MM-DD HH:MM:SS format
* SYSDATE() is supported to provide compatibility with Oracle.
** The UTC functions were added in MySQL 4.1.1.
Note that functions expecting a TIME value will generally accept DATETIME values while ignoring the date part. Functions that expect a DATE value will generally accept a DATETIME value and ignore the time portion of the value.
It's somewhat customary in MySQL to use NOW(), CURDATE() , and CURTIME() , since these are short and convenient. However, if compatibility with other databases is an issue, you should use the standard SQL functions instead. To convert from a Unix-style timestamp to date/time format, use the FROM_UNIXTIME() function.
If you call any functions returning the current date and/or time in the same query, they will always return the same date and/or time.
Date and Time Formatting and Extraction
If your application doesn't need to support multiple locales or languages, you can perform most, if not all, of your date formatting in your queries using the DATE_FORMAT() function, which takes this form:
DATE_FORMAT(date, format)
where date is a date, and format is a string containing one or more format specifiers and optional additional punctuation marks. Table 4-4 shows a partial listing of the available format specifiers.
Table 4-4. Some Format Specifiers for DATE_FORMAT() and Date Arithmetic Functions
Three-letter day of week (Sun, Mon, Tue, and so on)
Three-letter name of month ( Jan, Feb, Mar, and so on)
Month number (0–12)
Day of month with ordinal suffix (0th, 1st, 2nd, 3rd, and so on)
Two-digit day of month (00–31)
Day of month (0–31)
Microseconds (000000–999999)
Two-digit hour (00–23)
%h or %I
Two-digit hour (01–12)
Minutes (00–59)
Day of year (001–366)
Hour (0–23)
Hour (1–12)
Full month name ( January, February, March, and so on)
Two-digit month number (00–12)
12-hour time in HH:MM:SS XM format
%S or %s
Seconds (00–59)
Table 4-4. Some Format Specifiers for DATE_FORMAT() and Date Arithmetic Functions (Continued)
FORMAT 24-hour time in HH:MM:SS format
Week of year (00–53), where Sunday is the first day of the week
Week of year (00–53), where Monday is the first day of the week
Full day of week (Sunday, Monday, Tuesday, and so on)
Day of the week (0–6, where 0=Sunday)
Four-digit year
Two-digit year
*These specifiers return the names of days and months in English.
The following are a few examples of formatting dates.
TIP If you need to return only a formatted time, you can also use the TIME_FORMAT() function. It accepts any of the time-related format specifiers shown in Table 4-4.
You can use practically any punctuation you like in formatting dates: commas, dashes, slashes, spaces, and so on. However, you cannot use alphanumeric characters except as part of a format specifier. In addition, you can return a date, time, or date/time value as a number with no formatting whatsoever, simply by forcing it to be evaluated in a numeric context. This will work with any of the functions shown in Table 4-3, as shown in the following example.
Formatting dates can be even easier in MySQL 4.1.1 and above, using the GET_FORMAT() function. This function returns format strings for a number of locales:
GET_FORMAT(DATE|TIME|DATETIME, locale)
The locale argument can take one of several predefined values: 'EUR' , 'USA' , 'JIS' , 'ISO' , and 'INTERNAL' . GET_FORMAT() can be used in place of a format string wherever one is applicable. Here are some examples:
The SUBDATE() function employed in the second example is used to subtract dates, as discussed in the "Date Arithmetic" section later in this chapter.
You can also obtain the various parts of a date, time, or datetime as a number using the functions shown in Table 4-5.
CAUTION The WEEK() function exhibits incorrect behavior in MySQL versions previous to 4.0, where the mode argument is the default (0). See the MySQL documentation for details. We suggest that you use WEEKOFYEAR() instead if it's available to you (MySQL 4.1.1 and above).
Table 4-5. Functions Returning Portions of Date, Time, or Date/Time Values
VALUE RETURNED Name of the day of the week (English)
Day of the month (DAY() was added in MySQL 4.1.1)
Number of the day of the week (1=Sunday, 7=Saturday)
Day of the year as a number
Hours portion of the time (added in MySQL 4.1.1)
Minutes portion of the time
Month portion of the date (1=January)
Name of the month (in English); if the date holds a 0 for the month, this function returns NULL
Quarter of the year (1–4)
Seconds from time
Time portion of a date/time (added in MySQL 4..1.1)
Week of the year (1–53)
Day of the week (0=Monday, 6=Sunday)
Week of the year, the week reckoned as beginning on Monday (added in MySQL 4.1.1)
Four-digit year (1000–9999)
* The WEEK() function takes an optional second mode argument. The behavior of this function also changed significantly in MySQL 4.0; see the MySQL Manual for details.
Another means of extracting portions of dates and times is to use the EXTRACT() function, which takes this form:
EXTRACT(type FROM date)
It returns a number corresponding to the part of the date argument specified by type. The type argument is the name of one of the following units of time: MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR. MICROSECOND was added in MySQL 4.1.1; WEEK and QUARTER were added in MySQL 5.0.0. (The date argument is a date or date/time value in standard format.) Here are some examples:
If a time value is missing when you use EXTRACT() , it returns 0.
In addition, the following compound types are permitted: MINUTE_SECOND, HOUR_SECOND, HOUR_MINUTE, DAY_SECOND, DAY_MINUTE, DAY_HOUR, and YEAR_MONTH. Each of these actually specifies a complete set of values; that is, any values that would normally be expected are filled in. For example, if you use HOUR_SECOND for the type, MySQL returns the hours, minutes, and seconds as a number.
MySQL 4.1.1 and above also supports these compound types, which include microseconds: SECOND_MICROSECOND, MINUTE_MICROSECOND, HOUR_MICROSECOND , and DAY_MICROSECOND. These also fill in the missing units from the range, as in this example:
This returns the value 151535250104528.
NOTE All of the type specifiers mentioned in this section can also be used with date arithmetic functions such as DATE_ADD(). See the "Date Arithmetic" section later in this chapter.
{mospagebreak title=Date and Time Conversion Functions}
MySQL also has some handy date and time conversion functions:
FROM_DAYS(days ): Takes a number of days since 0000-00-00 and returns a date in YYYY-MM-DD format. The minimum value accepted by this function is 366, which yields '0001-01-01' ; however, you should not use this function for dates preceding the advent of the Gregorian calendar (1582 in Western Europe; 1917 in Russia) in any case, as it does not take the conversion from Julian to Gregorian reckoning into account.
FROM_UNIXTIME(unix_timestamp[, formatstring]): Takes a Unix timestamp and returns a date/time formatted according to a formatstring using the same format specifiers as the DATE_FORMAT() function (see Table 4-4); the format defaults to standard Unix date/time format.
MAKEDATE(year, day): Takes a year and a day of that year and returns a date in Unix format. Note that day may be greater than 366 and MySQL will calculate the year accordingly in the return value; for example, MAKEDATE(2003, 366) returns '2004-01-01' .
MAKETIME(hours, minutes, seconds): Returns a time in standard format. Unlike MAKEDATE(), passing out-of-range values to this function will result in a NULL value. (Added in MySQL 4.1.1.)
SEC_TO_TIME(seconds): Takes a number of seconds and returns a time in standard Unix (HH:MM:SS) format.
STR_TO_DATE(datestring, formatstring): The inverse of DATE_FORMAT(); takes a formatted datestring and formatstring (using the specifiers for DATE_FORMAT() ) and returns a date or date/time in standard format. (Added in MySQL 4.1.1.)
TIME_TO_SEC(hours, minutes, seconds): Takes a time in HH:MM:SS format and returns a number of seconds. If either the minutes or seconds value is greater than 59, the function returns NULL . The upper limit for the hours argument is at least 1021.
TO_DAYS(date): The inverse of FROM_DAYS(); takes a date string in Unix format and returns the number of days since 0000-00-00. Like FROM_DAYS(), this function is not reliable for dates prior to the adoption of the Gregorian calendar in the sixteenth century.
UNIX_TIMESTAMP(date): Returns a Unix timestamp for a DATE or DATETIME value; can also accept an integer representing a date in YYYYMMDD format. Note that the returned value is an unsigned integer. Out-of-range dates will return 0; the year must be between 1970 and 2037 inclusive.
Date Arithmetic
You have two choices when it comes to performing date arithmetic in MySQL:
- Converting dates and times into a common unit before performing the calculation. This isn't that hard to do, and there are times—for instance, when making comparisons in a WHERE clause—when it's desirable. However, when you're interested in obtaining a nicely formatted final result, it can be quite cumbersome.
- Using the INTERVAL operator alone or in conjunction with the DATE_ADD() and DATE_SUB() functions. This is generally what you want to do when you need to pass the results of date calculations back to the application. The advantage here is that MySQL automatically returns the results in standard date, time, or datetime format, which can save you a lot of overhead.
Let's look at an example illustrating the first option. Suppose our firm's billing department wants a report of accounts that have unpaid orders that are more than three months old. We need to extract this information from an orders table, a partial definition of which might be as follows:
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
acct_id INT UNSIGNED NOT NULL,
order_date DATE NOT NULL,
order_amt DECIMAL(8, 2) NOT NULL,
last_pmt_date DATE NOT NULL,
order_balance DECIMAL(8, 2) NOT NULL
For purposes of this set of examples, we'll ignore the possibility that any negative amounts might be stored in the order_amt or order_balance columns due to refunds or other adjustments. Also, we won't worry about creating any indexes or the fact that this does not represent a fully normalized database schema, since we should really have a separate payments table.
NOTE In this first example, we also assume that when the order is placed, the last payment date is set to the same value as the order date. The reason for this is that TO_DAYS('0000-00-00') returns NULL .
We need to find all the records for which the last payment date is at least 120 days in the past, and for which there remains an unpaid balance. The unpaid balance part is simple enough—we'll just need a balance > 0 constraint in the WHERE clause. To determine whether a date is more than 120 days in the past, we can use the TO_DAYS() function to convert both the date column and the current date into numbers of days, subtract, and then compare the difference to 120. The resulting query might look something like this:
SELECT acct_id, SUM(balance) AS total
FROM orders
WHERE balance > 0
AND TO_DAYS(CURRENT_DATE) – TO_DAYS(last_pmt_date) > 120
GROUP BY acct_id;
We've used the SUM() function with a GROUP BY clause in order to produce a listing with one entry per delinquent account, with the total past due for all orders made by that account.
NOTE Beginning with MySQL 4.1.1, you can also use the DATE_DIFF() function to rewrite TO_DAYS(CURRENT_DATE) – TO_DAYS(last_pmt_date) > 120 as DATE_DIFF(CURRENT_DATE, last_pmt_date) > 120 .
Using data from the same orders table, we want to do a weekly billing for all new orders from the previous week and in each case show a due date 30 days from the date of the order. We won't worry about whether there's a balance showing on the account, only whether an order was placed in the last seven days. Using the INTERVAL operator makes this much easier than you might think:
SELECT acct_id, SUM(balance) AS total,
MAX(order_date) + INTERVAL 30 DAY AS due_date
FROM orders
WHERE order_date + INTERVAL 7 DAY >= CURRENT_DATE
GROUP BY acct_id;
Alternatively, depending on the exact requirements, we might be able to use this:
SELECT acct_id, SUM(balance) AS total,
MAX(order_date) + INTERVAL 1 MONTH as due_date
FROM orders
WHERE order_date + INTERVAL 1 WEEK >= CURRENT_DATE
GROUP BY acct_id;
As we indicated earlier, we can also use INTERVAL in conjunction with MySQL's date arithmetic functions:
DATE_ADD(date, INTERVAL expression type) DATE_SUB(date, INTERVAL expression type)
DATE_ADD() returns the date obtained by adding the interval specified by expression type to date. The expression is simply any legal MySQL expression that evaluates to a number. The value used for date can be any valid DATE, TIME, or DATETIME value. DATE_SUB() does the same calculation, except that it returns the date obtained by subtracting the specified interval. In all of these cases, the type argument is any of the values that can be used with EXTRACT() (see Table 4-5). The following are some examples of using the date arithmetic functions.
Synonymous with these functions are ADDDATE() and SUBDATE(), whose arguments follow the same rules.
As you can see from the second query in the preceding examples, there's nothing wrong with using compound type specifiers with these functions, as long as you observe the rules explained in our earlier discussion of the EXTRACT() function.
Should you choose ADDDATE() and SUBDATE() over DATE_ADD() and DATE_SUB()? In many cases, it doesn't make any difference; however, beginning with MySQL 4.1.1, ADDDATE() and SUBDATE() have been enhanced somewhat with a simplified alternative syntax when working with numbers of days:
ADDDATE(date, days)
SUBDATE(date, days)
Here are a few examples:
This shorthand notation is not available with DATE_ADD() and DATE_SUB() .
So, as you can see, quite a lot of the work required for date calculations, conversions, and even representations can be handled in queries rather than in application code. Your time spent in learning these and making use of them will generally be well spent.
{mospagebreak title=Other MySQL Functions}
In this section, we'll discuss a few miscellaneous functions that don't fit in very well elsewhere, but which you may find useful in your quest to replace program logic with SQL logic for optimization purposes.
How Many Rows Actually Matched?
Sometimes when you've used a LIMIT clause in a SELECT query, it's also handy to know how many rows would have been returned had the LIMIT not been used. In order to do this, first execute the query using the SQL_CALC_FOUND_ROWS option, followed by a SELECT FOUND_ROWS() query. The second query will return the number of all rows meeting the conditions set in the query, without the LIMIT clause.
For example, when displaying a heading such as "Displaying 1 through 10 of 22,052 records," this approach is often faster and less cumbersome than writing a separate query using the COUNT() function.
IP Address Conversion
The INET_ATON() and INET_NTOA() functions convert an IP address string in dotted-quad format to an integer and back again.
Often, you need to keep IP addresses in logs in your applications. These two functions let you save a bit of space while doing so, since an IP address stored as a string requires at least 8 bytes of storage (and as many as 16 bytes), but when converted to an integer, it takes up 8 bytes and 8 bytes only.
What was the Last ID Inserted?
This LAST_INSERT_ID() function returns the last value generated for an AUTO_INCREMENT column for the current connection. It can be useful when inserting records into linked tables. For example, suppose that we've just accepted an order from a new customer, so that we need to insert a new record into a customers table and then a related record into an orders table. Assuming that the customerid column has the AUTO_INCREMENT modifier applied to it in the table definition, we could accomplish this like so:
INSERT INTO customers (customerid, lastname, firstname)
VALUES (", 'Smith', 'William');
INSERT INTO orders (orderid, customerid, orderdate)
The value returned by LAST_INSERT_ID() persists for the lifetime of the connection, so we could have done other things between the first INSERT query and the second without altering what was inserted into the customerid column of the new record in the orders table.
TIP The value returned by LAST_INSERT_ID() is exclusive to each connection, and it's not affected by inserts performed by other connections, even on the same tables. In other words, concurrency is never an issue when using this function.
User Variables
It's a common programming practice to store values returned from queries in the application space for reuse. However, this can often be done within MySQL itself by means of user variables. A user variable (identified by a leading @ sign) can contain any scalar value and lasts for the lifetime of the current connection. It can be named using any combination of alphanumeric characters and may include the $ (dollar sign), _ (underscore), and . (period) characters.
You have two options for setting the value of a user variable:
- The SET statement, which simply takes the form SET @varname = value;. value can be any legal MySQL expression that evaluates to a scalar value.
- Within queries, you can use @varname:=value . In this case, the expression used for value can also include one or more column names.
Once the value of a user variable is set, you can use it in any expression. Here is an example that works in MySQL 4.1.1 and newer:
A user variable may hold any scalar type, including integers, floating-point numbers, strings, and dates. You can set a user variable's value using an expression containing other user variables, as well as values derived from other functions.
CAUTION Never try to set a user variable and then use its value in a GROUP BY, ORDER BY, or HAVING clause in the same statement. The results of such a query are unpredictable.
Notice that you're not limited (as is sometimes imagined) to setting user variables in SELECT queries, as you can see in the next example.
Unfortunately, in web applications, you cannot preserve values between pages by means of MySQL user variables, because each new page load creates its own connection. Even if you use persistent connections, you're almost certain to get the value for a user variable of the same name that was set using a different connection (or a null value in the case where a new connection was established). MySQL won't let you choose a connection identifier, nor can you create or set arbitrary global variables. Even so, user variables can still be useful for multiple queries within the same page and, as you'll see in the example in the next section, for aliasing columns and intermediate results within queries where you can't use real aliases.
{mospagebreak title=Branching: Making Choices in Queries}
Branching is obviously an area with a wealth of potential when it comes to replacing programming logic with SQL logic. So, in this section, we present some useful MySQL branching methods with this goal in mind.
No programming or scripting language would be very useful if it didn't provide a way to execute different instructions depending on the outcome of a test condition, such as whether one value is greater than another. MySQL is similar in this regard. It has four flow-control operators that you can use to choose between values based on how one or more conditions are evaluated: IF(), IFNULL(), NULLIF(), and CASE .
True/False Branching with IF()
The IF() operator has the following syntax:
IF(test_expression, true_result, false_result)
The IF() operator takes three expressions as arguments. If test_expression evaluates as true (or 1), than it returns true_result; otherwise, false_result is returned. Here is a fairly simple example:
Let's look at a slightly more complex scenario. Suppose as part of an e-commerce web site, we have a products table defined in part like this:
CREATE TABLE products (
Product_id INT AUTO_INCREMENT PRIMARY KEY,
product_price DECIMAL(6, 2),
product_weight DECIMAL(5, 2)
As part of the checkout process, we need to determine shipping according to the following conditions: if the price of a product is greater than $100 or if the weight of the product is less than 500 grams (0.5 kg), then no charges for shipping are added; otherwise, we add a shipping charge of $4.50 per kilo for any weight in excess of 500 grams.
SELECT @p:=product_price AS p, @w:=product_weight AS w,
@s:=IF(@p > 100.00 OR @w > 0.5, 0, @w * 4.50) AS s, FORMAT(@p + @s, 2) AS t
FROM products
WHERE product_id=productid;
When we test this with a bit of sample data, here's the result:
We employed some user variables to get around the problems that arise when trying to use column aliases to define other columns in the same query.
Null-based Branching with IFNULL()
The IFNULL() operator has the following syntax:
IFNULL(expression1, expression2)
The way the IFNULL() function works may seem a bit counterintuitive: I f expression1 is not NULL, then it is returned; otherwise, expression2 is returned. You could express the same logic using IF() and NOT IS NULL:
IF(NOT IS NULL expression1, expression1, expression2 )
For example, consider an orders table for which a partial definition might be like this:
CREATE TABLE orders (
orderid INT AUTO_INCREMENT PRIMARY KEY,
acctid INT NOT NULL,
orderdate DATE NOT NULL
shipdate DATE NULL
To produce a list of recent orders (say within the past 30 days) showing which ones have been and haven't yet been shipped, we could use something like this:
SELECT orderid, acctid, IFNULL(shipdate, 'PENDING') AS Shipped
FROM orders
WHERE orderdate >= SUBDATE(CURRENT_DATE, INTERVAL 1 MONTH);
Expression Relation-based Branching with NULLIF()
The NULLIF() operator has the following syntax:
NULLIF(expression1, expression2)
This function tests the relation expression1 = expression2 and if the result is true (1), then the function returns NULL; otherwise, it returns expression2. This could also be written as the following:
IF(expression1 = expression2, NULL, expression2)
or, as you'll see shortly, like this:
CASE WHEN expression1 = expression2 THEN NULL ELSE expression2 END
The NULLIF() function may not prove to be as efficient a method as some others in many circumstances. This is because if expression1 and expression2 are equal, then expression2 will actually be evaluated twice.
CASE-based Branching
The CASE structure can be used to test an expression against one or more other expressions in a series and to return one of any number of different values based on the outcome. It works in a manner similar to that of the if … then … else … construct found in most programming and scripting languages.
There are two different versions of CASE .
Multiple Conditions with CASE
One version of CASE is as follows:
CASE WHEN condition THEN result
[ELSE else_result | WHEN condition2 THEN result2
[ELSE else_result2 | WHEN…] ]
In the simplest instance, the condition is tested, and if true, then the result following the THEN keyword is returned. If condition is not true, then NULL is returned. You can override the latter behavior by including an ELSE clause; in this case, if condition is false, then the else_result expression value is returned instead of NULL . For example, we could rewrite the example we used for IFNULL() like this:
SELECT orderid, acctid,
WHEN shipdate IS NULL
ELSE shipdate
END AS Shipped
FROM orders
WHERE orderdate >= SUBDATE(CURRENT_DATE, INTERVAL 1 MONTH);
This is a bit more verbose than the IFNULL() version, but it's also easier to read, particularly with the line breaks and indentation we've added here.
We could make the example a bit more selective by introducing additional WHEN … THEN … clauses. Using something like the following, we can return "ORDER PENDING" if no shipping date has yet been set, "ORDER SHIPPED ON … " plus the shipping date if the shipping date is in the past, "FUTURE" if the shipping date is in the future, and "SHIP TODAY" if the shipping date matches today's date:
SELECT orderid, acctid, @s := shipdate,
WHEN @s IS NULL THEN 'ORDER PENDING'
WHEN @s < CURRENT_DATE THEN CONCAT('ORDER SHIPPED ON ', @s)
WHEN @s > CURRENT_DATE THEN 'FUTURE'
END AS Shipped
FROM orders
WHERE orderdate >= SUBDATE(CURRENT_DATE, INTERVAL 1 MONTH);
You'll notice that the result set includes an extra column for the shipping date; very shortly (in the "Our Demonstration Revisited" section), we'll show you how to get rid of this if you don't need it.
NOTE A given CASE structure may contain any number of WHEN… THEN… clauses and a maximum of one ELSE clause.
Comparisons with CASE
The other form of CASE is as follows:
CASE expression WHEN value THEN result [ELSE else_result | WHEN value2 THEN result2
[ELSE else_result2 | WHEN…] ]
This compares an expression to a value, both of which can be any valid MySQL expressions, and returns result if the two are equal. Otherwise, either NULL or an else_result is returned, depending on whether or not an ELSE clause follows.
Here is an example:
CASE order_date
WHEN last_pmt_date
END AS pmt_status
FROM orders;
The CASE block will evaluate to 'YES' if the order_date and last_pmt_date columns for a given record hold the same value, and 'NO' if they don't.
NOTE The syntax for CASE varies somewhat from what we've shown in this chapter when it's used inside stored procedures in MySQL 5.0 and later. See Chapter 8 for more information.
What About Loops?
Given what we've just seen in the way of decision-making capabilities, you might expect that there would be some sort of mechanism for performing iterations as well. However, MySQL does not support loops in (normal) queries. In fact, up until MySQL 5.0, it didn't support any sort of looping constructs at all. Beginning with that version, it's possible to use loops inside stored procedures and user-defined functions. In Chapter 8, we'll examine the constructs used for this purpose.
{mospagebreak title=Our Demonstration Revisited}
Let's look again at the query we used at the beginning of this chapter:
CONCAT(firstname, ' ', lastname) AS name,
WHEN (@age := YEAR(CURRENT_DATE) – YEAR(dob)) > 65 THEN 'Over 65'
WHEN @age >= 45 THEN '45-64′
WHEN @age >= 30 THEN '30-44′
WHEN @age >= 18 THEN '18-29′
ELSE 'Under 18'
END AS age_range
FROM members
ORDER BY lastname, firstname;
While it may look complicated, it actually just returns two columns, aliased as name and age_range. The first of these is relatively simple: we simply
concatenate the firstname and lastname columns with a space in between and return the result as name. This is obviously more efficient because we return just one column instead of two.
The age_range column appears a bit more complex. Let's look at the first WHEN clause by itself:
WHEN (@age := YEAR(CURRENT_DATE) – YEAR(dob)) > 65 THEN 'Over 65'
Here's the "trick" that we alluded to earlier: Since we're not interested in the actual age of each member, but only in the age category to which he or she belongs, we set a user variable @age in the first WHEN clause, and then use that value in each of the succeeding ones. Since we're not trying to use this value in a GROUP BY, ORDER BY, or HAVING clause, we can do this; the value will remain constant (unless we explicitly set it to another value). Notice that we place the expression in which the value of @age is to be set (the difference in years between the year of birth and the current one) inside parentheses. Otherwise, @age would be set to the value of the expression YEAR(CURRENT_DATE) – YEAR(dob) > 65 ; that is, either 1 or 0 (TRUE or FALSE), and so the column value would always be returned as either 'Over 65' or 'Under 18'.
As for the APIs we used for accessing MySQL from PHP and Python scripts, we'll cover those in the next chapter.
In this chapter, we basically gave you a crash course in the most common and useful MySQL operators and built-in functions, all the time keeping in mind our central premise of giving you as many opportunities to consider replacing programming logic with SQL logic for optimization purposes.
Why should you go to the trouble of learning and using all of these constructs? The question contains its own answer: so that you can minimize having to do so in your application logic. This makes database interaction faster and more efficient because you generally need to return less data from the database, and because (particularly in the case of web applications) MySQL can usually manipulate the data faster than your programming code can. This is due to the speed at which set processing (operating on a group of records as a single entity) operates as opposed to row processing (working on each record as a separate iteration of a loop).
Maximizing the work done by MySQL also makes migration of your MySQL applications between programming languages and platforms much easier. This may seem trivially self-evident, but as we showed in our demonstration example in this chapter, if your queries already produce the data in the form required for output by your application, your application only needs to output it.
What's Next
Now we've covered just about everything that you need to know in order to create well-structured tables, put data into them, and get that data back out again. In Chapter 5, we'll examine some additional MySQL features that you can employ in your applications. The first of these is the join, which is simply a query that selects data from multiple tables. This is obviously more efficient than querying one table, and then using the results to provide parameters for making queries on others. There are several different join types in SQL (and thus MySQL); we'll look at each of these and provide some examples highlighting their use and the differences between them.
Another helpful MySQL feature is the temporary table, which can be used to store results of queries and calculations for further use in a manner that's independent of your application. Temporary tables are also convenient in that they only last for the duration of a single session, so there's usually no need to worry about cleanup after you're finished with them.
Both of these features can help you to save time and effort when developing applications. They'll also prove invaluable in getting more work out of MySQL (instead of in your application code) and making more efficient use of MySQL itself.


text:
Mi SciELO
Servicios Personalizados
- Citado por SciELO
- Accesos
Revista de Humanidades y Ciencias Sociales (Santa Cruz de la Sierra)
versión impresa ISSN 1819-0545
ROIG, Francisco y REICHSFELD, David. Santa Cruz de la Sierra and its Jewish colonial legacy. Rev. humanid. cienc. soc. (St. Cruz Sierra) [online]. 2008, vol.4Selected edition, pp. 103-114. ISSN 1819-0545.
Santa Cruz de la Sierra is Bolivia's economic hub and its most populated city; it is also one of Latin America's fastest growing urban areas, with more than 70 per cent of its population living above poverty level. Its modern architecture and broad avenues make home to approximately two million people, from very diverse backgrounds, who have built a very unique society in the heart of South America. This vibrant and ethnically diverse city was, only fifty years ago, an impoverished, isolated frontier town of approximately 40,000 inhabitants who carried, often unknowingly, the legacy of many of the city's founders, who were of Jewish origin. This article intends to unveil some facts of this interesting legacy, and encourage further research on the subject

subset: commoncrawl


text:
Destination z
More Than 1,000 Schools Help Graduates Get Jobs By Teaching The IBM System z Mainframe
smarc 100000H91E Tags:  system zseries ibm skills z mainframe initiative academic 1 Comment 10,238 Views
IBM just announced over 1000 schools teaching mainframe topics!
Check it out! http://www-03.ibm.com/press/uk/en/pressrelease/36175.wss
Mainframe Career Exploration Day in Boston at SHARE
smarc 100000H91E Tags:  day share mainframe boston academic at ibm in exploration z initiative system career 10,669 Views
Greetings Everyone,
Upcomming Mainframe Career Day Opportunity at WAVV
Hello folks,
Just a heads up that IBM in conjunction with WAVV will be conducting a Mainframe Career Exploration Day at the upcoming WAVV (the World Alliance of VSE, VM, and Linux User Group) conference in Orlando Florida on May 18th. If you are a student or faculty member in the Orlando area and you would like to participate, just let me know.
This is a great opportunity to learn about the mainframe and visit with several of our IBM Destination z members who will be attending and/or exhibiting at this event.
Hope to see you there.....[Read More]
Career Day Held at Lone Star College - Tomball
You know, I'm sitting here and it occurred to me that I didn't mention the career day at the Lone Star College - Tomball, in Tomball, Texas (near Houston).
IBM arranged to bring their IBM System z10 BC demo machine to the campus, hooked it up. Tomball arranged to bring in about 70 students to see the z10, and for faculty members and College Students, IBM conducted a Linux Workshop where using the z10 mainframe the students installed Linux on the machine using z/VM (z/Virtual Machine).
The event was conducted to kick-off Tomball's efforts to begin teaching mainframe topics as part of their CS workforce program and potentially as part of their CS degree program. Tomball is a recent member of the IBM Academic Initiative, System z program and I look forward to watching as they build their program.[Read More]
And the winners are....
smarc 100000H91E Tags:  destination scholarship ibm academic z zjournal initiative system 8,690 Views
Congratulations to those awarded the first ever IBM Destination z Scholarships. They were just announced by zJournal and the sponsors of the program.
The Destination z scholars are the following talented individuals:
Each of them has been awarded $1,000 to continue their academic pursuits. Again, congratulations to each of them.
Visit zJournal for more information on the scholarship.
We are working to build another scholarship program for the Fall 2009 semester, and we will announce it formally at the zJournal and Destination z web sites.[Read More]


text:
I am pleased to announce the winners of the WidgetFX Developer's Contest. There were lots of great entries (22 in total), which made this a very hard decision. You can browse the full set of entries yourself on the WidgetFX Library page:
To try any of the contest entries below, simply click on the image which will install/open WidgetFX and add the widget to your dock.
1st Place – ScreenshotFX
In first place is Pär Dahlberg with his ScreenshotFX widget. Pär definitely went above and beyond in all respects, entering a full-blown application for taking screen captures and then editing them in a pop-up window. Some of the cool features in his application include:
- A delay timer to give you time to arrange windows and menus before the capture occurs
- Multi-monitor support via a drop-down (This was sure to impress Keith)
- Drawing tools to markup the image with annotations
- Crop/Fill and a whole host of other editing tools
Pär has a great blog on JavaFX, WidgetFX, and other topics of interest, so make sure to check out his contest winning speech.
2nd Place – RadioFX
Second place went to Yannick Van Godtsenhoven for his RadioFX Widget. In terms of visual design and widget polish, Yannick was head-and-shoulders above the competition.
He built a simple, yet functional widget that streams radio over the internet right to your WidgetFX dock. No more reaching for a web browser to catch your favorite Belgium tunes on StuBru!
Check out Yannick's blog to hear about the contest results and his experience with JavaFX.
I am definitely looking forward to more great creations from Yannick!
3rd Place – Infix WeatherWidget
Finally, third place went to Larry Dickson for his Infix WeatherWidget. Besides his Weather widget, he also submitted 3 other widgets including a Clock, Calendar, and G-Mail widget, although his original creation was still the judges' favorite.
By the way, Larry submitted this widget before the start of the contest, which was perfectly valid. Similarly, if you submit a widget anytime between now and the start of our next contest you will automatically be entered to win!
Congratulations to all of our winners!!! I have already sent them their prizes, which were contributed through a generous donation from my publisher, Apress.


text:
Mexico, country of southern North America and the third largest country in Latin America, after Brazil and Argentina. Mexican society is characterized by extremes of wealth and poverty, with a limited middle class wedged between an elite cadre of landowners and investors on the one hand and masses of rural and urban poor on the other. But in spite of the challenges it faces as a developing country, Mexico is one of the chief economic and political forces in Latin America. It has a dynamic industrial base, vast mineral resources, a wide-ranging service sector, and the world's largest population of Spanish speakers—about two and a half times that of Spain or Colombia. As its official name suggests, the Estados Unidos Mexicanos (United Mexican States) incorporates 31 socially and physically diverse states and the Federal District.
More than half of the Mexican people live in the centre of the country, whereas vast areas of the arid north and the tropical south are sparsely settled. Migrants from impoverished rural areas have poured into Mexico's cities, and nearly four-fifths of Mexicans now live in urban areas. Mexico City, the capital, is one of the most populous cities and metropolitan areas in the world. Mexico has experienced a series of economic booms leading to periods of impressive social gains, followed by busts, with significant declines in living standards for the middle and lower classes. The country remains economically fragile despite the forging of stronger ties with the United States and Canada through the North American Free Trade Agreement (NAFTA).
Mexico's urban growing pains are in sharp counterpoint to the traditional lifestyles that prevail in more-isolated rural areas. In states such as Oaxaca or Chiapas, small communal villages remain where indigenous peasants live much as their ancestors did. The cultural remnants of great pre-Columbian civilizations, such as Teotihuacán or the Mayan pyramids at Chichén Itzá and Tulum, provide a contrast to colonial towns such as Taxco or Querétaro. In turn, these towns appear as historical relics when compared with the modern metropolis of Mexico City. Yet even the bustling capital city, which has been continually built and rebuilt on the rubble of past civilizations, reveals Mexico's wide range of social, economic, and cultural struggles. As the renowned Mexican poet and intellectual Octavio Paz observed,
Past epochs never vanish completely, and blood still drips from all their wounds, even the most ancient. Sometimes the most remote or hostile beliefs and feelings are found together in one city or one soul, or are superimposed like [pre-Columbian] pyramids that almost always conceal others.
It is this tremendous cultural and economic diversity, distributed over an enormously complex and varied physical environment, that gives Mexico its unique character.
Sharing a common border throughout its northern extent with the United States, Mexico is bounded to the west and south by the Pacific Ocean, to the east by the Gulf of Mexico and the Caribbean Sea, and to the southeast by Guatemala and Belize. Mexico also administers such islands and archipelagoes as the Tres Marías in the Pacific and Cozumel and Mujeres off the coast of the Yucatán Peninsula. Including these insular territories, the roughly triangular country covers an area about three times the size of Texas. While it is more than 1,850 miles (3,000 km) across from northwest to southeast, its width varies from less than 135 miles (217 km) at the Isthmus of Tehuantepec to more than 1,200 miles (1,900 km) in the north.
Geologic origins
Mexico is located in one of the Earth's most dynamic tectonic areas. It is a part of the circum-Pacific "Ring of Fire"—a region of active volcanism and frequent seismic activity. Among its towering volcanic peaks are Citlaltépetl (also called Orizaba), which forms the highest point in the country at 18,406 feet (5,610 metres), and the active volcano Popocatépetl, which rises to 17,930 feet (5,465 metres) to the southeast of Mexico City. These and other Mexican volcanoes are young in geologic terms, from the Paleogene and Neogene periods (about 65 to 2.6 million years ago), and are examples of the volcanic forces that built much of the central and southern parts of the country. Mexico is situated on the western, or leading, edge of the huge North American Plate, whose interaction with the Pacific, Cocos, and Caribbean plates has given rise to numerous and severe earthquakes as well as the earth-building processes that produce southern Mexico's rugged landscape. It is in this dynamic and often unstable physical environment that the Mexican people have built their country.
Physiographic regions
Mexico can be divided into nine major physiographic regions: Baja California, the Pacific Coastal Lowlands, the Mexican Plateau, the Sierra Madre Oriental, the Sierra Madre Occidental, the Cordillera Neo-Volcánica, the Gulf Coastal Plain, the Southern Highlands, and the Yucatán Peninsula.
The Baja California peninsula in northwestern Mexico is an isolated strip of extremely arid land extending between the Pacific Ocean and the Gulf of California (Sea of Cortez). Unevenly divided between the states of Baja California and Baja California Sur, the peninsula is nearly 800 miles (1,300 km) long but seldom more than 100 miles (160 km) wide. The central core of the peninsula is a granitic fault block with peaks of more than 9,000 feet (2,700 metres) above sea level in the Sierra San Pedro Mártir and Sierra de Juárez. The gently sloping western side of these mountain ranges is in contrast to the steep eastern escarpment, which makes access from the Gulf of California extremely difficult. The Sonoran Desert extends onto the peninsula along the northern end of the gulf.
The Pacific Coastal Lowlands begin near Mexicali and the Colorado River delta in the north and terminate near Tepic, some 900 miles (1,450 km) to the south. For most of that distance, they face the Gulf of California while traversing the states of Sonora, Sinaloa, and Nayarit. Bounded on the east by the steep-sided Sierra Madre Occidental, the lowlands are a series of coastal terraces, mesas, and small basins interspersed with riverine deltas and restricted coastal strips. Although the vast Sonoran Desert dominates their northern section, parts of the lowlands have been irrigated and transformed into highly productive farmland.
The largest and most densely populated region is the inland Mexican Plateau, which is flanked by the Sierra Madre Occidental and Sierra Madre Oriental. The plateau consists of the vast Mesa del Norte (Northern Plateau) and the smaller but heavily populated Mesa Central (Mesa de Anáhuac). The Mesa del Norte begins near the U.S. border; covers great stretches of the states of Chihuahua, Coahuila, Durango, Zacatecas, Jalisco, and Aguascalientes; and ends near San Luis Potosí city. From there the Mesa Central stretches to a point just south of Mexico City. The plateau tilts gently upward from the north toward the south; at its northern end, the Mesa del Norte is about 4,000 feet (1,200 metres) above sea level. Throughout the region, relatively flat intermontane basins and bolsones (ephemeral interior drainage basins) are interrupted by mountainous outcrops. In the north the Chihuahuan Desert covers a section of the plateau that is more extensive than the U.S. state of California.
The Mesa Central covers large parts of Michoacán, Guanajuato, Querétaro, Hidalgo, and México states and the Federal District (Mexico City). Its southern end rises 7,000–9,000 feet (2,100–2,700 metres) in the vicinity of Mexico City. The Mesa Central, moister and generally flatter than the Mesa del Norte, is divided into a series of fairly level intermontane basins separated by eroded volcanic peaks. The largest valleys rarely exceed 100 square miles (260 square km) in area, and many others are quite small. Among the generally fertile basins is the Bajío (El Bajío, or the Basin of Guanajuato), the traditional breadbasket of the country, which is located in the northern part of the Mesa Central. Many of the basins were once sites of major lakes that were drained to facilitate European and mestizo settlement. Around Mexico City the weak, structurally unstable soils that remain have caused the colonial-era Metropolitan Cathedral and other buildings to shift on their foundations and, over many years, to list or sink unevenly into the ground.
The largely volcanic Sierra Madre Occidental, which forms the western border of the Mexican Plateau, has an average elevation of 8,000–9,000 feet (2,400–2,700 metres) and extends roughly 700 miles (1,100 km) from north to south. It has been highly incised by westward-flowing streams that have formed a series of gorges, or barrancas, the most spectacular of which is the complex known as Copper Canyon (Barranca del Cobre) in southwestern Chihuahua state.
The Sierra Madre Oriental, a range of folded mountains formed of shales and limestones, is situated on the eastern side of the Mexican Plateau. Often considered an extension of the Rocky Mountains (which are cut by the Rio Grande but continue in New Mexico and western Texas), it runs roughly 700 miles (1,100 km) from north to south before merging with the Cordillera Neo-Volcánica. Its average elevations are similar to those of the Sierra Madre Occidental, but some peaks rise above 12,000 feet (3,650 metres). The mountains have major deposits of copper, lead, and zinc.
The Cordillera Neo-Volcánica, also called the Neo-Volcanic Axis or Trans-Volcanic Axis, is a geologically active mountain range whose smoldering cinder cones link the Sierra Madre Occidental with the Sierra Madre Oriental at the southern edge of the Mesa Central. As it crosses Mexico from Cape Corrientes on the west coast to Xalapa and Veracruz on the eastern coast, it forms a mountainous backdrop to the states of Jalisco, Michoacán, Guerrero, México, Morelos, and Puebla as well as the Federal District. This volcanic range includes the spectacular peaks Citlaltépetl, Popocatépetl, and Iztaccíhuatl (Ixtacihuatl), among others. One of the world's youngest volcanoes, Parícutin emerged violently from the fields of Michoacán between 1943 and 1952. The region is rich in silver, lead, zinc, copper, and tin deposits. The hot, dry Balsas Depression, which takes its name from the major river draining the region, is immediately south of the Cordillera Neo-Volcánica. The depression is formed of small, irregular basins interrupted by hilly outcrops, which give the area a distinctive physical landscape.
The Gulf Coastal Plain, which is much wider than its Pacific coast counterpart, extends some 900 miles (1,450 km) along the Gulf of Mexico from Tamaulipas state (on the Texas border) through Veracruz and Tabasco states to the Yucatán Peninsula; it includes the Tabasco Plain in its southeastern section. The triangular northern portion of the plain, which is characterized by lagoons and low-lying swampy areas, reaches a width of more than 100 miles (160 km) near the U.S. border but tapers toward the south. North of the port of Tampico, an outlier of the Sierra Madre Oriental reaches the sea and interrupts the continuity of the Gulf Coastal Plain. South from there the plain is narrow and irregular, widening at the northern end of the Isthmus of Tehuantepec.
The Southern Highlands are a series of highly dissected mountain ranges and plateaus, including the Sierra Madre del Sur, Mesa del Sur, and the Chiapas Highlands, also called the Sierra Madre de Chiapas. On their southwestern side, approximately from Puerto Vallarta to the Gulf of Tehuantepec, are a series of relatively low ranges known collectively as the Sierra Madre del Sur. The crystalline mountains, which achieve elevations of 7,000–8,000 feet (2,100–2,400 metres), often reach the sea to create a rugged coastal margin, part of which is known as the Mexican Riviera. Several coastal sites, such as Ixtapa-Zihuatanejo, Acapulco, and Puerto Escondido, have become alluring tourist destinations. However, the less-hospitable inland basins provide a difficult environment for traditional peasant farmers. Farther northeast is the Mesa del Sur, with numerous stream-eroded ridges and small isolated valleys some 4,000–5,000 feet (1,200–1,500 metres) above sea level. The picturesque Oaxaca Valley is the largest and most densely settled of these, with a predominantly indigenous population. It is one of the poorest areas of Mexico.
Bisecting the Southern Highlands is the Isthmus of Tehuantepec, a low-lying, narrow constriction of land that reaches an elevation of less than 900 feet (275 metres). Its hilly central area descends to narrow coastal plains on the south and to the Tabasco Plain on the north.
The Chiapas Highlands are an extension of the mountain ranges of Central America. Within the highlands the low, crystalline Sierra de Soconusco range lies along the Pacific coast. To the northwest and paralleling the coast is the Grijalva River valley. A group of highly dissected, folded, and faulted mountains is located between the valley and the Tabasco Plain, a southeastern extension of the Gulf Coastal Plain. Among the active volcanic peaks of the region is El Chichón, which destroyed several villages in 1982.
The Yucatán Peninsula lies to the northeast of the Tabasco Plain and extends northward, forming a divider between the Gulf of Mexico and the Caribbean Sea. The peninsula's limestone (karst) terrain is generally pockmarked and uneven but seldom exceeds 500 feet (150 metres) in elevation. There is little surface drainage, and subterranean erosion has produced caverns and sinkholes (cenotes), the latter being formed when cavern roofs collapse. The islands of Cozumel and Mujeres lie off the peninsula's northeastern tip, near the resort boomtown of Cancún.
Because of its climatic characteristics and arrangement of landforms, Mexico has few major rivers or natural lakes. The largest are found in the central part of the country. The Lerma River has its headwaters in the Toluca Basin, west of Mexico City, and flows westward to form Lake Chapala, the country's largest natural lake. The Santiago River then flows out of the lake to the northwest, crossing the Sierra Madre Occidental on its way to the Pacific. The eastward-flowing waters of the Pánuco River and its tributaries, the Moctezuma and Santa María rivers, originate in the eastern Mesa Central and tumble through gorges in the Sierra Madre Oriental on their way to the Gulf of Mexico. Lakes Pátzcuaro and Cuitzeo, west of Mexico City, are remnants of vast lakes and marshes that covered much of the southern Mesa Central before European settlement.
There are few permanent streams in the arid Mesa del Norte, and most of these drain into the interior rather than to the ocean. By far the most important river in that part of the country is the Río Bravo del Norte (called the Rio Grande in the United States), which forms a lengthy part of the international border. The Conchos River, a tributary of the Río Bravo, is important for irrigation agriculture and hydroelectricity.
The Balsas River and its tributaries drain the Balsas Depression as well as much of the southern portion of the Mesa Central. Dammed where it crosses the Sierra Madre del Sur, the Balsas is a major source of hydroelectric power. Farther southeast, on the Guatemala frontier, the Grijalva-Usumacinta river system drains most of the humid Chiapas Highlands. Together with the Papaloapan River, which enters the Gulf of Mexico south of Veracruz, the Grijalva and Usumacinta account for about two-fifths of the total volume of Mexico's rivers.
Streams on the west and east coasts are short and steep because the Sierra Madre Occidental and the Sierra Madre Oriental originate close to the coastal margins. Along the Pacific Coastal Lowlands the Yaqui, Fuerte, and Culiacán rivers have been dammed and support vast irrigated fields. Aridity in Baja California and the porous limestones that underlie the Yucatán Peninsula cause those regions to be virtually devoid of permanent surface streams.
Throughout tropical southeastern Mexico, high rates of precipitation produce infertile reddish or yellow lateritic soils high in iron oxides and aluminum hydroxides. The richest soils in the country are the chernozem-like volcanic soils found in the Mesa Central. Deep, easily crumbled, and rich in base minerals, some of those dark soils have been farmed continuously for many centuries. However, overuse has caused serious sheet erosion and has exposed tepetate (a lime hardpan) in many areas. In the arid north, gray-brown desert soils occupy the largest expanses. High in lime and soluble salts, they can be extremely productive when irrigated, but in such cases salinization (salt buildup) can be a serious problem, resulting in barren fields.
Because of its vast size and topographic diversity, Mexico has a wide array of climatic conditions. More than half of the country lies south of the Tropic of Cancer. In those areas, tropical maritime air masses from the Gulf of Mexico, the Caribbean, and the Pacific, are attracted by the relatively low pressures that occur over land. The maritime air masses are the main sources of precipitation, which is heaviest from May through August. Tropical hurricanes, spawned in oceans on both sides of the country, are common in the coastal lowland areas from August through October. Northern Mexico is dominated by the Sonoran and Chihuahuan deserts, and arid and semiarid conditions predominate over much of the Mexican Plateau.
Seasonal temperature variations within the tropics are small, often only about 10 °F (5 °C) between the warmest and coolest months. In those areas winter is defined as the rainy rather than the cold season. Elevation is a major climatic influence in most parts of Mexico, and several vertical climatic zones are recognized. From sea level to just over 3,000 feet (900 metres) is the tierra caliente ("hot land"), with uniformly high temperatures. For example, Veracruz, located on the Gulf of Mexico, has an average daily temperature of approximately 77 °F (25 °C). The tierra templada ("temperate land") extends to about 6,000 feet (1,800 metres) and includes the city of Xalapa, at an elevation of more than 4,600 feet (1,400 metres), where the average daily temperature is 66 °F (19 °C). The tierra fría ("cold land") extends as high as 11,000 feet (3,350 metres) and includes Pachuca, at just under 8,000 feet (2,440 metres), where the average annual temperature is 59 °F (15 °C). Above the tierra fría are the páramos, or alpine pastures, and the tierra helada ("frozen land"), or permanent snow line, which is found at 13,000–14,000 feet (4,000–4,270 metres) in central Mexico.
North of the tropics, temperature ranges increase substantially and are greatest in the north-central portion of the Mesa del Norte, where summer and winter temperatures are extreme. The highest temperatures in the country, exceeding 110 °F (43 °C), occur in July and August in central Baja California and in the northern Sonoran and Chihuahuan deserts. Outside the high mountainous areas of northern Mexico and the north central portion of the Mesa del Norte, the lowest temperatures normally do not descend below 32 °F (0 °C).
Most of Mexico lacks adequate precipitation for at least part of the year. Except for the Sierra Madre Occidental, the Sierra Madre Oriental, and the Gulf Coastal Plain, the area north of the Tropic of Cancer generally receives less than 20 inches (500 mm) of precipitation annually and is classified climatically as either tropical desert or tropical steppe. Nearly all of Baja California, much of Sonora state, and large parts of Chihuahua state receive less than 10 inches (250 mm) of rainfall yearly. Much of central and southern Mexico receives less than 40 inches (1,000 mm) of precipitation annually, mostly from May through August, and is classified as having tropical savanna or highland savanna climates. Only the Gulf Coastal Plain and the adjacent mountains—roughly from Tampico southward to Villahermosa—the Chiapas Highlands, and the southern part of the Yucatán Peninsula receive abundant precipitation year-round. A tropical rainforest climate exists there because of uniformly high temperatures and humid conditions.
Learn More in these related Britannica articles:
history of the motion picture: Spain and MexicoOf the smaller film industries of the West, Spain's should be noted because it produced one of the world's greatest satirists in Luis Buñuel, and Mexico's should be commended because it allowed Buñuel to work after he was forced out of Spain by the…
history of the motion picture: MexicoMexican cinema was representative of many national film cultures that had, as it were, one foot in its own language and film traditions and the other connected to influences from and opportunities in Hollywood. The actor Alfonso Arau directed a highly popular film based…
Native American art: Mexico and Middle AmericaAlthough Mexico is geographically part of the North American continent, its cultural world is so different that it is more convenient to consider it as part of Middle or Central America. The indigenous groups in the region also reflect a strong…
land reform: MexicoThe Mexican reform of 1915 followed a revolution and dealt mainly with lands of Indian villages that had been illegally absorbed by neighbouring haciendas (plantations). Legally there was no serfdom; but the Indian wage workers, or peons, were reduced to virtual serfdom through indebtedness.…
Latin American dance: MexicoMexico's indigenous cultures have contributed to the distinctive regional and mestizo traditions found throughout the country. African slavery played a much smaller role there than in the Caribbean. One of Mexico's most elaborate dance events honours the country's patron saint, Our Lady of Guadalupe…
More About Mexico74 references found in Britannica articles
Assorted References
- education
- flag history
- early development
- ejido
- In ejido
- land reform
folk arts
- children's literature
- comic strips


text: On Fri, 27 Apr 2007, Orion Poplawski wrote: > I'm at a loss and trying to see if anyone else has had similar problems. > > We've got two pairs of identical machines: > > - 2 Tyan S2882 dual processor Opteron 244 stepping 10 > - 2 Tyan S2882-D dual processor dual core Opteron 275 stepping 2 > > We have two (relatively complicated) numerical models (RAMS and a homegrown > one) that will blow up in random locations on the 244 machines but run fine > on the 275 machines. > > By blow up it appears the calculations get corrupted in some way and the > numbers get un-physical in RAMS and the simulation exits. With the other > model we get segfaults. > > Memtest86 runs fine. No other hardware issues that I can find. Your problem sounds like the following (to me). Your program starts up, and uses dynamic memory to allocate this or that according to some sort of simulation or execution pathway. Alas, it leaks, or else you haven't correctly estimated the memory required for it to complete. You for whatever reason didn't configure swap on the systems (which would typically slow the computation down to where its need for VM became obvious) and so eventually it exhausts memory. At that point (which would be slightly different per run because it depends on just what the kernel has resident and a lot of other factors) it either causes resident kernel/systems programs that try to swap in to randomly fail, causing a system crash or unpredictable behavior or it causes a segment violation in the program itself. To other possibilities are: corrupt or incorrect libraries (depending on what the computations use, there can always be bugs in some little tested pathway in some library, and of course bugs in the code. It is (IMO) VERY VERY unlikely that you've found a CPU bug running ordinary numerical code, especially two distinct versions of it. They MIGHT share a buggy library, though. It is not at all unlikely that there is a bug in your code, but not so likely that there is a similar bug in both programs, unless the "bug" is that it uses too much memory and does unpredictable things when it runs out. Things to try to debug -- run a memory monitor -- e.g. vmstat, wulfstat, on the cluster as the programs run. Check their resident and virtual memory occupation as the program proceeds. If their memory footprint steadily grows, you've got (and found) a problem. You may see other things that give you a clue as to what might be going on. Configure a swap (if you haven't got one already) and see if it affects the problem. Finally, instrument the code in the version you compile from source and dump a trace of sorts so you can "see" where it fails (old timey "real debugging"). When you see where it is, try to figure out what's going on by increasing the instrumentation. This can result in big output files to go through, but is your best bet in the long run. rgb > > We've tried FC4/5 on the 244 machines. At one point all were running > identical FC5 installs with the same problems. > > Problem is not exactly reproducible unfortunately. It will crash at > different times in the simulations, but they will crash at some point with > the length of runs we are doing. > > Are there any cpu tests out there that would check the accuracy of various > calculations? > > Thanks! > > -- Robert G. Brown http://www.phy.duke.edu/~rgb/ Duke University Dept. of Physics, Box 90305 Durham, N.C. 27708-0305 Phone: 1-919-660-2567 Fax: 919-660-2525 email:rgb at phy.duke.edu


text:
Events, Music & Entertainment in NYC. Short and Sweet.
Step right up and take a peak behind velvet curtains where one dancer exposes what life is really like behind the glamour […]
Delivered by FeedBurner
This map was created by KLM who provide flights to New York for those looking to discover the city.
© 2019 Short and Sweet NYC. All rights reserved.


text:
The Louisiana Wildlife and Fisheries Commission (LWFC) adopted several amendments to the notices of intent for the 2010-12 hunting seasons and the 2010-11 Wildlife Management Areas (WMA) General Rules and Regulations at their March 4 meeting.
Those amendments include:
-- Alternative deer season hunting dates in Areas 1 and 6 for 2010-2011 Hunting Seasons. Proposed for:
Area 1
Archery: Oct. 1 - Oct. 31 (Bucks Only) and Nov. 1 - Feb.15 (Either-Sex)
Primitive: Nov. 13 - Nov. 19
Still Hunt: Nov. 20 - Dec. 3
CLOSED: Dec. 4 - Dec. 10
With or Without Dogs: Dec. 11 - Jan. 2
Still Hunt: Jan. 3 - Jan. 31
Primitive: Feb. 1 - Feb. 7 and Feb. 11 - Feb. 13
Area 6
Archery: Oct. 1 - Oct. 31 (Bucks Only) and Nov. 1 - Feb.15 (Either-Sex)
Primitive: Nov. 13 - Nov. 19
Still Hunt: Nov. 20 - Dec. 3
CLOSED: Dec. 4 - Dec. 10
With or Without Dogs: Dec.11 - Jan. 23
Still Hunt: Jan. 24 - Jan. 31
Primitive: Feb. 1 - Feb. 7 and Feb.11 - Feb.13
-- Changes to 2010 WMA Hunting Schedule for: Pointe-Aux-Chenes Point Farm Unit (non-toxic shot only to be used for dove season, south of the dove field gate); Sabine (feral hogs may be taken with dogs Feb. 1 to last day of Feb. only by permit available from a Region Office); and Red River Yakey Tract (recreational crawfishing allowed March 15 - July 31).
-- Seasonal changes for Kisatchie National Forest for 2010-2011 (minor changes for small game, waterfowl and nuisance species harvest) and user rules; deer season dates to be presented separately at April LWFC meeting.
-- Changes to WMA Hunting Regulations relative to feral hogs (adds Attakapas and Pass-a-Loutre WMAs to list of WMAs allowing hunters to use dogs to hunt hogs; live hogs can only be transported with permit available at LDWF field offices); and blood tracking dogs (leashed dogs would be allowed by still hunters to trail and retrieve wounded or unrecovered deer).
To view the original notices of intent and amendments for proposed hunting season dates for the upcoming hunting season, please visit www.wlf.louisiana.gov/education/commissionactions [3].
Public comment can be submitted to Randy Myers, Wildlife Division, LDWF, PO Box 98000, Baton Rouge, LA 70898-9000 until May 6.
The public meeting schedule for the proposed 2010-11 hunting season is as follows:
-- March 9 at 6 p.m. in the cafeteria of the Hammond High School located at 45168 River Road.
-- March 9 at 6 p.m. at the Ruston Civic Center located at N. Trenton St.
-- March 10 at 6 p.m. at the Alexandria Convention Hall located at 915 Third St.
-- March 11 at 6:30 p.m. at the LDWF Office in Minden located at 9961 Hwy. 80.
-- March 16 at 6:30 p.m. at the LSU AgCenter next to Burton Coliseum in Lake Charles.
-- March 18 at 6 p.m. in room 119 of the U.S. Fish and Wildlife Service building located at 646 Cajundome Blvd. in Lafayette.
For more information, contact Randy Myers at 225-765-2359 or email@example.com [4].


text:
Saturday, July 23, 2011
Beginning to blog about my brick walls
When time became available, I debated about the blog again. At that time, my concerns were more practical -- privacy. Since this impacts my brother and his family as well as me, I was concerned that I'd be "giving too much away" if I blogged about my grandparents.
Fast forward a few years, I've decided that talking about my grandparents isn't likely to cause irreparable harm. They're all deceased (as of 1997), and my parents are both deceased, too.
I've decided to concentrate on my mother's family. In particular, I'm going to try and work through the brick walls of her father's family. I've chosen this side of my family in part because I've worked them back the farthest, and in part because it's the only part of my family that allegedly arrived before the Revolution.
4 comments:
- Lisa said...
Welcome to geneabloggers!! I hope your blog helps you to break down the brick walls you're after. I am sure you'll enjoy blogging about them, regardless. There are some great tips about blogging over at geneabloggers.com if you haven't already seen them.
- November 26, 2011 at 10:21 AM
- Steve said...
This link is from the "Sullivan Whig" and gives the name of a daughter of Joseph H. Norris who married Elisha A. Green. For many years I did not have the daughter's name, but knew a daughter of Joseph married Elisha A. Green (a supervisor of Forestburgh, as was Silas T.L. Norris). This link gives her name.
Steve Norris
- January 24, 2012 at 1:35 AM
- Steve said...
In 1850 Joseph H. Norris, at age 61, was living in the home of Josiah and Huldy Seeley. Joseph's own son, Silas T.L. Norris, was living with his family next door. This leads me to believe that Huldy was born Huldy Norris and that she was a daughter of Joseph H. Norris and sister of Silas T.L. Norris. It should be noted that Silas T.L. Norris named a son Joseph Seeley Norris. The name would have been after his own father, Joseph, and his brother-in-law, (Josiah) Seeley.
Steve Norris
- January 24, 2012 at 1:48 AM
- Joan said...
Steve, thanks for commenting! When I started this blog I hoped it would be cousin bait, and it has! I knew Silas had a few sisters. I had Huldy's name as Hulda or Huldah (can't remember, and I'm on the bus to work). I thought I'd found Joseph H Norris in his own household in 1850, but I'll look at that again when I get home tonight.
Silas was quite a character, and I believe he also served at least one term In the New York State Assembly.
I started this blog to help figure out who Silas' mother was and where his (Joseph) came from. I'm still posting what I've found about Joseph S, but then I'll start on Silas.
- January 24, 2012 at 7:30 AM


text:
Technical Inks
by Koh-I-Noor
Universal Drawing inks are suitable for a variety of applications including use in technical pens and refillable plotting points. White and black are opaque, other colors are transparent. For use on paper and film. Waterproof. #3080-F. All inks 3/4 oz. with easy fill spouts.
All inks 3/4 oz. with easy fill spouts.
Ask a question about Technical Inks Ask a question about this product | See all questions & answers (2)
Average User Rating: Based on (7 Reviews)
5 7
W P. from Blythewood, SC says:
I've used Koh-i-noor inks for many years and the high quality has not changed. I appreciate its non-clogging properties especially when I use my 3-ought or smaller pens.
Please wait...
You May Also Like...
How to get VIP Club Prices
Anyone can be a VIP Member with:
Only $25/year
Product Questions and Answers
Ask a QuestionAsk a Question
What is the best ink to use on celluloid (cells) for animation type work, the 3085F or the 3084F?- Asked by Jamey on 20-Feb-14
We recommend 3084-F as it is quick drying and better for film. The 3085-F dries slower and works well on paper. The Universal Drawing ink, 3080-F is designed for both paper and film.- Answered by MisterArt on 25-Feb-14
What is the best ink to use in a calligraphy pen?- Asked by David Dupont on 14-Feb-13
Typically you want to use an ink that is made by the same manufacturer of the calligraphy pen you are using.- Answered by MisterArt on 19-Feb-13
Ask a Question About Technical Inks
Your email will not be shared. We will only use your email address to respond to your question. When asking your question, please be as descriptive as possible, it will allow us to give you the most accurate answer possible.
Please wait...
Please wait...


text:
John M. Doris on how the Watching Eye effect influences our behaviour – both conscious and unconscious
Explore over a hundred of the latest scholarly works to be added to Oxford Scholarship Online
How does the global legal system function? Giuliana Ziccardi Capaldo, editor of the Global Community Yearbook whose editons are available on OSO, discusses
Christopher Yeomans, author of The Expansion of Autonomy, on Hegel's views on the nature of action and human agency
Charting the history, differences, and similarities between the two dances, Juliet McMains helps you decide whether salsa or tango is right for you
PRINTED FROM OXFORD SCHOLARSHIP ONLINE (www.oxfordscholarship.com). (c) Copyright Oxford University Press, 2019. All Rights Reserved. Under the terms of the licence agreement, an individual user may print out a PDF of a single chapter of a monograph in OSO for personal use (for details see www.oxfordscholarship.com/page/privacy-policy).date: 24 May 2019
Powered by:


text:
April 24, 2007
Santa Barbara, Calif. -
Complete MPSF 15th Anniversary Team listing
Download Free Acrobat Reader
Two UC Santa Barbara men's volleyball players, one current and one former, were honored as the Mountain Pacific Sports Federation (MPSF) announced its 15th Anniversary Teams. Evan Patak was selected to the third team, while Donny Harris garnered honorable mention accolades.
Patak, a senior opposite hitter, is a two-time all-American and three-time All-MPSF pick. In 2004, he was named the AVCA and MPSF Newcomer/Freshman of the Year. The Pleasanton, Calif. native led the country in kill average, ace average, and point average in 2006 and currently holds the top spot in all three categories this season. Patak is UCSB's all-time leader in aces (254) and is the only Gaucho in school history to record a triple digit total from the service line. He is second in career kills (2,086) and career attack attempts (4,061).
Harris played opposite hitter at UCSB from 1994-97. A three-time all-American and All-MPSF selection, he is UCSB's career kills leader with 2,114, 28 more than Patak. Harris is also the Gauchos' all-time attack attempts leader (4,208) and is third in career aces (77), seventh in career digs (548), and 10th in total blocks (297). He also holds a UCSB single match record with 52 kills against Lewis in 1997. The La Cañada, Calif. native led the Gauchos in kills and attempts all four seasons that he played.
The MPSF is currently celebrating its 15th year of competition in 2007. Along with UCSB, the teams include players from BYU, Cal State Northridge, Hawai'i, Long Beach State, Pepperdine, Stanford, UCLA, and USC. To be eligible, a student-athlete must have competed for at least one season between 1993 and 2006 and been named to the All-MPSF First or Second Team.
Along with the players, UCLA head coach Al Scates and Pepperdine skipper Marv Dunphy were honored.
The selections were made by a vote of MPSF men's volleyball head coaches.
Fourth-ranked UCSB returns to action April 26 as it takes on top-ranked Pepperdine in a MPSF semifinal at Firestone Fieldhouse in Malibu (5:30 p.m.).


text:
Your browser does not support iframes.
• First Baptist Church in Quincy holds Sunday School each week at 9:45 a.m., followed by worship at 10:55. Sunday evening worship begins at 6 p.m. Sunday morning worship services are broadcast on Sunday events at 6 p.m. on 93.3 FM.
• Church services at Mt. Pilgrim Primitive Baptist Church are held the first, second and fourth Sundays at 11 a.m., and at 8 a.m. on the third Sunday of each month. Church school begins at 9:45 a.m. each Sunday morning.
"As soon as there is a little sign of warmth, people start getting antsy. They want to work in the yard and they are ready to plant," said Alex Bolques, a horticulturist with Gadsden County Cooperative Extension Service.
He said there are different categories property owners should consider when deciding how to plant. First, there is the public landscape that people see when they pass a home or that which is readily seen by public traffic.
Every 1.3 minutes, it is estimated that a woman in the United States is raped, and one out of every four women will become a victim of sexual assault during her lifetime.
"It's these very statistics that we have to get out into the open," said Debra Lloyd, local coordinator for Refuge House, a counseling service and shelter for victims of domestic violence and sexual assault.
Quincy Police Department Sgt. Troy Gilyard was on street patrol Monday afternoon around 5:30 when he received a call that a child was not breathing on Betlinet Drive in Quincy.
"I was in the area when I heard the call. I was the first one on the scene," he said.
When Gilyard got out of his vehicle, Tommasena Godwin rushed out of her home with her 1-year-old child in her hands. Gilyard said she was frantic and screaming that the child wasn't breathing.
The Gadsden County NAACP Branch meets every second and fourth Thursday of each month at Union Hall at 6:30 p.m. All interested citizens are invited to attend and join. This branch will host its annual banquet March 28 at New Bethel AME Church's Multippurpose Center at 6 p.m. Contact Sam Palmer at 627-2673 for information and tickets.
Franklin M. Springer is the first paramedic to retire from Gadsden County's EMS. He was recognized by the Gadsden County Board of Commissioners, and was presented a plaque by Eugene Lamb, commission chairman. Look for a feature story on Springer in next week's edition.
Alpha Kappa Alpha sorority recently celebrated its 100th anniversary with a social for the residents at River Chase Nursing Center. As is customary, the residents were given treats. A joint Founders Day celebration was held that included sorority members from Delta Kappa Omega, Chi Upsilon Omega and Beta Alpha Chapters with activities at Brynwood Nursing Home, a Habitat for Humanity project, a luncheon at the civic center in Tallahassee and a worship service at Bethel AME Church in Tallahassee.
Cynthia and Willie L. Washington, along with Georgia and Charlie Hayes, are pleased to announce the engagement and forthcoming marriage of their children, Tiffany M. Washington and Charlie K. Hayes.
The bride-elect is a 2003 graduate of James A. Shanks High School, and is employed as an assistant manager. She is the granddaughter of the late Hazel Washington.
The groom-elect is a graduate of Lincoln High School, and is employed with the Leon County Sheriff's Office.
The wedding is planned for March 14 at the Senior Citizens Center, with a reception to follow.
Michael and Judy Sherman, along with Priscilla and Tim Ward, are pleased to announce the engagement and forthcoming marriage of their children, Tiffany S. Sherman and Victor N. Francis Jr.
The bride-elect is a graduate of James A. Shanks High School and Tallahassee Community College. She is employed at Franklin Correctional Institution.
The groom-elect is a graduate of East Gadsden High School and is also employed at Franklin.
Copyright © 2019
The Gadsden County Times is your source for local news, sports, events and information in Gadsden County and Quincy, FL, and the surrounding area.


text:
The big "Bail Out The People" demonstration marched through Pittsburgh. There were somewhere between 3-5,000 people. They were peaceful. There was a contingent of anarchists, wearing masks of various types, shouting with raised fists which needless to say made the police really nervous.
I have several photos for you.
The demonstrators coming down the street. The sign reads "Poor People's Economic Human Rights Campaign."
"CEOs are Thieves"
"Greed Kills"
"People Before Profit"
The last guy in the march beating a last drum for the last bailed out banker's bonus
There was also a large Falun Gong contingent. Let me know if you want me to post pictures of them.
It appeared that the police might have outnumbered the demonstrators. I have iPhone video which I can try to post that shows just how many police there were, just where I was. One the one hand there were people looking for trouble, who broke lots of windows and threw bricks at the police last night. On the other hand it is highly intimidating and creates an atmosphere where people are afraid to join peaceful protests.


text:
Nearby Cities:
Nearby Cities:
Glenn Tompkins is recognized as a top producing Realtor in the greater Sacramento area. With nearly 15 years of exceptional Real Estate experience, Glenn prides himself on exceptional customer service and a strong work ethic. He has developed a solid foundation of clients through their ability to build lasting and trusting relationships. Glenn specializes in luxury home listings, horse properties, new home construction, investors, first time home buyers & more in Folsom, El Dorado Hills, Fair Oaks, Granite Bay, Sacramento and the surrounding areas. He is also one of the few agents offering Rent-to-Own options for his customers. Want to chat...let's talk Real Estate!
©2019 Metrolist. All rights reserved. Information deemed to be reliable but not guaranteed. The data relating to real estate for sale on this website comes from Sacramento Metrolist and the Broker Reciprocity Program.sm. Real estate listings held by brokerage firms other than Re/Max Gold are marked with the BR logo and detailed information about them includes the name of the listing brokers. All measurements and all calculations of area (i.e., Sq Ft and Acreage) are approximate. Listing broker has attempted to offer accurate data, but buyers are advised to confirm all items. Information last updated on 2019-05-19. Terms of Usage Agreement


text:
NALCO Limited
Winnington Avenue
Winnington Northwich, Cheshire, UK, CW8 4DX
Thank you for your interest in our Nalco Water & Process Services offerings. Tell us how we can help you and one of our water, energy or air experts will get back to you.
Phone: +44 1606 320 281 | Fax: +44 1606 721 839 | Email: email@example.com


text:
Amber Lynn Henderson and Brent Alan Busch announce their engagement and upcoming marriage.
Parents of the couple are Bill and Therese Henderson of Pocahontas and Dennis and Gloria Busch of Ringsted.
Amber graduated from Pocahontas High School in 2009 and Iowa Lakes Community College in 2010 from the early childhood program. She works for Discovery Daycare and the Udder Cow Restaurant.
Article Photos
Amber and Brent
Brent graduated from Armstrong-Ringsted High School in 2008 and Iowa Lakes Community College in 2009 from the welding program. He works for Michaelson, Inc. of Armstrong.
An Oct. 15 wedding is planned at St. Mary's Catholic Church in Pomeroy.


text:
VLTOR M14 Modstock
10 super-cool custom-modified M14 (M1A) rifles seeing action around the globe.
This photo gallery is excerpted from the article Old Soldiers Never Die, They Just Get Upgraded, by Gary Paul Johnston, appearing in the Gun Digest 2014 Annual Book.
Click Here to get your copy of the Gun Digest 2014 to read the full article!


text:
I've started editing one of my novels again and have pulled out my editing bible to help me get back into the right headspace. It's an unassuming but brilliant little book called Writing Tools: 50 Essential Strategies for Every Writer, by Roy Peter Clark. I suggest everyone buy themselves a copy (I get no money for that advertisement). One editing tool I particularly like was conjured the other day during a conversation with my fiance. It happened after he'd read a review I did of Kathryn Apel's delightful debut picture book, This is the Mud!, and went something like this:
Andrew: He he he
Me: *frown* What are you laughing at? (I can tell he's laughing at me, rather than at something wonderfully witty I've written)
Andrew: You said 'beef cow' in your review
Me: And…
Andrew: Why wouldn't you just say cow?
Me: Because it wasn't just a cow. It was a beef cow.
Andrew: You're so clever, intelligent, witty and wonderful. No wonder I'm marrying you (or something to that effect)
Anyway, the point is that I included that detail because if I'd just said 'cow', people would have automatically imagined a black and white dairy cow. When writing is unspecific, people's minds automatically generate stereotypical and uninteresting landscapes. Small details are an immediate way to conjure vivid images, helping the viewer to feel as if they're standing knee deep in mud in that paddock with a looming great beef cow. The writing tool this conversation reminded me of in Clark's book is:
Get the Name of the Dog: dig for the concrete and specific, details that appeal to the senses
The name comes from a journalism office, where the editors would remind their reporters not to return to the office without "the name of the dog" – not because they would necessarily use the detail in the story, but as a reminder to keep their eyes and ears open. Clark also says that "when details of character and setting appeal to the senses, they create an experience for the reader that leads to understanding", and gives a range of fascinating examples highlighting just that.
All this sounds simple enough, but I still find non-specific nouns lurking in my prose, even on the third read through: flowers and coffee and women that should be tulips and espresso and spinsters. Small details that immediately change the way a sentence rings. Words that give a clear image and conjure a mood the reader can't mistake. When you say that your protagonist kicked a can, do you want us to see an indifferent nudge with the foot, or a moody thrashing? As a reader, I get annoyed when there isn't enough detail – my mind automatically fills in the void, and if I've gone in the wrong direction, I get frustrated when (a few lines on) they reveal what was actually meant.
Specific, simple, sensory details – quiet but vivid writing – is some of my favourite prose to read. Now back to editing my novel in an attempt to achieve just that…


text:
Are you going to be playing tomorrow jan.14th at Clark High at 3pm ? Most likely i can make it to this one. This would be my first time , could i have your number , just in case for directions.
Wanted to check if you can play tennis this weekend, jan. 14 , 15th, saturday , or sunday.
--thanks, leela.
Hi, I'm Mark, the founder of Tennisopolis, the world's largest and most active tennis network. Please share Tennisopolis with your friends by supporting our Facebook page. Click here for a Guide to Meet Tennis Partners.
Have a look at our introduction page which will help you navigate the massive network which now has over 37,000 members and 500 local tennis groups.
Friend me,
Mark, The Mayor of Tennisopolis
© 2019 Created by Mark / The Mayor. Powered by


text:
There may be literally hundreds of affiliate programs ongoing in the Internet at present, but only a handful of those may qualify as the best and the pick of the crop. It would be in your interest as well to join the best affiliate programs because there are greater chances for you to earn big money from a select few but highly recommended affiliate programs than joining numerous affiliate programs that offer little or absolutely no support to its affiliates.
Distinguishing Characteristics of the Best Affiliates Programs
Expect the best affiliate programs to have the following characteristics. If the affiliate program you've got your eye on offers everything on this list as well then don't waste your time: join it right away!
The Best Affiliate Programs are Picky.
They don't waste time with useless affiliate websites. They only choose to accept affiliate websites they are convinced of having the potential to grow with them. And realistically speaking, you'll benefit more from a selective affiliate program because at the end of the day, other affiliates of the online merchant are your competitors as well. But of course, if there are only a few of you in number, you get the luxury of thinking them as comrades.
The Best Affiliate Programs are Selling Something Unique.
It could be a product or service, but the keyword here is unique. The affiliate merchant is selling something that few – or if you're lucky no one else – is selling and that's to your advantage because once again, you've got the market all to yourself. This however is probably the hardest qualification of all so if the affiliate program you've got your eye on has everything but this – it's okay. Best doesn't mean perfect, after all.
The Best Affiliate Programs have Room and Plans for Growth.
The rate of money you're earning from an affiliate program may become stagnant or unchanging if the affiliate company is uninterested of or unable to grow its business. This is obviously bad news for them but it's bad news for you as well: when you've sold everything there is to sell to your existing customers, what next? Working with such an affiliate program simply puts to waste all the years you've worked hard. If you wish for an affiliate program to be a permanent source of income for you, make sure that the company you'll be working with has definite long-term plans.
The Best Affiliate Programs Offer Competitive Rates.
Naturally! Why work for an affiliate program that offers substandard rates when you have the opportunity to work for something better? Always look for the best rates. Take your time to browse the Internet. It's better to have a small group of affiliate programs that offer competitive rates than a large number of programs which offer lower fees. Why work more when you don't have to? Why work for less when you don't have to?
The Best Affiliate Programs Don't Compete with their Affiliates.
Again, this may seem like a given, but there are still a number of affiliate programs who insist on cheating on their affiliates and there are still a number of affiliates who let themselves be cheated on. Affiliate programs work better when members and the parent company work together and not against each other.
The Best Affiliate Programs are bound by the Law and Ethics.
They don't hesitate to show you the full contract upon request. The terms and conditions are clearly and fully explained and you're welcome to inquire as often as you need about working with them. They treat you in an ethical manner. They don't cheat you out of your money. They're even willing to negotiate because they understand it's your right to do so.
The Best Affiliate Programs have Reliable and Accurate Tracking Systems.
That way you'd be able to get a hold of your sales or lead records any time you want to. Don't feel shy to ask what tracking system software they're using. Having a reliable and accurate tracking system would ensure that you're being paid the correct amount of commission every month.
The Best Affiliate Programs Always Offer Marketing Support.
Last but not the least, the best affiliate programs understand that the success of affiliates are their success as well so make sure they provide as much resources and support they can afford to their affiliates.


text:
Password needs to be a minimum of 6 characters.
Thank you for registering an account! With this account you will be able to save items to your favorites, place items in a cart, and share your digital images with others.
by creating an account, you agree to our Website Policies and Privacy Policy
Due to variances in monitors, the colors and patterns displayed may vary slightly from the actual product. Physical samples should be ordered prior to specifying.
Fanciful wisely uses the rich horizontal texture of Luminaire and combines it with a large contemporary design inspired by classic ornate fretwork.This item is also available 27" wide as MCD2071N


text:
About NCLE
The National Center for Literacy Education's (NCLEs) first policy symposium is scheduled for May 15, 2012 from 10:00 to 11:30 a.m. in the Cannon House Office Building, Room 122, Washington, D.C.
Learn about the goals and activities of this coalition of stakeholder groups dedicated to building capacity for school change based on educator teams across content areas focused on literacy learning. Linda Darling-Hammond video clips (see below) will punctuate remarks by the NCLE directors, and stakeholders will explain their organizations' commitment to this national effort. Read the agenda.
Presenters include:
Two Different Approaches to Reform: Capacity building versus incentive-based reform
Linda Darling-Hammond speaking at the November 2011 NCTE Convention, Chicago, IL
Creating the Right Conditions: Supporting collaborative, inquiry-based professional development
Copyright © 1998-2019
National Council of Teachers of English. All rights reserved in all media.
1111 W. Kenyon Road, Urbana, Illinois 61801-1096 Phone: 217-328-3870 or 877-369-6283
Looking for information? Browse our FAQs,
tour our sitemap
and store sitemap,
or contact NCTE
Read our Privacy Policy
Statement and Links Policy.
Use of this site signifies your agreement to the Terms of Use
Visit us on:
This document was printed from http://www.ncte.org/ncle/may15event.
NCTE - The National Council of Teachers Of English
A Professional Association of Educators in English Studies, Literacy, and Language Arts


text:
Award-winning fiction writer David Bezmozgis will make his first visit to Wabash College to give a public reading at 8 p.m. on Thursday, October 21. In addition to his public reading, Mr. Bezmozgis will spend time with Professor Eric Freeze's English students.
"I first read David Bezmozgis's work following the 2009 New Yorker Festival where I heard him read with Jonathan Franzen," said Professor Freeze. "He is phenomenal stylist, someone to watch in coming years, especially with his novel debut, The Free World, coming out next semester."
A Latvian-born writer and filmmaker, Bezmozgis immigrated to Canada when he was a child and earned his undergraduate degree in English literature from McGill University. He later earned his master's degree in fine arts from the acclaimed University of Southern California School of Cinema and Television. His first student film, a 25-minute documentary called L.A. Mohel, was the top student film at the Judah L. Magnus Museum festival, and also was accepted at film festivals in Seattle, Miami, Los Angeles, Boston, and Hong Kong.
His short story "Natasha" originally appeared in Harper's and was included in the Best American Short Stories of 2005 collection. His first book, Natasha and Other Short Stories, was published in 2004. He followed up that success with "New Gravestone for an Old Grave, which first appeared in Zoetrope and was included in the Best American Stories of 2006 collection.
Professor Freeze said he finds Bezmozgis because of his "non-traditional route to success."
"He started out in screenwriting and part of the appeal of his work for me is because of the almost cinematic portrayal of his characters," said Dr. Freeze. "He understands image and how it can work to move a narrative along. But his stories also tend to be very language-based, not at all the work you usually find in screenwriting. I think that he will be interesting to our students because of his diverse background in both literature and film."
Several recent Wabash graduates have taken their liberal arts backgrounds into film school, including Reynaldo Pacheco '07 and Andrew Ditz '07, who both attended the USC master's program in film directing, and Russell Harbaugh '06, who is finishing his MFA in directing at Columbia University.
After the success of his early short stories, Bezmozgis returned to film and in 2008 completed his first feature film, Victoria Day, which he wrote and directed. The film premiered at the Sundance Film Festival and has since appeared at film festivals around the world.
"Even if you didn't know Toronto's David Bezmozgis is a talented short story writer, you might guess it from the way he weaves detail into Victoria Day, his feature film debut," wrote the Toronto Star. :He has the authorial eye for the small reveals that add up to a complete character."
He is presently working on a novel, The Betrayers, about a famous Russian Jewish dissident who, after the fall of the Soviet Union, meets the man who denounced him.
Bezmozgis is a New York Public Library Cullman Center Fellow. He was named to The New Yorker magazine's 2010 top 20 fiction writers under the age of 40. The story "The Train of Their Departure," which the magazine featured in August 2010, is an excerpt from his upcoming novel The Free World, set for release in April 2011.


text:
The Hetch Hetchy Power system is composed of three hydroelectric powerhouses: Moccasin Powerhouse, which includes a small, in-line hydroelectric unit, Kirkwood Powerhouse and Holm Powerhouse. The combined total hydroelectric output for these facilities is over 400 megawatts. Hydroelectric generation at Moccasin and Kirkwood Powerhouses rely on gravity-driven water flowing downhill from the Hetch Hetchy Reservoir. Holm Powerhouse generates energy from gravity-driven water flowing downhill from Cherry Lake. On average, the Hetch Hetchy Power System generates 1.6 billion kilowatt hours of clean, hydroelectric energy each year.
This process starts at the source. Gravity gently coaxes water from the reservoirs in the Hetch Hetchy Water and Power System. At our hydroelectric powerhouses, large turbines harness the kinetic energy of gravity-driven water, transforming it into hydroelectric power. This clean energy is then transmitted to San Francisco along City-owned transmission lines that transverse the State of California from east to west. Once in the City, the energy is distributed to the City's municipal facilities and retail customers; SFO, SFGH, MUNI, Police, Fire, retail City tenants, residences and businesses in the San Francisco Shipyard and Treasure Island. In normal-to-high precipitations years, we sell energy on the California energy markets.
Moccasin Power House, featured above, is the powerhouse furthest downstream. The control room at Moccasin Powerhouse not only operates all three powerhouses, but also remotely starts and stops generating units, adjusts generator speeds and takes all necessary readings. Holm Powerhouse is the largest of the three powerhouses.
San Francisco benefits immensely from owning and operating the Hetchy Power System. Hetch Hetchy hydroelectric energy is cost-effective and 100% greenhouse gas-free. It does not produce any harmful radioactive byproducts or leave behind any waste. Its cost-effective, clean electricity keeps our environment clean and helps the City's fiscal bottom-line.


text:
Jul 12, 2009
HBP Film
Thanks to Claire from our Order partner RupertGrint.net for some wonderful High res photos of the Trio taken recently while here in New York for the premiere of Half-Blood Prince. At this link you can see new photos of Dan Radcliffe, Rupert Grint and Emma Watson in our Image galleries.
Thanks Claire!