text:
This month adds a text editor to the PC C toolset that we are building. The past two "C Programming" columns contained a window library, data entry windows, and a menu manager. Future columns will add help windows, communications functions, and file transfer protocols to the package. Eventually it will all be gathered together into an integrated utility program. But before we get to this month's text editor, I want to deal with a reader concern which has been steadily gaining in volume.
Several readers have expressed their dismay that this project is locked in Turbo C, therefore locking them out. I recognize this as a valid concern and will address this in the January 1989 column.
The correction will take the form of a library of functions and macros that translate the Turbo C specific code into code acceptable to Microsoft's C. In the January column I will describe the library so that users of compilers can develop similar libraries. Now back to business.
To design a text editor, we need to examine our requirements, first to see why we need one and then to see what it should do. Probably nothing in computing is as personal as your editor, whether you use it for word processing or for entering source code. Because you and I are the users of this package, and because each of us already has a preferred editor and word processor, we should question our motives for adding yet another one to the selection. Then, assuming we find justification for another editor, its design must cater to the particular requirements of each of us. Not an easy objective, but a noble one, nonetheless.
The program that results from all this will be a communications utility package for access to an on-line service. On-line services involve the exchange of text--mail, forum conversations, and messages to SYSOPs--between the users. Therefore, an access program needs the entry of free-form text, in other words, a text editor. We could specify that a user can use his or her own editor, and we could provide a gateway to it in our code. Perhaps that feature is an additional requirement for our system. Even so, no doubt there will be other places in the program where text entry is required, places where it would be awkward to exit to a text editor and attach the resulting text data entry to the data structures being built. Real-time conference conversation processing might be one such application. It seems, therefore, that we need a window-oriented text editor, one that can be called from a program to collect text through a window into a buffer.
Because editors usually operate from a command language, and because most users have personal preferences for editing commands, our program must also allow the user to modify the command set.
Listing One and Listing Two are editor.h and editor.c. These constitute the basic window text editor. Next month we will add a pop-up menu shell, text searching functions, and some file management features to create, edit, save, and merge text files. The expanded editor program will constitute a tiny word processor, one that can be integrated into a C application exactly the way we intend to use it for mail and forum messages. As with all our tools, the editor is designed to be reusable for other projects that you or I might undertake.
Before I describe the code, let's discuss the editor philosophy. I had to consider three things in the design: the way the editor will work internally; how it can be customized; and what word-processing features it will include.
I decided to adapt the window text editor from my books about Turbo C and QuickC. The code works properly, is mine and yours to use, and is reasonably small. It is modified here to use the more concise window functions from this column and to be extensible in that it is easy to add commands without modifying the source code of the editor itself. It also now has the potential for recursive calls to the editor. Although there are no immediate plans for a multiple-window editor or for one that can be called recursively, the editor should not preclude those features. Therefore, the code will allow an application to preserve the editor's current environment and reinvoke the editor for a different environment (window, buffer, and so forth).
To use the window text editor in a program, you must provide a window and a buffer with, perhaps, some text already in it. The buffer's size is a function of the width of the widest allowable text line and the maximum number of lines of text. You tell the editor these two dimensions when you execute it. The editor assumes that the window is wide enough to hold the lines and that the buffer is deep enough for a text file with the maximum number of lines. This approach, which uses trailing spaces to fill out each line, uses more buffer memory than one that uses newlines in the text, but the code for managing the cursor and blocks of text is less complex. The buffer is essentially an xy rectangle of y rows by x columns.
Because the fixed rectangular buffer must fit horizontally inside the window, the editor does not provide for horizontal scrolling. This means that lines cannot extend beyond the right margin of the window. It also means that a text file cannot have variable margins. These are features that we trade off to get an efficient editor within an application, and their loss does not compromise our requirements for a message composition tool.
The editor does not record or otherwise use the tab character (\ t) in a text buffer. When you type the Tab key the editor inserts the appropriate number of spaces to put the cursor at the next tab stop. Tab stops are specified as fixed intervals of character positions. The width of the interval can be configured when you compile the editor code.
The editor allows you to mark text blocks for move, copy, delete, and paragraph operations. These blocks are online boundaries rather than at character positions. This choice, too, was made in the interest of efficient code.
Customizing the window editor consists of changing some default values and providing your own command keys instead of the ones that are published. If you make such changes, when the menu shell and help windows are added later you will need to change the text that tells you what these commands are. For now, however, you only need to redefine the configured command values found in editor.h. The editor commands are single key stroke values that are delivered by the function getkey in window.c (September DDJ). The configurable commands have mnemonic global names such as END_LINE and DELETE_WORD. Change their values by defining different values for them. Note that this approach uses single keystrokes as editor commands. If you want to make this editor emulate the WordStar double stroke sequences like the Borland and QuickC editors do, you must write a getkey substitution that knows about them. There is a precedent for doing this--lots of people are comfortable with the WordStar command set--but the editor as published here does not support double stroke sequences.
Three other configuration items are found in editor.h. These are the width of the tab stops, whether the editor comes up in insert or overwrite mode, and whether the editor comes up with automatic paragraph reforming enabled.
To change the editor's window colors, change the TEXTFG, TEXTBG, BLOCKFG, and BLOCKBG global values in window.h from the September "C Programming" column. Text colors are the normal colors for the text editor window and should be specified as the window's colors when you establish the window that the editor will use. Block colors are set by the editor when a block is marked. The editor resets the window to the text colors for nonblocked displays. Color configuration was discussed in September.
Of course, one other level of customization is available to you. You have the source code to this editor, and you can make it do anything you want within the limits of your abilities with the C language.
No one will use this editor to replace Word, WordPerfect, XyWrite, or WordStar; nor will you toss out Brief, vi, Vedit, EMACS, or the Norton Editor. Nonetheless, the editor needs a sufficient set of word processing features to make it useable for entering messages. From my experience with word processors and on-line services comes a set of features that I believe to be the minimum, and these are built into the editor. Realizing, however, that the need for more features will no doubt come later, I wrote the code so that extensions--those new, undiscovered features--could be easily tacked on. More about that later; first the minimum features.
Text Entry--You can type words into the buffer. Word wrap occurs when the word being typed reaches the right margin or when an inserted character pushes the rightmost word to the margin. When you type, the insert or overstrike mode is effective. Paragraphs can be automatically reformatted as you type or not as determined by a programmed toggle.
Cursor Movement-You can move the cursor around by characters words pages, tabs, to the right or left of the line, to the top or bottom of the window, or to the beginning or end of the text. If you type the Enter key, the cursor moves to the next line, first column. If this is done in insert mode, the line is split.
Editing--You can delete characters (left or right), words, lines, or blocks. You can mark a block of lines and then move, copy, delete, or form a paragraph from the block. You can unmark a marked block.
Paragraphs--A paragraph begins with an indented line. The indent is the number of spaces in the tab interval. Automatic paragraph reforming occurs from the cursor position up to the next paragraph or blank line. The paragraph command does likewise when no block has been marked.
These are the basic text editing features of a buffer of text that is edited through a window by our text editor. The file management aspects of the editor project come next month when we see how to read and write text files into and from the buffer. We will also add the text searching algorithms and a menu shell. Nothing about this program pushes the technology. We have added a tool to our collection, one that will enable free-format text to be entered and changed in a window by the users of our programs.
Listing One is editor.h. It is used to define the editor's command set and default mode Settings. The #define statements for the commands assign key values to command mnemonics. The key values are taken from window.h or are defined here. Keystrokes have the values returned by the getkey function in window.c. The values for function keys are formed by adding the value 128 to the scan code returned by BIOS thus setting the most significant bit and forming a unique 8-bit value for the key stroke. Because window.h does not have all the possible key values defined, each addition to the tool set that needs other key values must define them themselves. Thus, we have the two Alt key definitions at the top of editor.h.
The TAB mnemonic defines the width of tab stops. As published here, TAB is 4, so tabs will occur at 5, 9,13, and so on. If you change TAB, the tab positions will change accordingly.
The REFORMING variable is set to TRUE or FALSE to specify whether automatic paragraph reforming will occur as you type. If you set it to TRUE, the editor tests to see if the paragraph needs to be reformed each time a character or word is deleted and when word wrap occurs. This test compares the white space at the end of the current line with the length of the first word on the next line. If the word will fit at the end of the current line, the paragraph is reformed. This is a convenience when you are entering raw text; it would be a pain in the neck for code or a table. Therefore, the menu software next month will include a command to turn the mode on and off. On some slow processors the automatic reformat gets sluggish when a word is wrapped near the top of a long paragraph, and the display of the keys you type falls behind the speed of a medium to fast typist. To improve this performance, remove the call to test-para in the function carttn in editor.c. This will change the reformat rules during word wrap to work on just the current and next line of text, pushing the rest of the paragraph down a full line when room is needed. Later a press of the PARAGRAPH command (F2) will complete the reformat operation. This approach is close to the way WordStar works. The original approach is similar to, but not as fast as, XyWrite.
The INSERT variable is set to TRUE or FALSE to indicate whether typing is in insert or overstrike mode. The value assigned to the global symbol is the default mode when the editor is started. Thereafter the Ins key toggles the mode. The #ifndef is for programs that use the data entry functions from October. That library also has an INSERT mode for data entry templates, and the #ifndef prevents the two #define statements from colliding.
editor.h defines the edit_env structure, which contains all the variables related to the environment of a particular invocation of the editor. Later, if we decide to use multiple windows or if we need to invoke a secondary editor from within a primary one, we will stack the incidence of the structure declared as ev in editor.c.
editor.c contains the window text editor function. You call the function named text_editor and pass it the address of your edit buffer, the maximum number of lines in the buffer, and the length of the longest line. You must have established a window with estabtish_window in window.c, and that window must be able to contain lines of the width specified in the call to text_editor. In other words, the window must be at least as wide as the line length plus two for the window borders. The size of the buffer must be at least the line length times the line count and should contain displayable text data or spaces. The text_editor function returns the keystroke that terminated the edit session. This value will be either the Esc key or the QUIT command (Alt-Q as published). A program can test this value to know what the user intends to do with the buffer of text.
The text_editor function displays the text in the window and begins accepting data keys or commands from the user. With each keystroke the function pointed to by the status_line function pointer is called. This allows the application program to show buffer status information such as the page and line numbers and the mode settings. To use this feature, the application must initialize the pointer to the address of the function that displays the status. We will use this feature next month.
The variable named forcechar appears on lines 84 and 85. If forcechar has a non-zero value, that value is substituted for the next key press. This mechanism allows external code to force the execution of a command. External code can be defined by an address in the function pointer named editfunc. If you initialize this pointer to the address of a function, the function will be called whenever the editor cannot recognize a keystroke. The value of the keystroke is passed in the call to the function on line 244. The function can view the external structure named ev to examine the editor's environment, it can modify that environment, and it can force execution of a command when it returns by placing a command value in forcechar This mechanism will be used next month to add file management, menus, and text searching to the editor. It is how we make the editor extensible without modifying the code in the editor itself.
Most of the code in editor.c explains itself about as well as C code can explain itself without extensive comments. At least I think so. It works for me and I hope it does for you too. My commenting practices follow a convention that identifies the purpose of each function in a comment at the beginning of the function. Variables that are not obvious get comments that describe their purpose. Where code gets downright abstruse, I will insert comments as it goes along, but mostly I prefer to let the code describe itself. This habit and preference comes from years of reading the code of others where their extensive and verbose comments predate the code by generations of modifications. I have been lulled into believing beautifully crafted comments and have thus been subliminally conditioned to assume things that are not true. This loses time. Later, when my confusion reaches an intolerable level, I resort to reading the code, only to find that it disagrees with the comments. No matter whether the comments are statements of intent never realized or accurate descriptions of code no longer in place; the comments say one thing and the code does another.
As a matter of conviction and to preserve the remnants of my sanity, I now refuse to read comments that are written as pseudocode unless I am sure the program has never been modified. Even then I am reluctant. Those comments are rarely (if ever) maintained as the code is being developed or later when it is changed. Perhaps your experiences are different; perhaps the rigidly enforced standards and procedures of your employer keep this crotchet out of your shop; and perhaps you believe that. I do not.
C language code is not always its own best documentation. It is, however, the most reliable statement of what is going on in the program. My practice serves me well because I tend to remember what those cryptic variable names mean, and I prefer small functions with simple purposes. If the function works, its purpose is understood, and it is small, then it can be thought of as a black box, can be read, and can be trusted. Not that I always practice what I preach; text_editor is a big function, although it is mostly a lot of small cases to a key stroke switch.
By the way--I don't much care to read code that has been commented out either. A faraway, out-of-sight #if DEBUG statement or an as yet unterminated /* start-of-comment token can have you reading reams of code that does not exist.
On the other hand, my pal Bill Chaney says that anyone who fails to provide ample comments in an assembly language program should be required for penance to spend a year maintaining COBOL/CICS screen driver programs for the Puerto Rican income tax system.
Testedit.c, Listing Three is a simple example of the use of the text editor. Compile and link testedit.c with editor.c and window.c. You run it by naming a text file on the command line. This is not a standard text file; it is an image of the editor's rectangular buffer, so the first time you run testedit, you can give a file name that does not exist and the program will build it. testedit establishes a window, reads the file--if it exists--into the buffer, and calls the text_editor function. If the Esc key is not returned, which means that you pressed the QUIT key (Alt-Q), the buffer is written to the file that you named on the command line. If you press Esc, the program exits without writing the buffer.
This program is not very smart. Its purpose is to demonstrate how to set up, use, and exit from the window text editor. Next month's offering incorporates this new editor engine into the tiny word processor I mentioned earlier. I will take drastic measures to test the tiny word processor when I write next month's column. I will, temporarily at least, abandon my beloved XyWrite and use the tiny word processor for the month's work, risking the fruits of my creative labors to a new and unproven text editor. This, dear readers, is dedication and commitment. Expect nothing less from a DDJ columnist.
Al Stevens
[LISTING ONE]Internal Text Formats and Operation
Customizing the Editor
Word Processing Features
The Editor Software
Crotchet Number Six: Obsolete Comments
An Example for Using the Text Editor
<a name="020c_000b">
/* ------------ editor.h ------------- */
#define ALT_Q 144
#define ALT_R 147
/* -------- configured editor commands ---------- */
#define BACKTAB SHIFT_HT
#define NEXTWORD CTRL_FWD
#define PREVWORD CTRL_BS
#define TOPSCREEN CTRL_T
#define BOTSCREEN CTRL_B
#define BEGIN_BUFFER CTRL_HOME
#define END_BUFFER CTRL_END
#define BEGIN_LINE HOME
#define END_LINE END
#define DELETE_LINE ALT_D
#define DELETE_WORD CTRL_D
#define INSERT INS
#define QUIT ALT_Q
#define PARAGRAPH F2
#define BEGIN_BLOCK F5
#define END_BLOCK F6
#define MOVE_BLOCK F3
#define COPY_BLOCK F4
#define DELETE_BLOCK F8
#define HIDE_BLOCK F9
#define REPAINT ALT_R
/* ------- configured default modes ----------- */
#define TAB 4
#define REFORMING TRUE /* auto paragraph reformat mode */
#ifndef INSERTING
#define INSERTING TRUE /* insert/overwrite mode */
/* ---------- editor prototype ---------------- */
int text_editor(char *, int, int);
/* ------- macros ------------ */
#define curr(x,y) (ev.bfptr+(y)*ev.wwd+(x))
#define lineno(y) ((unsigned)(ev.bfptr-ev.topptr)/ev.wwd+(y))
/* ---------- editor environment ------------- */
struct edit_env {
int envinuse; /* TRUE if the env is in use */
struct wn *wdo; /* the editor window */
int wwd; /* width of edit window */
int wsz; /* size (chars) of window */
char *topptr; /* -> first char in buffer */
char *bfptr; /* -> first char in window */
char *nowptr; /* -> current char in buffer */
char *lstptr; /* -> last nonblank char */
char *endptr; /* -> last char in buffer */
int text_changed; /* TRUE if text has changed */
int nolines; /* no. of lines in buffer */
int blkbeg; /* marked block: 1st line */
int blkend; /* marked block: last line */
int curr_x, curr_y; /* current buffer coordinates */
int edinsert; /* toggled insert mode */
int reforming; /* toggled para reform mode */
<a name="020c_000c"><a name="020c_000c">
<a name="020c_000d">
[LISTING TWO]<a name="020c_000d">
/* ----------------------- editor.c ---------------------- */
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <mem.h>
#include <ctype.h>
#include "window.h"
#include "editor.h"
#define NEXTTAB (TAB-(ev.curr_x%TAB))
#define LASTTAB ((ev.wwd/TAB)*TAB)
#define PREVTAB (((ev.curr_x-1)%TAB)+1)
struct edit_env ev; /* the editor environment */
int do_display_text = TRUE; /* turns display on/off */
extern struct wn wkw; /* the current window */
int forcechar; /* externally force a kb char */
void (*status_line)(void); /* called once each keystroke */
void (*editfunc)(int); /* for unknown keystrokes */
/* ---------- local function prototypes ----------- */
static int lastword(void);
static void last_char(void);
static void test_para(int);
static int trailing_spaces(int);
static int first_wordlen(int);
static int last_wordlen(void);
static void paraform(int);
static int blankline(int);
static void delete_word(void);
static void delete_line(void);
static void delete_block(void);
static void mvblock(int);
static void carrtn(int);
static void backspace(void);
static void fore_word(void);
static int spaceup(void);
static void back_word(void);
static int spacedn(void);
static void forward(void);
static int downward(void);
static void upward(void);
static void display_text(int);
static void disp_line(int y);
static void findlast(void);
/* ----- Process text entry for a window. ---- */
int text_editor(char *bf, int editlines, int editwidth)
int depart, i, c;
int svx, svlw, tx, tabctr, wraplen;
depart = FALSE;
tabctr = 0;
if (ev.envinuse == FALSE) {
ev.wdo = &wkw;
ev.wwd = editwidth;
ev.wsz = ev.wwd * ev.wdo->ht;
ev.topptr = ev.bfptr = bf;
ev.nolines = editlines;
ev.endptr = bf + ev.wwd * ev.nolines;
ev.edinsert = INSERTING;
ev.reforming = REFORMING;
ev.envinuse = TRUE;
set_cursor_type(ev.edinsert ? 0x0106 : 0x0607);
/* ------- read text/command from the keyboard ------ */
while (depart == FALSE) {
ev.nowptr = curr(ev.curr_x, ev.curr_y);
if (status_line)
(*status_line)(); /* external status line func */
gotoxy(ev.curr_x + 2, ev.curr_y + 2);
if (tabctr) { /* expand typed tabs */
c = ' ';
c = forcechar ? forcechar : getkey();
forcechar = 0;
switch (c) {
/* ------------ fixed editor commands ----------------- */
case '\r':
case UP:
case DN:
case FWD:
case '\b':
case BS:
if (!(ev.curr_x || ev.curr_y))
if (ev.curr_x == ev.wwd - 1)
if (c == BS)
ev.nowptr = curr(ev.curr_x, ev.curr_y);
case DEL:
*(ev.nowptr+ev.wwd-1-ev.curr_x) = ' ';
ev.text_changed = TRUE;
case PGUP:
ev.curr_y = 0;
do_display_text = FALSE;
for (i = 0; i < ev.wdo->ht; i++)
do_display_text = TRUE;
case PGDN:
ev.curr_y = ev.wdo->ht-1;
do_display_text = FALSE;
for (i = 0; i < ev.wdo->ht; i++)
do_display_text = TRUE;
ev.curr_y = 0;
case '\t':
if (ev.curr_x + NEXTTAB < ev.wwd) {
if (ev.edinsert)
tabctr = NEXTTAB;
ev.curr_x += NEXTTAB;
/* -------- configured editor commands --------------- */
case REPAINT:
case BACKTAB:
if (ev.curr_x < TAB) {
ev.curr_x = LASTTAB;
ev.curr_x -= PREVTAB;
case NEXTWORD:
case PREVWORD:
case BOTSCREEN:
ev.curr_y = ev.wdo->ht - 1;
case TOPSCREEN:
ev.curr_y = 0;
case BEGIN_BUFFER:
ev.curr_x = ev.curr_y = 0;
ev.bfptr = ev.topptr;
case END_BUFFER:
do_display_text = FALSE;
ev.curr_x = 0;
while (downward())
if (curr(0,ev.curr_y) >= ev.lstptr)
do_display_text = TRUE;
case BEGIN_LINE:
ev.curr_x = 0;
case END_LINE:
case DELETE_LINE:
ev.text_changed = TRUE;
case DELETE_WORD:
ev.text_changed = TRUE;
case INSERT:
ev.edinsert ^= TRUE;
set_cursor_type(ev.edinsert ? 0x106 : 0x607);
case ESC:
case QUIT:
depart = TRUE;
case PARAGRAPH:
ev.text_changed = TRUE;
case BEGIN_BLOCK:
ev.blkbeg = lineno(ev.curr_y) + 1;
if (ev.blkbeg > ev.blkend)
ev.blkend = ev.blkbeg;
case END_BLOCK:
ev.blkend = lineno(ev.curr_y) + 1;
if (ev.blkend < ev.blkbeg)
ev.blkbeg = ev.blkend;
case MOVE_BLOCK:
ev.text_changed = TRUE;
case COPY_BLOCK:
ev.text_changed = TRUE;
case DELETE_BLOCK:
ev.text_changed = TRUE;
case HIDE_BLOCK:
ev.blkbeg = ev.blkend = 0;
if (!isprint(c)) {
/* ---- not recognized by editor --- */
if (editfunc) {
/* --- extended commands --- */
/* --- displayable char: put in buffer --- */
if (ev.nowptr == ev.endptr-1 ||
(lineno(ev.curr_y)+1 >=
ev.nolines && ev.edinsert &&
*curr(ev.wwd-2, ev.curr_y) != ' ')) {
error_message("End of buffer...");
if (ev.edinsert) /* --- if insert mode --- */
if (ev.nowptr < ev.endptr) {
if (ev.nowptr >= ev.lstptr)
ev.lstptr = ev.nowptr + 1;
*ev.nowptr = (char) c; /* put in buff */
if (ev.nowptr == curr(ev.wwd-1, ev.curr_y) &&
c == ' ' && ev.edinsert) {
if (strncmp(curr(0,ev.curr_y+1),
else if (ev.endptr &&
*curr(ev.wwd-1, ev.curr_y) != ' ') {
/* ------- word wrap is needed ------- */
ev.nowptr = curr(ev.wwd-1, ev.curr_y);
svx = ev.curr_x; /* save x vector */
svlw = lastword(); /* last word on line?*/
ev.curr_x = ev.wwd-1;
if (*(ev.nowptr-1) != ' ')
tx = ev.curr_x;
wraplen = last_wordlen();
if (trailing_spaces(ev.curr_y+1) <
else if (strncmp(curr(0,ev.curr_y+1),
else {
ev.nowptr = curr(0, ev.curr_y+1);
setmem(ev.nowptr, wraplen+1, ' ');
wraplen, ' ');
if (svlw)
ev.curr_x = svx-tx;
ev.curr_x = svx, --ev.curr_y;
ev.text_changed = TRUE;
return c;
/* ----- see if a word is the last word on the line ------ */
static int lastword()
int x = ev.curr_x;
char *bf = curr(ev.curr_x, ev.curr_y);
while (x++ < ev.wwd-1)
if (*bf++ == ' ')
return 0;
return 1;
/* --- go to last displayable character on the line --- */
static void last_char()
char *bf = curr(0, ev.curr_y);
ev.curr_x = ev.wwd-1;
while (ev.curr_x && *(bf + ev.curr_x) == ' ')
if (ev.curr_x && ev.curr_x < ev.wwd - 1)
/* ----- test to see if paragraph should be reformed ----- */
static void test_para(int x)
int ts, fw;
int svb, sve;
if (ev.reforming && ev.curr_y < ev.nolines) {
ts = trailing_spaces(ev.curr_y);
fw = first_wordlen(ev.curr_y+1);
if (fw && ts > fw) {
svb = ev.blkbeg, sve = ev.blkend;
ev.blkbeg = ev.blkend = 0;
ev.blkbeg = svb, ev.blkend = sve;
if (svb)
/* ---- count the trailing spaces on a line ----- */
static int trailing_spaces(int y)
int x = ev.wwd-1, ct = 0;
char *bf = curr(0, y);
while (x >= 0) {
if (*(bf + x) != ' ')
return ct;
/* ----- count the length of the first word on a line --- */
static int first_wordlen(int y)
int ct = 0, x = 0;
char *bf = curr(0, y);
while (x < ev.wwd-1 && *bf == ' ')
x++, bf++;
while (x < ev.wwd-1 && *bf != ' ')
ct++, x++, bf++;
return ct;
/* ----- count the length of the last word on a line --- */
static int last_wordlen()
int ct = 0, x = ev.wwd-1;
char *bf = curr(x, ev.curr_y);
while (x && *bf == ' ')
--x, --bf;
while (x && *bf != ' ')
--x, --bf, ct++;
return ct;
/* ------------ form a paragraph -------------- */
static void paraform(int x)
char *cp1, *cp2, *cpend, *svcp;
int x1, y1, firstline = TRUE;
int y = ev.curr_y;
if (!ev.blkbeg) { /* ---- if block not marked ---- */
if (blankline(lineno(y)+1))
return; /* next line is blank, no reform */
ev.blkbeg=ev.blkend=lineno(y)+1; /* pseudoblock */
y1 = y+1;
while (ev.blkend < ev.nolines) { /* look for para */
if (strncmp(curr(0, y1++), " ", TAB) == 0)
if (lineno(y) != ev.blkbeg-1)
x = 0;
x1 = x;
cp1 = cp2 = ev.topptr + (ev.blkbeg - 1) * ev.wwd + x;
cpend = ev.topptr + ev.blkend * ev.wwd;
while (cp2 < cpend) {
while (*cp2 == ' ' && cp2 < cpend) {
if (firstline)
*cp1++ = *cp2, x1++;
firstline = FALSE;
if (cp2 == cpend)
/* ---- at a word ---- */
while (*cp2 != ' ' && cp2 < cpend) {
if (x1 >= ev.wwd-1) {
/* wrap the word */
svcp = cp1 + (ev.wwd - x1);
while (*--cp1 != ' ')
*cp1 = ' ', --cp2;
x1 = 0;
cp1 = svcp;
if (y < ev.wdo->ht)
*cp1++ = *cp2++;
if (cp2 < cpend)
*cp1++ = ' ', x1++;
while (cp1 < cpend)
*cp1++ = ' ';
if (y < ev.wdo->ht)
firstline = ev.blkbeg;
if (ev.blkbeg <= ev.blkend) {
ev.blkbeg = ev.blkend = 0;
if (firstline)
/* ------- test for a blank line ---------- */
static int blankline(int line)
char *cp = ev.topptr + (line-1) * ev.wwd;
int x = ev.wwd;
while (x--)
if (*cp++ != ' ')
return !(x > -1);
/* ------------- delete a word -------------- */
static void delete_word()
int wct = 0;
char *cp1, *cp2;
cp1 = cp2 = curr(ev.curr_x, ev.curr_y);
if (*cp2 == ' ')
while (*cp2 == ' ' && ev.curr_x + wct < ev.wwd)
wct++, cp2++;
else {
while (*cp2 != ' ' && ev.curr_x + wct < ev.wwd)
wct++, cp2++;
while (*cp2 == ' ' && ev.curr_x + wct < ev.wwd)
wct++, cp2++;
movmem(cp2, cp1, ev.wwd - ev.curr_x - wct);
setmem(cp1 + ev.wwd - ev.curr_x - wct, wct, ' ');
/* ----------- delete a line --------------- */
static void delete_line()
char *cp1, *cp2;
int len;
cp1 = ev.bfptr + ev.curr_y * ev.wwd;
cp2 = cp1 + ev.wwd;
if (cp1 < ev.lstptr) {
len = ev.endptr - cp2;
movmem(cp2, cp1, len);
ev.lstptr -= ev.wwd;
setmem(ev.endptr - ev.wwd, ev.wwd, ' ');
/* ----------- delete a block ------------- */
static void delete_block()
char *cp1, *cp2;
int len;
if (!ev.blkbeg || !ev.blkend) {
error_message("No block marked ...");
cp1 = ev.topptr + ev.blkend * ev.wwd;
cp2 = ev.topptr + (ev.blkbeg - 1) * ev.wwd;
len = ev.endptr - cp1;
movmem(cp1, cp2, len);
setmem(cp2 + len, ev.endptr - (cp2 + len), ' ');
ev.blkbeg = ev.blkend = 0;
ev.lstptr -= cp1 - cp2;
/* ------- move and copy text blocks -------- */
static void mvblock(int moving)
char *cp1, *cp2, *hd;
unsigned len;
if (!ev.blkbeg || !ev.blkend) {
error_message("No block marked ...");
if (lineno(ev.curr_y) >= ev.blkbeg-1
&& lineno(ev.curr_y) <= ev.blkend-1) {
error_message("Don't move/copy a block into itself");
len = (ev.blkend - ev.blkbeg + 1) * ev.wwd;
if ((hd = malloc(len)) == NULL)
cp1 = ev.topptr + (ev.blkbeg-1) * ev.wwd;
movmem(cp1, hd, len);
cp2 = ev.topptr + lineno(ev.curr_y) * ev.wwd;
if (moving) {
if (lineno(ev.curr_y) > ev.blkbeg-1)
cp2 -= len;
if (cp2+len <= ev.endptr) {
movmem(cp2, cp2 + len, ev.endptr - cp2 - len);
movmem(hd, cp2, len);
ev.lstptr += cp1 - cp2;
error_message("Not enough room...");
ev.blkbeg = ev.blkend = 0;
/* ------- find the last character in the buffer -------- */
static void findlast()
char *lp = ev.endptr - 1, *tp = ev.topptr;
while (lp > tp && *lp == ' ')
if (*lp != ' ')
ev.lstptr = lp;
/* -------- carriage return -------- */
static void carrtn(int insert)
int insct;
char *cp = curr(ev.curr_x, ev.curr_y);
char *nl = cp+((cp-ev.topptr)%ev.wwd);
int ctl = 2;
if (lineno(ev.curr_y) + 2 < ev.nolines)
if (insert && nl < ev.endptr) {
insct = ev.wwd - ev.curr_x;
while (ctl--) {
if (ev.endptr > cp + insct) {
movmem(cp, cp+insct, ev.endptr-insct-cp);
setmem(cp, insct, ' ');
else if (ctl == 1)
setmem(cp, ev.endptr - cp, ' ');
cp += insct * 2;
insct = ev.curr_x;
ev.curr_x = 0;
if (insert) {
ev.text_changed = TRUE;
if (lineno(ev.curr_y) + 2 < ev.nolines)
if ((ev.lstptr + ev.wwd) <= ev.endptr)
if (ev.lstptr > curr(ev.curr_x, ev.curr_y))
ev.lstptr += ev.wwd;
/* ------- move the buffer offset back one position ------ */
static void backspace()
if (ev.curr_x == 0) {
if (ev.curr_y)
ev.curr_x = ev.wwd - 1;
/* -------- move the buffer offset forward one word ------ */
static void fore_word()
while (*ev.nowptr != ' ') {
if (spaceup() == 0)
if (ev.curr_x == 0)
while (*ev.nowptr == ' ')
if (spaceup() == 0)
static int spaceup()
if (ev.nowptr >= ev.lstptr)
return 0;
return 1;
/* ------- move the buffer offset backward one word ------ */
static void back_word()
while (*ev.nowptr == ' ')
if (spacedn() == 0)
while (*ev.nowptr != ' ') {
if (ev.curr_x == 0)
if (spacedn() == 0)
static int spacedn()
if (ev.nowptr == ev.topptr)
return 0;
return 1;
/* ----- move the buffer offset forward one position ----- */
static void forward()
int ww = ev.wwd;
if (++ev.curr_x == ww) {
ev.curr_x = 0;
/* ------- move the buffer offset down one position ------ */
static int downward()
if (ev.curr_y < ev.wdo->ht - 1) {
return 1;
else if ((ev.bfptr + ev.wsz) < ev.endptr) {
ev.bfptr += ev.wwd;
if (do_display_text) {
return 1;
return 0;
/* -------- move the buffer offset up one position ------ */
static void upward()
if (ev.curr_y)
else if ((ev.topptr + ev.wwd) <= ev.bfptr) {
ev.bfptr -= ev.wwd;
if (do_display_text) {
/* ---- display lines in a window ------ */
static void display_text(y)
while (y < ev.wdo->ht)
/* ---------- Display a line -------- */
static void disp_line(int y)
char ln[81];
if (lineno(y) >= ev.blkbeg-1)
if (lineno(y) <= ev.blkend-1) {
movmem(ev.bfptr+y*ev.wwd, ln, ev.wwd);
ln[ev.wwd] = '\0';
writeline(2, y+2, ln);
<a name="020c_000e"><a name="020c_000e">
<a name="020c_000f">
[LISTING THREE]<a name="020c_000f">
/* --------- testedit.c ------------ */
#include <stdio.h>
#include <mem.h>
#include <conio.h>
#include "window.h"
#include "editor.h"
#define LNS 40 /* number of editor lines */
#define WD 60 /* length of an editor line */
#define LF (1+(80-WD)/2) /* leftmost column */
#define TP (1+(25-LNS/2)/2) /* top row */
#define RT LF+WD+1 /* rightmost column */
#define BT TP+LNS/2+1 /* bottom row */
char notes[LNS*WD];
void main(int, char **);
void main(int argc, char **argv)
FILE *fd;
if (argc > 1) {
setmem(notes, sizeof notes, ' ');
if ((fd = fopen(argv[1], "r")) != NULL) {
fread(notes, WD, LNS, fd);
if (text_editor(notes, LNS, WD) != ESC) {
fd = fopen(argv[1], "w");
fwrite(notes, WD, LNS, fd);


text:
Our news clips, blog, and video library are where you can find information about HMG replication nationwide, as well as the latest resources, reports, and updates on federal, state, and local efforts to improve outcomes for children at-risk.
Fact Sheets and Tool Kits
HMG and Early Childhood Health in the News
HMG Champion Spotlights
HMG National Center e-Notes
Policy and Issue Briefs
Breaking News...
Help Me Grow Orange County's Rebecca Hernandez
Earlier this year, HMG Orange County received a grant from the Lucile Packard Foundation for Children's Health to pilot-test a process to identify, track and review challenging cases of families of children with special health care needs.
The foundation recently interviewed HMG OC manager Rebecca Hernandez about her work with the pilot program. We are thrilled to share Rebecca's interview here.

subset: commoncrawl


text:
OK - not to stir up a controversary, but anyone having a glass of wine now and then?
I know it is said "no amount is safe", yet there is seems to be a thought amongst many ppl (off the record) that very low level is not going to cause FAS or serious complications. A lot of my friends (including one good friend in Europe) did occassioanlly (no more than 1-2 week at most) and their babies/kids are fine....and even dr made a comment something like "if you forget you're pregnant and accidentally have a glass now and then, its ok".
(lol - not that I'm supporting this, but funny how thinking has changed - my coworker drank and smoked wtih her daughter 30+ years ago, and her daughter went on to get a full scholoarship to an Ivy league school and is now "cream of the crop" at a major IT company)


text:
TNA Impact Wresling Presents the 'Road to Lockdown' World Tour at Taylor County Coliseum
The Taylor County Coliseum will be rocking on Friday February 14th as Impact Wrestling presents the 'Road to Lockdown' world tour featuring steel cage matches.
'Road to Lockdown' World Tour
Date and Time
Friday February 14th at 7:30
Taylor County Coliseum
1700 Texas Highway 36, Abilene, Texas
Tickets start at $15. Fans who purchase a $65 ticket will meet select IMPACT WRESTLING Superstars at an early-entry autograph session at 5:30 p.m.
Tickets are on sale at www.taylorcountyexpocenter.com or by phone at 325-677-4376
Other Info
- World Heavyweight Title Match in Steel Cage: Magnus vs. "The Samoan Submission Machine" Samoa Joe
- World Tag Team Title Match: The BroMans Robbie E & Jessie Godderz vs. The Wolves Davey Richards & Eddie Edwards
- X Division Title Match: Austin Aries vs. Chris Sabin
- Knockouts Title Match: Madison Rayne vs. Gail Kim
- Ethan Carter III vs. "The Cowboy" James Storm
Watch Highlight of Kurt Angle Vs Magnus
Subscribe to Rock 108 on


text:
International Peace Activist Setsuko Thurlow
Hiroshima Survivor & 2015 Arms Control Person of the Year
2016 Grammy-Nominated Flutist Ron Korb • Raging Asian Women Taiko Drummers • Pax Christi Chorale • Toronto's Raging Grannies
…and join us for the
Hiroshima & Nagasaki
Poster and Survivors'
Artwork Display
City Hall Rotunda
August 9-15, 2016
Canadian Voice of Women for Peace
Japanese Canadian Cultural Centre
Toronto Area Interfaith Council
Tao Sangha Global Community
Physicians for Global Survival
Toronto Buddhist Church
Hiroshima Kenjin Kai
Pax Christi Toronto
Science for Peace
Toronto Article 9
International Peace Activist Setsuko Thurlow
Hiroshima Survivor & 2015 Arms Control Person of the Year
2016 Grammy-Nominated Flutist Ron Korb
Raging Asian Women Taiko Drummers
Pax Christi Chorale
Toronto's Raging Grannies
This event is free, open to the public and family-friendly
Sponsors: Canadian Physicians for Research & Education in Peace • Conscience Canada • Canadian Pugwash Group • Greater Toronto NAJC
Thanks to extensive lobbying of Toronto City Council by peace and interfaith groups from 2007 on, the Peace Garden was rededicated on May 18, 2016.
Traditional Aboriginal Elder Cat Crieger welcomed the audience to the original lands of the First Nations on which City Hall stands.
Presentations were made by Scott Sorli of the Nathan Phillips Square Community Advisory Committee, the Jarvis Collegiate Institute Choir, Toronto Poet Laureate Anne Michaels and the Parliamentary Poet Laureate George Elliott Clarke.
Mayor John Tory, the Consul General of Japan Yasunori Nakayama, Hiroshima Peace Ambassador Setsuko Thurlow, Zul Kassamali, Chair of the Toronto Area Interfaith Council, Father Massey Lombardi and Phyllis Creighton of the Hiroshima Nagasaki Day Coalition made moving appeals for peace. (Photographs by Michael Chambers).
Cat Crieger performing the traditional smudging ceremony.
The Consul General of Japan Yasunori Nakayama.
Toronto Poet Laureate Anne Michaels.
Mayor John Tory and Father Massey Lombardi light the flame of peace.
Setsuko Thurlow pouring water from Nagasaki into the reflecting pool as a symbol of solidarity and peace.
The audience at the May 18 rededication.
Also on this website: Archival photos of the original Toronto Peace Garden here


text:
The demand for physician assistants is increasing rapidly, with many facilities looking to replace doctors with lower-cost care providers. It's also a good path toward becoming a doctor. Read More »
Home / Tag Archives: nurse
Book Review: Unbelievable Adventures of a WW II German War Bride by Ingeborg M. Johnston
The memoir of a German nurse, a beauty queen, model, pilot, wife, mother and grandmother. Read More »
TV Review: Nurse Jackie – "Rat Falls"
In the "Rat Falls" episode, Jackie falls deeper into her addiction while battling a rat and the green eyed monster. Read More »
TV Review: Nurse Jackie
Nurse Jackie's world begins to crumble in the third season opener. Read More »
Book Review: The Unwanted by Daniel L. Carter
Carter has developed his work of faith-based science fiction with a sheen of otherworldliness, seeming to set up a futuristic place rife with possibilities and powers. Read More »
Indigenous Wisdom for a Conflicted Age
Reflections on Flag Day in Bolivia, globalization, and timeless ancestral wisdom about how to live in harmony. Read More »


text:
Jim Render usually doesn't like comparing players. He doesn't like saying who was the best at this and the best at that over his three-plus decades as Upper St. Clair's football coach.
But, when the subject is lineman Ben Huss, it is hard for Render to hold back the superlatives.
"I was just saying to our coaches that if we were to coach another 35 years, I don't know if we would have a lineman as athletic as Ben Huss," Render said.
That's saying a lot, considering Render is in his 35th season and is the winningest coach in WPIAL history with a 371-118-6 record. Huss is a 6-foot-3, 275-pound senior two-way tackle. He is the Panthers' own Big Ben.
"We've had some big linemen before and some good ones," Render said. "We had Ian Park a few years ago and he's starting at Northwestern. But we've never had a linemen as big as [Huss], as athletic as him who can do the things he does."
Upper St. Clair has a number of standouts, including Huss, who have made the Panthers the No. 1 defensive team in the WPIAL, in terms of points allowed. Upper St. Clair has given up only 23 points and two touchdowns. The Panthers had five consecutive shutouts in a row at one point.
Huss has been so good that he is third on the team in tackles with 37 (linebacker Kyle Page leads with 54 and linebacker Jesse Slinger has 40). Huss has four sacks.
"He's the type of kid who when we practice special teams on Thursday, he'll go back and field punts and return them -- and he's very good at it," Render said. "He'll grab a ball and say I'm going to throw this and hit the goal post -- and he'll do it. Those are just things that show how athletic he is for a lineman."
Render believes Huss possibly could play at the Division I college level, but Huss' only offer so far is from Youngstown State, a Division I-AA program. But Huss is like a lot of players on this Upper St. Clair team. They are excellent on the high school level, but are not being recruited heavily by Division I colleges.
One of Upper St. Clair's other top players on defense has talent in his genes. Defensive back Morgan Lee is fourth on the team in tackles with 36 and also is averaging 22.9 yards on punt returns. Lee, a 5-11, 185-pound senior, is the cousin of former USC star Sean Lee, who now plays linebacker for the NFL's Dallas Cowboys.
Them again
• Aliquippa and Thomas Jefferson have clinched playoff berths for the 19th consecutive season, the longest streaks in the WPIAL.
• Aliquippa also will be in the playoffs for the 37th time overall, the most in WPIAL history. It's likely that Jeannette will be tied with Aliquippa for the most playoff appearances, but the Jayhawks haven't clinched a spot yet.
• Woodland Hills has clinched a spot for the 18th consecutive year while McKeesport is in for the 16th year in a row. Rochester has the fourth-longest streak at 16 consecutive years, but things aren't looking good for the Rams to extend the streak. They are 2-4 in the Class A Big Seven Conference.
• Mt. Lebanon is third on the all-time list of playoff appearances with 33, but the Blue Devils are 2-4 in Southeastern Conference play and in danger of not making the playoffs. Upper St. Clair will be in the playoffs for the 32nd year and Penn Hills also is trying to make it for the 32nd time.
Wildcats strike
When it comes to surprise stories in WPIAL football this season, much of the talk has centered around West Shamokin, Avella and even Summit Academy. But also count Kittanning among the teams having one of the most memorable seasons in a while.
Kittanning is 7-0 for the first time since 1997 and the Wildcats are flirting with going undefeated in the regular season for only the second time. The other time was 1976 when the Wildcats were 10-0 before losing to Brentwood, 22-16, in the quarterfinals of the WPIAL Class AA playoffs.
But to go undefeated, Kittanning might have to beat another undefeated team in the regular-season finale. Shady Side Academy also is 7-0, and Kittanning plays at Shady Side Academy next Friday.
One of the big reasons for Kittanning's success this season has been its "Boy Toy." At 5 feet 6, 140 pounds, Braydon Toy is one of the smallest quarterbacks in the WPIAL. But Toy, a junior, is averaging 243 yards offense a game. He has completed 60 of 79 passes (76 percent) for 1,109 yards, and also rushed for 591 yards on 83 attempts.
This is the second year Kittanning coach Frank Fabian has used the spread offense and it's Toy's first year as a starter. But another reason Kittanning is averaging 41.3 points is 5-10, 165-pound freshman running back Zane Dudek, who has rushed for 520 yards on 40 attempts.
Also, Nick Bowers leads the team with 28 receptions and has 286 yards rushing.
For the record
Greensburg Central Catholic soccer player Frannie Crouse finished the regular season with 41 goals and is third on the WPIAL all-time list with 183 career goals.
Although Greensburg Central Catholic is expected to make a long playoff run, Crouse still seems like a longshot to break the WPIAL record. she needs 22 goals to reach the mark of 205 held by Steel Valley's Jess Strom. Charleroi's Shellie Cotton is second at 199.
Crouse and teammate Malea Fabean are the most potent goal-scoring tandem of all time in the WPIAL. Fabean has 141 career goals and needs 17 to reach the top 10 in WPIAL history.
Naming rights
Keystone Oaks is naming its gym after David Kling, a 1965 alumnus who won more than 300 matches as Keystone Oaks' wrestling coach.
Kling retired in 2003 as one of the winningest coaches in WPIAL wrestling history with a 30-year record of 381-152-2. He also was an assistant coach in football, track and golf at the school and is a member of a few different Halls of Fame.
He was inducted in the Pennsylvania Sports Hall of Fame Western Chapter in 2006.
hsfootballFor more on high school sports, go to "Varsity Blog" at www.post-gazette.com/varsityblog. Mike White: firstname.lastname@example.com, 412-263-1975 and Twitter @mwhiteburgh First Published October 17, 2013 8:00 PM


text: Boy Gets Frighteningly Creative and Attacks His Mom With a Pop TartCassie Murdoch3/04/12 11:55pmFiled to: CrimePolice BlotterMuncy valleyPennsylvaniaPop TartAssaultMomMothersonemergency roomAttacktweetFb95EditPromoteShare to KinjaToggle Conversation toolsGo to permalinkWhen you first learn that you're pregnant, of all the possible scenarios you play out in your mind of the many joys and pains your future child could bring you, would you ever, ever in a million years think to yourself, "Someday we're going to be hanging around the house on a Saturday afternoon, and we'll get into an argument about something dumb, and my son will take a Pop Tart and smack me across the face with it, and I will end up in the emergency room"? Probably not, yet that is exactly what happened to one Pennsylvania woman. Presumably the Pop Tart must have come fresh from the toaster and burned her—or she caught a jagged edge from the rock hard frosting they coat those things in. Either way, let's hope these two have put their differences aside and that the world will never see another case of Pop Tart-related violence.Advertisement[Via Copyranter]Reply95 repliesLeave a reply


text:
Okay, so you have built the spine, built the controller, connected the two, you're almost done! Now we must program the servo to wag on its own. I have used the generic "Sweep" sketch from the Arduino website and slightly altered it to work with the continuous rotation servo. As you can see, it runs in a loop back and forth, just like the wagging of a tail, right? Go ahead and upload this sketch into the Arduino Uno board, making sure you have downloaded the servo library as well from the Arduino website (http://www.arduino.cc/playground/ComponentLib/Servo) :
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup()
void loop()
for(pos = 0; pos < 180; pos += 1)
for(pos = 100; pos>=1; pos-= 1)
Uploaded? Great! Now take some of your hook-up wire and connect one set of ends to the output wires of the servo and the other ends to the Arduino. Make sure that the wire connecting the black wire of the servo goes to the Ground pin of the Arduino, wire to the red servo wire to the 5V pin, and wire to the white servo wire to Digital Pin 9. Plug in your Arduino to the computer after hooking everything up and your tail should start moving on its own! Now all that is left is for you to give that tail a realistic look so grab your sewing kit!
First though, take your pantyhose leggings and cut the leggings off. Put one legging over the tail and the second one over that. Now we can put some fur on that tail. I sewed a simple tube while it was inside out then turned it right side out. Pull your tail through your fur tube and sew it secure on the top over the servo housing. You want to make sure that the tube is not too tight as that will impede the movement of your tail. You did it! You made your very own animatronic wolf tail. Now just cover the tail with the fur of your chosing and wala: you got yourself one beautiful realistic wolf tail! One last last step, get a belt, thread it through your tail's belt loop, put on the belt, and go show off your inner wolf!
A note of caution: be mindful of your surroundings, your tail has the power to break something or hurt someone so please, be careful. I am not responsible for your breaking of something priceless. Have fun! "Oooooooooooowwwwwwwwhhhhhhhhh!"


text:
Thursday, April 21, 2011
Love This Picture
Just wondering who these two kids are. Pretty good looking couple who are far from beet fields and coal cinders. This was buried in the pictures that Dwight shared with me some time ago. I'm stealing it now.
2 comments:
- Dwight said...
That plaid coat Velna is wearing was the coat we used to cover Russell in Bozeman after he was born. Velna worked part time up at the campus and when she came home we used her coat to cover the baby.
- April 21, 2011 at 8:34 PM
- Elizabeth said...
Looks like seafaring folk to me.
- April 21, 2011 at 10:56 PM
Subscribe to:
Post Comments (Atom)


text:
Willow Smith, who was born in the year 2000, has a new track titled "21st Century Girl." A follow-up to the swaggerific "Whip My Hair," this new song is a bouncy piece of fluff that most dancers would be glad to fist-pump to, and the lyrics speak of Willow's ambition: "I feel like I can take over the world/If only I get my dreams out/Pull gold from my soul/Pull diamonds from my heart/It's that new girl thinking and this song is just the start!"
It's not surprising that Willow's super confident — after all, she's a 10-year-old pop star, and not because her family needs the money. But is every song she releases going to be about how bold and secure she is? On the other hand, it's certainly better than lyrics about Jack Daniels and sex, especially if kids around the country are going to be parroting the words. You've got to go with what you know, and what she knows is that she feels like she can take over the world — her parents are internationally famous and filthy rich, so why not? Also, when she sings, "I'm the kind of chick/That knocks you off your feet," you can't help but believe her.


text: Discussion Forums New User? Please read instructions! Forums Members Register Login Programming Languag... C programming langu... C Interview Questio... C Interview Questions | RSS Add topic No topics were found here Working Please Login or Register Ask your questions or clarify your/others doubts from, ✅ Online Discussion Forums by Fresh2Refresh.com Share this website !!!


text:
Artist and filmmaker Silvia Maglioni is co-founder with Graeme Thomson of TERMINAL BEACH - a cross-media art platform to investigate new configurations of image, sound, text and spectatorship (2005) - they have made films and photo-essays, sound and videoinstallations, solo and group exhibitions, performances, experimental radio shows as well as publishing numerous texts.
In 2009 they completed their first feature film, Facs of Life, which draws on encounters with a number of former students of Gilles Deleuze, navigating between the terrains of documentary, fiction, essay and video art to explore aspects of Deleuze's philosophical legacy.
Together with Through the Letterbox, a high-definition 'refilming' of the video archive of Gilles Deleuze's seminar at Vincennes, and Wolkengestalt, considering September 11 and its aftermath through the prism of Goethe's meteorological diaries, their other films include Ghosts of Chance, The balade of Dèsastronaute #1 and Statues.
Their work has been presented in various international institutions and art foundations including TATE Britain, Museum Ludwig, 16beaver, Fondazione Pistoletto, European Media Art Festival, Fundação Clovis Salgado, Bétonsalon, Amsterdam Film Experience, Maison Rouge, Gasworks, Stedelijk Museum, Kunstenzentrum Z33, Telic Arts Exchange, Goldsmiths, ENS, Museu de Arte Contemporânea Serralves, UCLA, Lebanese Academy of Fine Arts, Museo MALBA.
Silvia Maglioni is currently living in Paris where she is working with GT on a new feature film, GIRL FROM THE NOUVELLE VAGUE, as well as working in collaboration with a transnational group of artists and theorists on KAFKAMACHINE, the aim of which is to realize Félix Guattari's project to make a film by Kafka, and on a project to publish a script of a lost film.
She is member of the Collectif Jeune Cinéma and of the Collectif Presque Ruines.
Statues (60´, Italy, 2003)
Wolkengestalt" (13, Italy, 2007)
Facs of Life (116´, France, Italy, United Kingdom 2009)
Through the Letterbox (125´, France, 2009)
Ghosts of Chance (7´, France, 2010)
Anathema (37', UK, 2011)
I See Infinite Distance Between Any Point and Another (33', France, 2012)
The Girls From the Nouvelle Vague (Film in progress)
Doc Alliance is a creative partnership of 7 key European documentary film festivals. Our aim is to advance the documentary genre, support its diversity and promote quality creative documentary films.


text:
Payback time: Harden can save Cubs
Harden can save Cubs in Game 3
"It happened to me and it's not fun," said Harden, who took the loss in Game 3 of the 2003 ALDS. "I think we're quite capable of doing it to them."
"Them" isn't the Red Sox, it's the Dodgers, who own a 2-0 lead heading back to Los Angeles for Game 3 against the Cubs on Saturday night. Harden matches up against Hiroki Kuroda with Chicago's season on the line.
National League teams on the brink of getting swept have never won three straight to take a Division Series, going 0-for-16. In the American League, only once has a team come back from losing the first two games at home to advance past the first round. The 2001 Yankees, managed by current Dodgers skipper Joe Torre, dropped Games 1 and 2 to the Athletics at Yankee Stadium and won it in five.
The Yankees got back on track in Oakland thanks to an outstanding Game 3 effort from Mike Mussina, who tossed seven shutout innings and gave way to Mariano Rivera for a two-inning save in a 1-0 victory.
Harden is 5-1 with a 1.77 ERA since switching leagues. Inning-for-inning, he's been as dominant as CC Sabathia, but hasn't gotten the same publicity.
"He's taken us from a postseason team to a team that has a shot at winning the whole thing," second baseman Mark DeRosa said. "He solidifies the entire rotation."
Dodger Stadium, Saturday, 9 p.m. CT |
Cubs starter: RHP Rich Harden |
2008: 10-2, 2.07 ERA (OAK and CHC) |
2008 on road: 5-2, 2.50 ERA |
2008 vs. Dodgers: No record |
Career vs. Dodgers: No record |
Career postseason: 1-2, 6.43 ERA |
Dodgers starter: RHP Hiroki Kuroda |
2008 at home: 6-2, 3.68 ERA |
2008 vs. Cubs: 1-1, 0.59 ERA |
Career vs. Cubs: 1-1, 0.59 ERA |
Career postseason: First appearance |
Dodgers lead series, 2-0. No team in the Wild Card era has won a National League Division Series after trailing 2-0. |
Game 1: Dodgers 7, Cubs 2 |
Game 2: Dodgers 10, Cubs 3 |
Did you know? Kuroda will be the fourth Japanese-born pitcher to start a playoff game in Major League history, joining Hideo Nomo, Masato Yoshii and Daisuke Matsuzaka. |
A Game 3 win is still a tall task. Kuroda baffled the Cubs in two first-half starts with a 0.59 ERA, his best split against any club, including a complete-game shutout in Los Angeles.
Harden's concern is two-fold: his much-discussed health and his control. The Athletics dangled him before the Trade Deadline because of his injury history. The Cubs bit, and they exercised caution with Harden during the second half. He maxed out at seven innings per start despite some gaudy lines and skipped one turn at the beginning of September to stay rested for the playoff run. Harden said he's ready to go all out now.
"I've been up to 120 pitches so far this year, and I feel like I can go more," he said. "I've definitely shown I can do that. I know they've been keeping me on a little bit of a strict pitch count. Now that we're in the playoffs, hopefully we can stretch it out a little more."
Given Chicago's hitting woes, it might take a Mussina-type effort from Harden to snap the club's eight-game postseason losing streak. General manager Jim Hendry dealt for Harden three months ago with October in mind. Well, here they are.
While with Oakland in the first half, it appeared Harden would be watching the playoffs on TV. The Angels began to take hold of the American League West, and the AL East had multiple Wild Card contenders.
Meanwhile in the NL, the Brewers grabbed Sabathia from Cleveland on July 7. Hendry countered by dealing a few prospects for Harden four days later. The right-hander quickly realized what was on the horizon.
Teams going 0-2 at home | |||
Year | Home | Opponent | Outcome |
2007 | Phillies | Rockies | L, 3-0 |
2006 | Padres | Cardinals | L, 3-1 |
Twins | Athletics | L, 3-0 | |
2004 | Angels | Red Sox | L, 3-0 |
2002 | D-Backs | Cardinals | L, 3-0 |
2000 | White Sox | Mariners | L, 3-0 |
Astros | Braves | L, 3-0 | |
Yankees | Athletics | W, 3-2 | |
1997 | Mariners | Orioles | L, 3-1 |
1996 | Dodgers | Braves | L, 3-0 |
1995 | Dodgers | Reds | L, 3-0 |
Rockies | Braves | L, 3-1 |
"I didn't really get too far ahead of myself thinking about it too much, but I knew that this was where we'd be," Harden said. "I'm looking forward to taking the ball."
Walks have been an issue, 11 in 11 innings over his last two starts. That's a scary stat considering Ryan Dempster's wildness doomed the Cubs in Game 1, but a little less concerning given Harden gave up three combined hits in those outings.
"What's impressive to me about Rich is he's able to go out there without his best stuff and go five, six innings, two hits," said DeRosa, who knows Harden well from his days with the Rangers. "I constantly ask him how he's able to do that. I've faced him in the past, and I know the matchup problems he presents."
The Dodgers may not be aware of those problems. They've never faced him. However, Harden is very familiar with Los Angeles right-hander Derek Lowe.
Lowe closed out Harden's A's in Game 5 of the 2003 ALDS, getting out of a bases-loaded jam for the save. The A's accused Lowe of making obscene gestures toward their dugout after the series-ending strikeout. If the Cubs can win twice, Lowe will start Game 5, and Harden will likely be in the dugout looking for redemption.
"He turned to us and showed us up," Harden said. "You know what? Hopefully we can return the favor."
Nick Zaccardi is an associate reporter for MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.


text:
Kyle Chipchura
Centre on Habs' fourth line tonight
The whirlwind of attention tonight will be around Canadiens goaltender Carey Price, who's making his highly publicized National Hockey League debut against Sidney Crosby's Pittsburgh Penguins.
But also playing his first NHL game will be Kyle Chipchura, pencilled in to centre Steve Bégin and Mathieu Dandenault on the Canadiens' fourth line.
John McGourty of nhl.com wrote a really nice piece on Chipchura in 2004, on the occasion of the player being drafted into the NHL by the Canadiens.
More reading: Chipchura's page at sportsnet.ca, his draft page at ESPN, and his profile at Wikipedia.


text:
Web Site: | www.tinyprints.com |
Headquarters: | 520 San Antonio Road Suite 100 Mountain View, CA 94040 United States |
Industry: | Consumer Products and Services |
Investors: | Summit Partners, Technology Crossover Ventures |
Link up your social media account to automatically promote the positions at Tiny Prints.
Get a job alert every time Tiny Prints posts a job.
Tiny Prints does not have any jobs posted at this time.


text:
Urmila Matondakr in Karzzz News
Will Urmila Matondkar get a super-thrilling film?
The Rangeela babe, who is wearing the hat of a judge for Zee Marathi's Dance Maharashtra Dance, is looking for an exciting project to make a comeback
We cornered Urmila Matondkar on the sets of Zee Marathi's dance reality show Dance Maharashtra Dance. The 38-year-old star has been missing from the big screen lately, but she's making her sizzling presence felt on the small screen. Click here to read more -
Urmila Matondakar: I'm keen to make a comeback with a 'different' film!
The Rangeela babe is looking for a film that can take her to the next level
Urmila Matondkar has been out of action for quite some time now. One of the best acting talents of Bollywood, Urmila was last seen in Himesh Reshammiya's 2008 thriller Karzzzz. Click here to read more -


text:
While their friends were enjoying time away from school this summer, Amy Nicodemus and Richard Becker were wrestling with complicated scientific processes and assisting with advanced research projects.
The two Moffat County High School students spent six weeks at a University of Northern Colorado Frontiers of Science Institution.
They spent three mornings a week studying engineering, biology, physical chemistry and earth science and the afternoons doing laboratory work.
Two days a week they toured industrial sites, such as the Budweiser plant and Kodak.
"It's a wonderful opportunity for students," MCHS science teacher Roger Spears said.
Spears credits the camp for bringing him to Moffat County. He taught at the camp for six years, meeting several district students who encouraged him to come to Craig.
Students interested in attending the camp must have letters of recommendation from their science and English teachers.
They also must be willing to pay a $500 registration fee, though UNC finds sponsors to cover the $4,000 program cost.
Nicodemus, a senior, has an interest in the wide variety of job opportunities in the field.
Becker, a junior, said he's wanted to be a geophysicist since the time he could pronounce the word.
"I heart science," he quipped.
Each of the 35 camp participants was assigned a mentor, and they spent the summer assisting their mentor on that person's research project.
"The research time was the best," Nicodemus said. "There was a lot of time to work with lab equipment we don't have access to here."
Becker's project, simply stated, entailed the study of why lightening struck certain portions of the Appalachian mountains more frequently than others. Not-so-simply his project was titled "Orographic Effects of the Appalachian Mountains on Cloud-to-Ground Lightening Activity; The Appalachian Lightening Jump."
The results, he said, will have applications in the study of meteors.
Similarly, Nicodemus' project was titled "Colorimetric Determination of Ethanol by Means of Cerium IV and Ammonium Nitrate." To the layman, Nicodemus worked to design a laboratory for undergraduates so they could determine the ethanol content of red wine.
The topics are assigned, but based on the students' interests.
Nicodemus intends to pursue her interest of science at Montana State University. Becker has set his sights on the Colorado School of Mines.


text:
Xbox One Consoles
Get in the action with the Xbox One, an all-in-one gaming system that brings you the best video games around. Browse our selection of Xbox One bundles, which come with a variety of accessories and games – all for a great price. Start shopping today!
Discover new adventures with our Xbox One consoles. Play with friends or use our Smart Match feature to find new challengers who fit your skill level. Our Xbox One consoles come equipped with the best accessories, including the Xbox One chat headset, which keeps your audio communications crystal clear, and the wireless controller, which has been streamlined for improved precision and hand comfort.
Xbox One will enhance your gaming experience. Use your gaming system to stay entertained all day long, whether you're Skyping with friends, watching your favourite movie, or listening to the best songs. And now, you can split your screen, not your time. Switch back and forth between these options quickly, or do two at one time. Another fun feature is the Xbox One console's ability to create personalised, shareable movies from your best game moments.
At Microsoft, we often offer a number of Xbox One bundles, with games, Xbox LIVE and/or accessories bundled in for free. Depending on which bundle you buy, you can save on your favourite games and accessories.
Specifically, our Xbox One game bundles give you the gaming systems you need, plus the games you love most. Select games across multiple genres, including sports, fantasy, shooter games, and more. At Microsoft, there's something for everyone.
Step up to the ultimate adventure when you purchase Xbox One consoles and a customised bundle to suit your style. Find exactly what you're looking for today at Microsoft Store.


text:
Originally Posted by William_H The skipper then asked us to take a halyard and use the rescue boat to heel the boat. She then cam off under her own engine quite easily. It is a rescue method I have often wondered about. It is a bit scary to apply a RB pull to the top of the mast. Visions of it all tumbling down under too much load. As it happened there were no worries. All over in 10 minutes. This is a technique used by the KNRM in The Netherlands.
Kim Emjaytoo - Our Bavaria 30 Cruiser
Forum T&Cs
March 24, 2017
March 23, 2017


text:
Union Plus Scholarship Deadline: Jan. 31
by Tiffanie Bright | January 20, 2012
Irrawaddy Lamouth of Long Beach, CA, daughter of AFSCME Local 685 (District Council 36) member Molly Lamouth, was one of 18 AFSCME recipients of the 2011 Union Plus scholarships.
Need money for college? You could get a job wearing a pirate's hat and selling fish dinners to tourists in T-shirts. Or you can apply for a Union Plus scholarship. It's a process that just takes a few minutes.
What you need to apply: a union sponsor – you, your parent or spouse who is or was a union member (make sure the union participates in Union Plus); and acceptance in a U.S. accredited school.
Just last year, 130 union families received scholarships ranging from $500 to $4,000. And 18 of those winners came from AFSCME families. One scholarship recipient said, "This scholarship enabled me to go to the school of my dreams. I highly encourage any prospective applicants to take advantage of this opportunity."
You've got everything to gain.
What you need to do: Submit a letter of reference and an essay on your career goals and community service.
Fill out the application online. Need to take a break? Don't worry. You can save your work and return later. But don't take too long. The deadline to submit is Tuesday, Jan. 31.
Previous: Caution, @GovWalker, Roads Are Slippery When Anti-Worker


text:
Top Definition
A) Cowgirl with gender revered donkey punch (i.e. at height of orgasm the woman punches the man in the face)
B) Performing cunnilingus on a woman while she defecates
she broke my nose giving me the angry edmunds
by Liam Riggzhoo.com
December 04, 2010
The Urban Dictionary Mug
One side has the word, one side has the definition. Microwave and dishwasher safe. Lotsa space for your liquids.
Buy the mugThe Urban Dictionary T-Shirt
Smooth, soft, slim fit American Apparel shirt. Custom printed. 100% fine jersey cotton, except for heather grey (90% cotton).
Buy the t-shirt


text:
The University Catalog is the authoritative source for information on courses. The Schedule of Classes is the authoritative source for information on classes scheduled for this semester. See the Schedule for the most up-to-date information and see Patriot web to register for classes.
Credits: 3
Seminar-style discussions on a specific topic in Asian art. May focus on the art of a particular period, movement, reign, or region, as well as theoretical issues or works in a particular medium.
May be repeated for a maximum of 6 credits when topic is different. Fulfills the college requirement in non-Western culture.


text:
Dallas Chiropractic Care specializing in Car Accidents
Dr. Mark Harris, North Dallas, TX Chiropractor
Dr. Mark Harris and Trinity Mills Chiropractic have been providing chiropractic services in Dallas to residents of Addison, Carrollton, Plano and more for 30 years. Residents looking for North Dallas chiropractic services can rely on his legacy of expertise and customer service for all the care that they need.
If you're in need of neck and back pain relief, Dr. Mark Harris is an expert at providing adjustments to the spine as a natural way to improve your general health. Now is the time to contact the experts at Trinity Mills Chiropractic at their North Dallas chiropractic office. The experienced staff can treat wellness challenges with chiropractic adjustments, therapeutic massage, joint pain relief, healthy stretching techniques and nutrition counseling.
Dr. Harris also specializes in chiropractic treatment of pain caused by auto accidents, so if you've been in an auto accident and are in need of chiropractic care, call on the skilled team at Trinity Mills.
North Dallas Chiropractic Services from Dr. Mark Harris
We realize that chiropractic health is closely related to overall well being, which is why we approach treatment of neck, back and joint pain with a broad approach that encompasses diet and exercise. For example, when seeking auto accident pain relief and chiropractic services in Dallas, Dr. Harris' chiropractic treatments are made even more beneficial by the inclusion of proper stretching techniques, massage, traction, muscle stimulation, ultrasound, cold laser and guidelines for proper diet and exercise as well as programs designed to help yourself while at home.
Our initial treatments focus on pain relief and are tailored to your needs and exclusive to the types of symptoms you are experiencing. Many chiropractors in Dallas may choose to focus only on the immediate pain described by their patients – at Trinity Mills, however, we encourage the relief of pain from the inside out, treating the whole body and improving overall health.
Dr. Harris can help you design effective treatments for the relief of pain associated with auto accidents, whiplash, headaches, back pain, neck and shoulder pain or disc issues.
Chiropractic Services in Dallas, Addison, Plano, Carrollton, TX and Beyond:
Trinity Mills Chiropractic serves the residents of Dallas, Addison, Plano, Carrollton and the surrounding area. Many patients have seen their medical doctor first, where they have been evaluated and provided with a prescription for pain medication, anti-inflammatories or medication for muscle spasm.
This is because medications will give temporary relief and mask the symptoms but directly affect a patient's spinal structure. Our goal is to treat what causes the pain, thereby allowing the symptoms to take care of themselves. If you're suffering from neck pain in Addison, recovering from an auto accident in Dallas, need relief from back pain in Plano or are looking for proper stretching techniques to alleviate sore joints in Carrollton, Dr. Harris and his experienced chiropractic team are here to offer whole-body treatment methods that not only treat your symptoms, but also encourage your overall health.
Our skilled team at Trinity Mills Chiropractic, "Your Dallas chiropractic care specialists" provides a full service offering of massage therapy, stretching techniques and nutrition counseling so that you can improve your health in the long term from the inside out without a medication-dependent array of never-ending treatments. Trinity Mills Chiropractic can easily verify whether or not our services are covered by your specific insurance plan, so you'll know where you stand before treatment even begins. And, if your insurance does not include the type of care you're seeking from Trinity Mills, we can happily work out a convenient payment plan to suit you.
Neck Pain, Back Pain & Auto Accident Pain Treatment with Purpose:
The Trinity Mills Chiropractic core principles are as important to us as to our patients. Dr. Harris may not accept a patient unless he truly believes that person will benefit from the chiropractic care we provide.
We invite you to schedule a free consultation to discuss your history and health needs with Dr. Harris so that he can evaluate how you might best profit from the treatments we offer. Our goal is to bring you the healing advantages of all-natural, non-invasive Dallas chiropractic care, so that you can live your life to the full.
To contact our office for an appointment, call us now at (972) 380-6977, or simply fill out the online contact form and we will contact you as soon as possible.
Dr. Mark Harris


text:
Hi there. Director of Photography, studied with Mr Burgan at the NFTS way back in the late 80's/early 90's, and have been lucky since graduating to have been shooting docs since then. Given the way the broadcast industry is at the moment, not sure if i will be able to continue making a living from docs, hence trying to move into drama.
Introduce Yourself: Sign In Here First
Introduce Yourself
Sat 23 May 2009
The venerable Mr Gray! Good to see you here, mate. Let's have a drink in London next month sometime and catch up on the last, er, 17 years or so...
Mon 25 May 2009
Hi Folks,
Great to see a forum like this :)
I just thought I'd take a moment to say hi and see if there are any doc filmmakers living/ working in Mumbai.
I'm from Canada but have lived/ worked/ adventured in India/ Asia for half of the last 15 years. I work as a D.P. and am currently developing a project here in Mumbai.
Mon 25 May 2009
Jonathan you can always hit the People link at the top of every page and do an "advanced search" by city and country.
Tue 26 May 2009
A national competition seeking the best videos, photographs, and stories describing how individuals, families and communities are managing during these hard times.
One of the unexpected outcomes of the Great Depression was a decade of creative outpouring that covered the U.S. map. Under the auspices of the Works Progress Administration (WPA), thousands of artists fanned across the country documenting the experiences of everyday Americans as they worked to maintain their families, their communities, and their way of life in the face of a national economic crisis.
Now, as Americans are again experiencing financial hardship and uncertainty, First Person Arts invites artists to document how this generation of Americans is coping.
Inspired by the artists of the WPA, who documented the experiences of Americans in every part of the country, First Person Arts is asking artists to help craft the first draft of the history of our era by capturing, in photographs, on video, or in writing, the stories of America and its people during these difficult times.
Our goal is to gather stories from all 50 states.
We are looking for short memoirs and essays, documentary films, and photographs that depict Americans from all walks of life. We are especially interested in stories that are unique to your family, your community, your town, your region – that capture the idiosyncratic things that are happening where you live – the slices of life that, taken together, will give us a First Person picture of America in 2009 – the good, the bad, the ugly and the beautiful.
Writing submissions – up to 2,500 words.
Film and video submissions – up to five minutes, excluding credits.
Photography submissions – may include up to five photographs, with or without accompanying text of up to 100 words per image.
Submission deadline: June 30, 2009
Finalists in each category (writing, film, and photography) will be featured on the First Person Arts website (www.firstpersonarts.org) and at the First Person Festival of Memoir and Documentary Art, November 4-8, 2009. First place winners in each genre will be invited to Philadelphia to participate in the festival. A cash prize will be awarded to the best story overall.
Competition website: www.hardtimes.firstpersonarts.org
Tue 26 May 2009
Dan, better that you submit something like this in the Classifieds topic. This is for personal (or, one might say, first person) intros.
Wed 27 May 2009
Hi D-Makers,
I am very pleased to see such a supportive network available on line. Last night was my first Stranger Than Fiction screening – yet another rewarding organization (hi doug). I look forward to learning and sharing.
my website:
Wed 27 May 2009
I am happy to have joined the community. I look forward to visiting the site daily!
I am a documentary film editor with over 10 years of experience. I enjoy working on social/historical/human rights-related documentaries and am looking for new editing opportunities.
You may check my work at http://web.mac.com/achecler.
A native French-speaker, I also speak Spanish and Portuguese and when I am not putting stories together in the dark, I play drums in a Brazilian percussion ensemble...
Wed 27 May 2009
Hey folks,
Thanks for having me aboard. I'm at rough cut stage with my debut feature doc, "Resurrect Dead". Just joining up to do my legal homework. Wow, after perusing for the last hour I'm wishing I had joined far earlier – could have saved me a lot of headache. I'm still figuring out how to fine-tune word searches around here. Cheers.
Wed 27 May 2009
Welcome, Anne and Jon. Good to have you joining us. Anne, I used to play (badly, but who could hear?) in a Brazilian percussion ensemble a few years ago. Absolutely loved it!
Thu 28 May 2009
Hello everyone,
I'm thrilled to finally be a part of this community! I'm a longtime doc marketer and distributor, a big social media evangelist, an IDA board member, and a dad.
I'm very excited about my new service that's now in beta, that gets indie films on iTunes for a flat fee without needing a traditional distribution deal, without surrendering rights, and without giving up any rev-share (it's at www.Distribber.com). I'm so grateful that people are already offering feedback here. I invite and welcome all thoughts, positive, negative or otherwise!
For the record, I also can spin a basketball on one finger almost indefinitely and juggle a soccer ball with only my head.
Thu 28 May 2009
Welcome, Adam. Glad to have you on board. Adam and I spend far too much time together in various IDA meetings and I can tell you that he's completely genuine when he asks for honest feedback, so I hope folks will jump in. Adam, the party's already started in Marketing and Distribution
Thu 28 May 2009
In reply to Adam Chapnick's post on Thu 28 May 2009 :
Spinning a basketball on my finger has always been a great mystery to me since junior high school. I tried and tried and never could get it. The guys who could were always the coolest cats around. What's the secret? If I fly to LA will you teach me? My life would then be complete.
Thu 28 May 2009
A colleague recently enthused to me how singing up for the D Word had changed her life and I had to join. With that endorsement, how could I not?! I've been researching, writing and directing (and occasionally co-producing) documentaries and non-fiction television since 1994. My partner and I co-own Picture This Productions (www.picturethis.ca) These days we are developing some one off documentary films and limited doc series, while also working on corporate projects and even the occasional fiction piece. I'm coming back slowly to the world of documentary activism and social engagement after five years of trying to balance just getting a basic level of work accomplished while raising two toddlers. It felt- and sometimes still does- like there are never enough hours in the day for it all, but I was finding that I really missed being part of the bigger documentary community. That all said, I am so looking forward to reading through some back posts and connecting up with the amazing people around the world I see listed on this site!
Thu 28 May 2009
Welcome, Maureen. Yes, there are never enough hours in the day, and it's getting worse now that you're adding The D-Word to your daily routines...
Thu 28 May 2009
Just remember your priorities, Maureen, and you'll be okay. D-Word first, kids second...
Thu 28 May 2009
Right. Got that straight. Now if I can just get them to write up funding applications for me, this time thing would all balance out. Oh wait- first they have to learn how to write...
Thanks for the welcome!
Mon 1 Jun 2009
Hi there. I come from a photographic background, and I'm working on my first doc right now. I heard about this forum from a workshop I was taking this past week at SIFT, in Ottawa. I am based in Toronto.


text:
- Member since Dec 10, 2006
- Male / 41
- Cuyahoga Falls , Ohio
- 70 Followers
- 0 Trailforks Points
I own an american car with an air cooled aluminum block flat six. Can you guess what it is?
Aug 17, 2015 at 8:52
Aug 17, 2015Tomac Magnum 204 (L)
$500 USDRetro bombproof muscle-bike goodness. Don't like low, slack, light bikes? This is your baby. Whip it and the frame turns into a wing allowing you to fly over wimpy plastic 27.5 wheeled bikes. Made in the USA, just like M-1 Abrams tanks.
I rode this bike for a year out West, then moved to England and it's been in storage ever since.
It has an original Dorado fork and a Romic rear shock. The Dorado has no scratches on the stanchions and has held it's oil since 2003! Both fork and shock actually still work OK up and down my driveway, but they are pretty old now...I can't really guarantee how much longer they will go.
The frame itself is solid without a doubt, but cosmetically is kind of dull, with typical scratches here and there. I guess I fell a lot in 2003. There is a dent in the swingarm where I hit a rock, but it's pretty minor and didn't compromise strength.
This bike has got some quirky design features too, like a 100 mm bottom bracket. This extra wide Q-factor is good for stability when running over other foreign made disposable "bikes". It also has an extra wide rear hub, which builds a supremely strong rear wheel. Both the hub and bottom bracket are good quality and should go on a good while.
The brakes are the original Hayes units, which also work - at least on my driveway.
Oh, and check out that custom brake therapy floating brake! One of a kind baby! Apparently back in 2003 I tried to make up for my falling with my credit card.
Bottom line is that there are a lot of old parts and I don't know how they'll do if ridden in anger, but the frame will survive the apocalypse and just looks plain awesome.
PRICE DOES NOT INCLUDE SHIPPING. I will get a shipping quote if you are seriously interested and let you know the cost.
pslide JordanCarr's article
Nov 18, 2013 at 7:52
Nov 18, 2013
REEB Cycles All-Mountain - Review
Yes, kind of chuckled then they said 17.3" are "short chainstays". 16.3" is short. Canfield and Kona have got it figured out.
pslide JordanCarr's article
Nov 18, 2013 at 7:51
Nov 18, 2013
REEB Cycles All-Mountain - Review
To summarize, "all mountain" covers just about every bike in between a pure XC race bike and a DH bike!
pslide mattwragg's article
Oct 10, 2013 at 7:14
Oct 10, 2013
Opinion: We Need A Cyclocross...
Agree with the author, cheap thrills, great idea! Maybe add in a muddy steep hill climb to get back to the top - then you've got the fitness component too.
Sep 21, 2013 at 12:15
Sep 21, 2013Banshee Legend MK2 MKII - Large (PRICE DROPPED AGAIN)
$2400 USDWHY HASN'T ANYONE BOUGHT MY BIKE? THE FRAME IS LIKE NEW - YOU ARE GETTING A COMPLETE BUILD KIT (ALBEIT USED) INCLUDING BOXXER WORLD CUP AND I9 WHEELS FOR FREE! Sorry for shouting, just can't believe it :)
I love piecing together my bikes and picking the best of everything, and this bike was exactly what I wanted when I built it up a few years ago right down to the chain ring bolts. Unfortunately, that coincided with my moving from the UK to Ohio, and the result is that this bike is very lightly used and in excellent condition because there is nothing worth riding around here! I've taken one trip to 7 springs in the last 2 years and that resulted in a visit to the hospital, so I've decided reluctantly to sell. Some of the parts were off of my last bike, so there are parts of varying age, but everything is in good working order and ready to race.
- Banshee Legend Frame, raw with custom graphics, excellent condition (very few scratches), titanium hardware
- CCDB rear shock, 5 years old maybe, good working order, 400 lbs spring, RWC bearings at the lower shock mount OR FOX DHX 4.0 (you choose)
- 2010 Boxxer World Cup, works well, some decal damage on lowers (see pic), stanchions perfect, mouse sharpened its teeth on a few areas before I put it on the bike! I had to touch up paint...see pic.
- I-9 wheels w/ green spokes
- Front rim is DT Swiss 6.1D with a few dinks, rear rim is Mavic EX721, also with a couple dinks - see pictures
- Saint cranks and rear derailler, some wear but good working order
- Ultegra 11-28 cassette
- MRP G2 chainguide, has seen some rocks
- Formula The One brakes with 200 mm Hope rotors, recently bled, working well
- Point One stem with 6 mm spacer underneath
- Deity Black Label bar, 780mm wide
- Gussett Slim Jim magnesium pedals, pretty worn
- Bontrager FR4 tires with tubes, handcut to roll better, freeride casing...will throw in some other tires since these probably aren't your first pick. See list below.
I haven't weighed it lately with the Bontrager tires, but I'm sure it's sub 38 lbs.
I will throw in as many of the following tires as you want:
Specialized Chunder
Kenda Excavator, handcut
2x Maxxis wet scream with centers cut
2x 2.35 Muddy Marys, worn
Shipping costs included in the asking price.
pslide mikelevy's article
Apr 16, 2013 at 7:39
Apr 16, 2013
An Exclusive and In-Depth Look at Kona's 2014 Carbon Operator
My comment was made with the utmost sympathies for those who have been impacted by gun violence. Right now this nation is still mourning the loss of those small children, not to mention all the other deaths that occur daily from gun violence. I'd rather my bike be an escape from that, not a reminder.
26,633 views


text:
Near Gettysburg in Adams County, Pennsylvania — The American Northeast (Mid-Atlantic)
Prelude To Gettysburg / Gettysburg Showdown
One of the great debates of our Country's history and legacy is what scholars call "the two Civil Wars": the first a matter of campaigns, generals, and troop movements and the second focusing on the ways that the great conflict affected the daily rhythms of life on farms, and in communities.
Regardless, Gettysburg was the site of the largest battle ever fought on American soil and it involved a great deal more than the resources of one single, famous town.
In six counties near Gettysburg, civilians and militia answered the first call to arms and bravely endured relentless threats and the destruction of their property. Here, women raised funds to support the war and nursed tens of thousands of wounded soldiers left behind from the battles fought in the orchards and fields. Interestingly, part of the battlefield was owned by Freeman, Abraham Brien. Although a number of Gettysburg area Black men joined volunteer militias or USCT regiments during the war, no Black veteran was interred in Soldiers' National Cemetery until 1884. Still, free men and freed men alike enlisted to fight for their own rights, and children sacrificed their security, sometimes their lives. Their combined efforts provided the turning point for the Union cause.
After the battle the Confederate army retreated along different roads through Adams County. The pursuit by Union cavalry sparked several engagements, including a fierce skirmish at Monterey Pass, in the small community of Blue Ridge Summit near the border of Franklin and Adams county.
In a matter of three days, 165,000 troops converged on the small community of Gettysburg. By July 4, as the armies retreated, they left behind 22,000 injured soldiers (out of the 51,000 total human casualties), thousands of dead horses, ravaged fields, undrinkable water and little to no food. Gettysburg, a town of 2,400, found that every farm field was a graveyard and churches, public buildings, and even private homes were hospitals. Well past the date of President Lincoln's famous Gettysburg Address on November 19, 1863, men like Basil Biggs were still assisting moving slain soldiers to proper burials. It would be years before the southern soldiers' families made their way to Gettysburg to take their husbands, sons, and brothers home. This small southern Pennsylvania community would never be the same - for in those three hot days in July 1863, Gettysburg became the "High Water Mark of the Confederacy" and the turning point of the Civil War.
Erected 2008 by Pennsylvania Civil War Trails.
Marker series. This marker is included in the Pennsylvania Civil War Trails marker series.
Location. 39° 48.699′ N, 77° 13.625′ W. Marker is near Gettysburg, Pennsylvania, in Adams County. Marker can be reached from Taneytown Road (State Highway 134), on the right when traveling north. Click for map. Located on a foot trail from the west parking area to the Gettysburg National Military Park Visitor Center. Marker is in this post office area: Gettysburg PA 17325, United States of America.
Other nearby markers. At least 8 other markers are within walking distance of this marker. The George Spangler Farm Civil War Hospital Site (about 400 feet away, measured in a direct line); The Gettysburg Address (about 500 feet away); Battery K, Fifth U.S. Artillery (approx. 0.2 miles away); Battery F, Fourth U.S. Artillery (approx. 0.2 miles away); Artillery Brigade (approx. ¼ mile away); Henry Spangler Farm (approx. 0.3 miles away); 1st West Virginia Cavalry (approx. 0.3 miles away); Headquarters of Brigadier General Henry Hunt (approx. 0.3 miles away). Click for a list of all markers in Gettysburg.
More about this marker. On the Prelude to Gettysburg side, in the upper left is a wartime photo showing Colonel William Averell and Staff, 3rd Pennsylvania Cavalry, 1862. On the right is a photo of Market day on the Public Square in Carlisle, c. 1862. In the center is a portrait of Thomas Morris Chester. Chester recruited Black soldiers for the United States Colored Troops and was a noted Civil War correspondent. On the lower left is a portrait of Elizabeth Salome Stewart with her son Henry Stewart. Mrs. Stewart is better known as Sallie Myers, a civilian nurse in the aftermath of the Battle of Gettysburg. To the lower right is a map of six counties mentioned in the text.
On the Gettysburg Showdown side, a painting titled Battle of Gettysburg: Pickett's Charge is prominently displayed. In the lower left is a photo of Basil Biggs and family. Biggs had seen the farm he rented ruined by the invading Confederate army. Biggs was later one of the Black subcontractors that removed more than three thousand bodies killed during the battle of Gettysburg for reburial in the National Cemetery.
Regarding Prelude To Gettysburg / Gettysburg Showdown. This marker's text and layout is duplicated at several Pennsylvania Civil War Trails locations.
Related markers. Click here for a list of markers that are related to this marker. Markers, tablets, and monuments for the Federal Rear Area.
Also see . . . Gettysburg National Military Park. National Park Service site. (Submitted on September 24, 2008, by Craig Swain of Leesburg, Virginia.)
Categories. • War, US Civil •
Credits. This page originally submitted on , by Craig Swain of Leesburg, Virginia. This page has been viewed 3,047 times since then and 54 times this year. Photos: 1, 2, 3, 4, 5. submitted on , by Craig Swain of Leesburg, Virginia. 6. submitted on , by Henry T. McLin of Hanover, Pennsylvania. This page was last revised on June 16, 2016.


text:
Call. Click. Connect. 800-342-9647
Chat with a triage consultant nowLive Chat
Online Counseling and Coaching
Register for online non-medical counseling and health and wellness coaching.
Don't have a Military OneSource account yet? Check eligibility, and register now.
Confidential services, including non-medical counseling and specialty consultations, are available through Military OneSource. Eligible individuals may receive confidential services at no cost. Check eligibility. International calling options.
Other Resources
There's more to a military family than moving and deployments — take us along through each phase of your military life. And don't worry; we can help with the big stuff, too.
Principles of Healthy Relationships and Marriages
Money matters can be tricky. We can help you make informed decisions on navigating legal and financial questions or point you to the resources that can help.
Planning Makes Saving Simple
We've got your back. Protect yourself, and make health a priority with our support.
Farmers Markets Encourage Healthy Eating
Attention all members of a military family: Take a peek at our cheat sheet for all things career and education-related.
Spouse Education and Career Opportunities
Let us help you make the most of your new assignment from planning each step of your move to confirming that your new commissary does — in fact — stock your favorite kind of cereal. What would a new place be without a little adventure.
Morale, Welfare and Recreation Digital Library
The one constant of military life is that it changes — quickly. Be ready for the next chapter.
TRICARE: The Military's Health Care Program
For the sacrifices they've made, active duty, Guard, and Reserve service members returning from Operation Enduring Freedom (OEF) and Operation New Dawn (OND) (formerly known as Operation Iraqi Freedom (OIF)) deserve the easiest possible transition from active duty to civilian life. To that end, the VA's new, streamlined, easy-to-use outreach program helps ensure that separating combat veterans are fully informed about their VA benefits. For seriously injured service members, VA counselors bring the program directly to hospitals and medical centers to make sure service members have their benefits lined up and accessible the moment they leave active duty.
The VA spreads the word about its services through the Transition Assistance Program (TAP). All transitioning service members are encouraged to take a TAP class to get up-to-date information on VA and other benefits. Your installation TAP office can provide class schedules and more information. Special service member and veteran groups can get information on VA programs through
While veterans with Service-connected disabilities always have access to VA medical services, now all OEF and OND veterans can access medical benefits through the VA for two years after discharge. Medical services can include hospital care, outpatient health care, preventive care, and nursing-home services. Visit the VA website for more details.
Other services available to OEF and OND veterans include
Caregivers of injured service members and veterans need support too. The VA provides these services through VA Caregiver Support. Resources on their website include a caregiver's toolbox, tips and information regarding the challenges of caregiving, a caregivers support line, and information to assist in finding local caregiver support. There are also services specific to caregivers of Post 9/11 Veterans. These services may include a monthly stipend, travel expenses, mental health counseling for the caregiver, respite care, and health insurance. Please visit New Services for Caregivers of 9/11 Veterans for additional details and how to apply. The website has more information regarding available services and eligibility.
Many VA benefits and services are extended to both service members and veterans regardless of disability status, including
For service members with disabilities, the VA offers additional programs, including
Find programs and services at your local installation.
Service members, family members, surviving family members, service providers and leaders rely on Military OneSource for policy, procedures, timely articles, cutting-edge social media tools and support. All in one place, empowering our military community.
Release 2017.03.10.1.18.104.22.168.10
You are about to leave the publicMilitary OneSource website. Thank you for visiting!
You are leaving the Military OneSource website to preview our beta site. Thank you! Please let us know what you think.


text:
Hi, please can someone help me!
My code won't compile and the error thrown is NullPointerException.
The two lines of code it says are null are:
public SwingSudokuBoard(int[][] board) {
this(board.length); <-----THIS ONE
for (int row = 0; row < size; row++) {
for (int col = 0; col < size; col++) {
setCell(board[row][col], row, col);
public SwingSudokuBoard(int size) {
cells = new TextField[size][size];
panel.setLayout(new GridLayout(size, size));
for (int row = 0; row < size; row++) {
for (int col = 0; col < size; col++) {
panel.add(cells[row][col]); <-----THIS ONE
How do I make them not Null? Or please can anyone explain to me why they are being thrown as errors?
I initialised panel here: private JPanel panel = new JPanel(); at the beginning of the class SwingSudokuBoard (which extends SudokuBoard)
and I initialised board here:
public SudokuBoard(int[][] board) {
this.board = board;
} in SudokuBoard class
I initialised cells in the same method as above: cells = new TextField[size][size];
Does length need to be initialised? Is this where I am going wrong?
Thank you


text:
By: |
Foghladha |
Posted On: 04/01/2012 at 09:17 PM |
Hey Everyone, Last year we placed 11th worldwide over Activision and Wizards of the Coast. This year I've set the goal high, so high that it would place us in the top 10 worldwide. Lets get this party started and show the world just what us gamers are made of! Register for 2012 Extra Life Event
» Edited on: 2012-06-19 17:35:29
"It's not the loot and accolades you walk away with,
it's the memories and friendships that you cherish forever."
- Foghladha
Subscribe on: Twitch.tv | YouTube Gaming | Twitter
Join the Adventure On: Gaiscioch.com | Facebook | Discord
Quicklink: |